Qual é o problema com lineinfile
?
Se a linha regexp estiver lá, a linha será substituída; caso contrário, uma nova linha será adicionada.
---
- hosts: localhost
gather_facts: no
vars:
srv_list: [192.168.0.1, 192.168.0.2, 192.168.0.3]
tasks:
- lineinfile:
dest: /tmp/dns_test
regexp: ^DNS{{ item.0+1 }}
line: DNS{{ item.0+1 }}={{ item.1 }}
with_indexed_items: "{{ srv_list }}"
Este código substituirá DNS<N>
pelo valor correspondente de srv_list
se estiver presente no arquivo ou adicionará nova linha se o DNS com tal índice não estiver definido no arquivo.