我只想根据某些条件(例如,网络属性的更改)来更新清单文件/etc/ansible/hosts
中的一项。从清单文件的这个片段中,我想更新[south_side_hosts]
下的条目。有没有办法更新该文件?我可以编写一个python脚本来解析和更新文件,但希望找到一个解决方案。
[south_side_hosts]
sshost.eng.corp.com
[south_side_ips]
192.168.100.2
[num_hosts]
83
答案 0 :(得分:2)
清单文件的格式为INI,如in the documentation所述。
因此ini_file
module可以正常工作。使用std
和两项任务来删除旧的“ option”并添加新的“ option”:
allow_no_value: true
如果要从同一剧本配置新主机,则此后需要刷新清单:
- name: Remove host from 'south_side_hosts' group
ini_file:
path: /etc/ansible/hosts
section: south_side_hosts
option: sshost.eng.corp.com
state: absent
- name: Add host to 'south_side_hosts' group
ini_file:
path: /etc/ansible/hosts
section: south_side_hosts
option: sshost2.eng.corp.com
allow_no_value: true
请注意,如果您打算使用在命令行上传递的随机主机名来执行此操作,那么从长远来看,动态清单确实是您想要的。