如何通过自定义名称/IP外部主机列表执行Ansible playbook
Ansible 外部独立主机清单配置及顺序执行操作指南
1 准备外部主机清单文件
1.1 TXT格式清单
新建文本文件(例如custom_hosts.txt),直接按你需要的执行顺序逐行填写主机地址/别名即可,示例内容:
192.168.1.10 web01.example.com 192.168.1.12 db01.example.com
1.2 YML格式清单
新建YAML文件(例如custom_hosts.yml),按期望的执行顺序填写主机,示例内容:
all: hosts: 192.168.1.10: web01.example.com: 192.168.1.12: db01.example.com:
2 调用外部清单执行playbook
运行playbook时通过-i参数指定你编写的外部清单文件即可,不需要修改默认inventory配置:
# 调用TXT清单 ansible-playbook -i custom_hosts.txt your_playbook.yml # 调用YML清单 ansible-playbook -i custom_hosts.yml your_playbook.yml
3 强制按清单定义顺序执行
默认Ansible会按字母序排序主机,要严格按照你写的清单顺序执行,做如下配置即可:
3.1 单playbook生效配置
在对应play的头部添加order: inventory参数即可,示例:
--- - name: 自定义顺序执行任务 hosts: all order: inventory # 核心配置,指定按清单定义顺序执行 gather_facts: true tasks: # 此处为你原有playbook的任务列表
3.2 全局生效配置
如果需要所有playbook都默认按清单顺序执行,修改ansible.cfg文件,在[defaults]段落添加如下配置:
[defaults] inventory_order = inventory
4 额外注意事项
- 如果需要严格逐台执行、完全避免并行执行打乱顺序,可以在执行命令中添加
-f 1参数,限制并发数为1:ansible-playbook -i custom_hosts.txt your_playbook.yml -f 1 - 清单文件中不要配置随机排序相关参数,避免覆盖预设顺序
内容的提问来源于stack exchange,提问作者Cristian Andres Gil Vlla
相关产品推荐
相关产品推荐

