使用ansible更新/ etc / ansible / hosts

时间:2019-04-29 17:27:24

标签: ansible ansible-inventory

我只想根据某些条件(例如,网络属性的更改)来更新清单文件/etc/ansible/hosts中的一项。从清单文件的这个片段中,我想更新[south_side_hosts]下的条目。有没有办法更新该文件?我可以编写一个python脚本来解析和更新文件,但希望找到一个解决方案。

[south_side_hosts]
sshost.eng.corp.com

[south_side_ips]
192.168.100.2

[num_hosts]
83

1 个答案:

答案 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

请注意,如果您打算使用在命令行上传递的随机主机名来执行此操作,那么从长远来看,动态清单确实是您想要的。