问题:Ansible 2.9 将重复替换模块的“替换:”字段中的条目。
要更改的文件(/etc/netplan/50-cloud-init.yaml):
network:
ethernets:
ens160:
addresses:
- 10.10.8.112/24
gateway4: 10.10.8.1
nameservers:
addresses:
- 10.10.8.15
version: 2
代码:
- name: Check yaml has correct DNS values
hosts: guest
gather_facts: yes
become: yes
tasks:
- name: Adjust yaml file
replace:
path: /etc/netplan/50-cloud-init.yaml
after: ' addresses:'
before: ' version: 2'
regexp: '^(.+)$'
replace: ' - 10.10.8.110\n - 10.10.8.111\n search:\n - server.com\n optional: true'
结果:
- 如果原始文件只有一个条目说“- 10.10.8.110”,则将替换“之后”和“之前”之间的部分。但是,如果再次运行,expansible 将复制条目。
再次运行脚本后文件内容将如下所示:
network:
ethernets:
ens160:
addresses:
- 10.10.8.112/24
gateway4: 10.10.8.1
nameservers:
addresses:
- 10.10.8.110
- 10.10.8.111
search:
- server.com
optional: true
- 10.10.8.110
- 10.10.8.111
search:
- server.com
optional: true
version: 2
相信这与幂等性有关,并且可以用正则表达式修复。但是我不确定如何做到这一点。我想做的就是始终替换之前和之后的所有值。
我怎样才能做到这一点?