我写了一部剧本,它将在IP地址列表中添加新的IP地址。这是代码
- name: adding IP to faile2ban
lineinfile:
path: /home/ec2-user/test.conf
line: "{{ new_server_ip }}"
insertafter: "^#?ip_list"
https://github.com/shettypriy/ansible/blob/master/addingIPto%20the%20end。IP被添加到文件中,但是在最后添加的IP末尾没有被添加
我有一个文件test.conf,其中添加了IP地址。我要在最后更新的IP之后添加新IP 示例:以下是文件test.conf的示例内容
ip_list = xx.xx.xx.xx yy.yy.yy.zz aa.aa.aa.aa
我想要的输出应该是在aa.aa.aa.aa之后添加的'new_server_ip'
答案 0 :(得分:1)
我想以下应该适合您:
- name: adding IP to faile2ban
lineinfile:
dest: /home/ec2-user/test.conf
state: present
regexp: "^(#?ip_list(.*)$)"
backrefs: yes
line: '\1 {{ new_server_ip }}'
因此,关键是要找到以'ip_list'开头的行,通过正则表达式选择整行,然后在new_server_ip前面的行中对选定的行进行反向引用。
答案 1 :(得分:1)
下面的任务完成了任务,它是idempotent
“模块应该是幂等的,也就是说,在一个序列中多次运行一个模块应该与只运行一次具有相同的效果。”
- lineinfile:
dest: /home/ec2-user/test.conf
regexp: '(?!.*{{ new_server_ip }}.*)^(ip_list.*)$'
line: '\1 {{ new_server_ip }}'
backrefs: yes
regexp 首先look ahead和 仅当不存在 new_server_ip 时,才匹配该行。