我正在更换我们的 DNS 服务器。作为其中的一部分,我们静态配置的服务器接口的 DNS 条目需要更新。但是,我遇到了障碍。接口当前定义了 2 个条目,我想用 3 个条目替换它们。
该剧本使用replace
. 它将替换 DNS1 和 DNS2,但不能添加 DNS3。lineinfile
有类似的问题。
---
- hosts: canary
vars:
nameservers: [ '', 192.0.2.1, 192.0.2.2, 192.0.2.3 ]
tasks:
- name: nameservers
replace:
path: /etc/sysconfig/network-scripts/ifcfg-{{ansible_default_ipv4.interface}}
replace: \1="{{ item.1 }}"
regexp: (DNS{{ item.0 }}).+
with_indexed_items:
- "{{ nameservers }}"
when: ansible_distribution == "CentOS" and "nameservers" not in group_names
tags:
- debug
有什么问题
lineinfile
?如果行正则表达式存在,行将被替换;否则将添加新行。
如果文件中存在此代码,则该代码将替换
DNS<N>
为相应的值srv_list
,或者如果文件中未定义具有此类索引的 DNS,则添加新行。