两个服务器的同一目录中存在相同的文件。我想分别修改此文件中的某个值,但是内容不同,如何修改
服务器1:
# /opt/center/conf/properties
kafka=test
服务器2:
# /opt/center/conf/properties
kafka=test
现在,我想将它们更改为增量值(node-all
的数量)并将其修改为以下值(如果我的node-all
有2个)
↓↓↓↓↓↓↓↓
服务器1:
# /opt/center/conf/properties
kafka=node1
服务器2:
# /opt/center/conf/properties
kafka=node2
我尝试了这种方法,但是他修改的两个文件具有相同的内容,这不是我想要的。
- name: modify properties
replace:
path=/opt/center/conf/properties
regexp="^(kafka=+)[^\n]+$"
replace="kafka=node{{index+1}}"
loop: "{{groups['node-all']}}"
run_once: true
loop_control:
index_var: index
结果:
服务器1:
# /opt/center/conf/properties
kafka=node2
服务器2:
# /opt/center/conf/properties
kafka=node2
答案 0 :(得分:1)
您可以使用hostvars变量,从而避免算术运算。
[node-all]
node1 ansible_ssh_host=10.10.10.72 kafkaname="node01"
node2 ansible_ssh_host=10.10.10.73 kafkaname="node02"
- name: modify properties
replace:
path=/opt/center/conf/properties
regexp="^(kafka=+)[^\n]+$"
replace="kafka={{ hostvars[inventory_hostname].kafkaname }}"
- name: modify properties
replace:
path=/opt/center/conf/properties
regexp="^(kafka=+)[^\n]+$"
replace="kafka=node{{ groups['all'].index(inventory_hostname) }}"