Linux 中怎么使用 Ansible 动态清单管理云主机

秋墨同学_1192

秋墨同学_1192

2026-10-24

855人浏览

原创

动态清单是ansible通过脚本或插件实时调用云平台api获取主机信息的方式,适用于aws、阿里云、kubernetes等ip和状态频繁变化的环境,避免静态清单手动维护过期问题。

linux 中怎么使用 ansible 动态清单管理云主机

动态清单(Dynamic Inventory)是 Ansible 从外部系统实时拉取主机信息的方式,特别适合云环境——比如 AWS、OpenStack、Kubernetes 或阿里云等——因为这些平台的主机 IP、状态、标签经常变化,静态写死的 /etc/ansible/hosts 很难维护。

为什么用动态清单而不是静态清单?

静态清单需要手动增删 IP 或主机名,云主机启停频繁时极易过期;而动态清单通过脚本或插件自动查询云 API,每次运行 ansible 命令前都生成最新主机列表。它不存文件,而是执行时调用——比如运行 ansible webservers -m ping,Ansible 会先调用 aws_ec2.py 获取当前所有带 tag env=prod 且状态为 running 的 EC2 实例,再对它们执行 ping。

主流云平台的动态清单实现方式

Ansible 官方和社区提供了多种动态清单脚本或插件,常见用法如下:

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • AWS EC2:使用 aws_ec2 插件(推荐,Ansible 2.8+ 内置),配置 YAML 文件(如 inventory/aws_ec2.yml),指定区域、过滤条件(如 key_name: my-key、instance_state: running)、分组逻辑(按 tag 自动建组)
  • 阿里云(Alibaba Cloud):使用 alibabacloud_ecs 插件(需安装 alibabacloud-ecs-inventory Python 包),配合 ~/.aliyun/config.json 中的 AccessKey 配置,支持按实例名称、VPC、安全组等维度筛选
  • Kubernetes:用 k8s 或 openshift 插件,直接读取集群中 Node 对象或 Pod 标签,适合将容器节点纳入统一运维
  • Zabbix / CMDB:自定义脚本(Python/Shell),调用 Zabbix API 获取 host list 并输出 JSON 格式,Ansible 可识别并加载为 inventory

快速上手一个 AWS 动态清单示例

以 AWS 为例,无需写脚本,直接用内置插件:

  • 创建配置文件 inventory/aws_ec2.yml:
plugin: aws_ec2
regions:
  - cn-northwest-1
filters:
  tag:Environment: production
  instance-state-name: running
keyed_groups:
  - key: tags.Name
    prefix: tag_Name_
  - key: placement.region
    prefix: region_
  • 确保已配置 AWS 凭据(推荐用 ~/.aws/credentials 或环境变量 AWS_ACCESS_KEY_ID)
  • 测试加载结果:ansible-inventory -i inventory/aws_ec2.yml --list
  • 直接执行任务:ansible tag_Name_web -i inventory/aws_ec2.yml -m ping

注意事项与最佳实践

动态清单不是“设好就不管”,实际使用中要注意几点:

  • 插件依赖需提前安装,例如 pip install boto3 botocore(AWS)、pip install alibabacloud-ecs-inventory(阿里云)
  • 权限最小化:云账号仅授予读取主机列表所需权限(如 AWS 的 ec2:DescribeInstances),避免密钥泄露风险
  • 缓存可选但建议开启:在配置中加 cache: true 和 cache_plugin: jsonfile,避免每次执行都调 API,提升响应速度
  • 调试技巧:用 ansible-inventory -i xxx.yml --graph 查看分组结构,用 --debug 参数观察插件调用过程

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
轻量应用服务器和云服务器的区别
轻量应用服务器和云服务器的区别

随着科技的快速发展,越来越多的企业和个人开始依赖于服务器来托管其应用程序和网站。然而,在选择服务器时,很多人对轻量应用服务器和云服务器之间的差异不够了解。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.27

522

3

注册云服务器的作用
注册云服务器的作用

注册云服务器的作用:1、可放置公司网站、电子商务平台、APP和其他应用程序等;2、使用云服务器来存储和共享数据,不仅高度安全,而且可以随时随地在线访问;3、当内存不够时,站长可自行增加,使资源充沛,保障了页面加载速度和优质的用户体验。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.13

3324

9

云服务器的全部用途
云服务器的全部用途

云服务器的用途广泛,包括网站托管、应用程序部署、数据存储和备份、虚拟化和容器化、大数据处理、游戏服务器以及开发测试环境等。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

13019

12

云服务器价格性价比高的服务商介绍
云服务器价格性价比高的服务商介绍

性价比较高的云服务器服务商,包括阿里云、腾讯云、亚马逊AWS和华为云。这些服务商提供丰富的产品线、亲民的价格、完善的生态体系和技术支持。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

3407

9

云服务器的使用教程
云服务器的使用教程

使用云服务器需要遵循以下步骤:选择可靠的云服务提供商,注册账号并购买所需实例,配置安全组和网络,连接到服务器,配置服务器环境,定期管理和监控服务器,优化性能和成本。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

5557

10

云服务器作用介绍
云服务器作用介绍

云服务器作为云计算的关键组成部分,广泛应用于弹性计算、数据存储处理、应用程序部署托管、灾备容灾、开发测试环境、虚拟化容器化等领域。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

1605

12

云服务器是什么
云服务器是什么

云服务器是一种在云计算环境中提供的虚拟服务器,它具有弹性、可扩展性和按需付费等特点。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.06.21

10536

7

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

20

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习