Linux Ansible将文本追加到INI文件特定部分的行中
我想知道是否有一种方法可以使用Ansible将文本附加到文件某个部分的行尾,下面的示例将说明我想做什么: 想象这样一个文件:Linux Ansible将文本追加到INI文件特定部分的行中,linux,ansible,Linux,Ansible,我想知道是否有一种方法可以使用Ansible将文本附加到文件某个部分的行尾,下面的示例将说明我想做什么: 想象这样一个文件: [section01] path = /home/section01 read only = yes list = yes uid = apache gid = apache hosts deny = 0.0.0.0/0.0.0.0 hosts allow = mexico,usa,canada [section02] path = /home/section02 re
[section01]
path = /home/section01
read only = yes
list = yes
uid = apache
gid = apache
hosts deny = 0.0.0.0/0.0.0.0
hosts allow = mexico,usa,canada
[section02]
path = /home/section02
read only = yes
list = yes
uid = apache
gid = apache
hosts deny = 0.0.0.0/0.0.0.0
hosts allow = mexico,usa,canada
[section03]
path = /home/section03
read only = yes
list = yes
uid = apache
gid = apache
hosts deny = 0.0.0.0/0.0.0.0
hosts allow = mexico,usa,canada
我想在[section02]中的host_allow上添加“巴西”以获取此“新文件”
正如@Dan Farrell在评论中提到的,您最好生成整个文件,因为部分更新可能不可靠且有问题 但是,您也可以使用来完成此任务 您可以创建一个模板文件(例如
file.ini
),其中包含以下内容(为了简洁起见,删除了其他块)。此文件将包含完整的INI文件内容
[section02]
path = /home/section02
read only = yes
list = yes
uid = apache
gid = apache
hosts deny = 0.0.0.0/0.0.0.0
hosts allow = {{allow_hosts}}
然后,在playbook中,将任务添加到此文件的模板
- name: Template INI file
template:
dest: "/path/to/some/file.ini"
src: file.ini
mode: 664
owner: root
group: root
实例化playbook时,可以通过extra-vars
传递允许的主机的完整列表
ansible playbook-i hosts--extra vars=“allow_hosts=墨西哥、美国、加拿大、巴西”我的playbook.yml
但是,只有在运行playbook时知道所有允许的主机时,这才适用于您。我通常告诉我的队友使用ansible生成“整个文件”,因为我找到了更新文件正确部分的解决方案,当暴露在意外的文件内容中时,往往不可靠。一些系统允许您在多个文件中分解配置,从而简化了这一过程。
- name: Template INI file
template:
dest: "/path/to/some/file.ini"
src: file.ini
mode: 664
owner: root
group: root