如何从清单文件中删除主机?

问题描述 投票:0回答:1

这是我的

/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
1个回答
1
投票

没有用于编辑库存文件的特定模块。

在大多数情况下,您不应该通过 Ansible 本身编辑静态清单文件。总体思路是让您的机器进入库存定义的状态。虽然在某些用例中您的方法仍然有效,但很容易出现一个简单的问题 - 如果您从所有主机上卸载该应用程序,您的剧本将无法再运行。

与向后兼容模式类似,您的任务可以通过相反的方式解决 - 不要删除应卸载应用程序的主机,而是考虑将它们添加到单独的组中:

[applications]
SVC2 ansible_host=10.252.20.209

[applications_uninstall]
SVC1 ansible_host=10.252.20.208

这样您就可以根据需要以幂等方式运行安装和卸载工作流程多次。要完全停用您的应用程序,只需将所有主机从

application
组移至
application_uninstall
,运行 playbook,就这样。

剩下的用例实际上要复杂得多(例如实现 GitOps 和/或将动态变化的系统的状态与存储库同步),并且 INI 格式看起来不适合它们。

© www.soinside.com 2019 - 2024. All rights reserved.