这是我的
/etc/ansible/inventory
[applications]
SVC1 ansible_host=10.252.20.208
SVC2 ansible_host=10.252.20.209
是否有任何 ansible 模块可以删除或注释清单文件中的主机 SVC1?
预计
/etc/ansible/inventory
[applications]
# SVC1 ansible_host=10.252.20.208
SVC2 ansible_host=10.252.20.209
上下文:我有一个在SVC1主机中运行的应用程序,每当卸载它时(使用我的ansible脚本),我想从清单文件中删除/注释与该应用程序相关的条目。
我尝试过但没有成功:
---
- name: update inventory
hosts: all
run_once: true
tasks:
- name: Remove the peer configuration for 10.128.0.11/32
community.general.ini_file:
path: /etc/ansible/inventory
section: applications
option: SVC1
state: absent
delegate_to: localhost
run_once: true
没有用于编辑库存文件的特定模块。
在大多数情况下,您不应该通过 Ansible 本身编辑静态清单文件。总体思路是让您的机器进入库存定义的状态。虽然在某些用例中您的方法仍然有效,但很容易出现一个简单的问题 - 如果您从所有主机上卸载该应用程序,您的剧本将无法再运行。
与向后兼容模式类似,您的任务可以通过相反的方式解决 - 不要删除应卸载应用程序的主机,而是考虑将它们添加到单独的组中:
[applications]
SVC2 ansible_host=10.252.20.209
[applications_uninstall]
SVC1 ansible_host=10.252.20.208
这样您就可以根据需要以幂等方式运行安装和卸载工作流程多次。要完全停用您的应用程序,只需将所有主机从
application
组移至 application_uninstall
,运行 playbook,就这样。
剩下的用例实际上要复杂得多(例如实现 GitOps 和/或将动态变化的系统的状态与存储库同步),并且 INI 格式看起来不适合它们。