У меня есть простой файл в /etc/foo.txt. Файл содержит следующее:Ansible lineinfile дублирует строку
#bar
У меня есть следующий анзибль PlayBook задача раскомментировать строку выше:
- name: test lineinfile
lineinfile: backup=yes state=present dest=/etc/foo.txt
regexp='^#bar'
line='bar'
Когда я впервые запустить анзибль-пьесы, линия получает незакомментированную и/и т.д./foo.txt теперь содержит следующее:
bar
Однако, если я снова запустить анзибль-пьес, я получаю следующее:
bar
bar
Если я запустить его еще раз, то файл /etc/foo.txt будет выглядеть следующим образом:
bar
bar
bar
Как избежать этого дублирования строк? Я просто хочу раскомментировать «#bar» и покончить с этим.
Но это всегда изменяет файл. Мое понимание заключалось в том, что строка только вставлена (изменена в файл), когда соответствие регулярного выражения. – jdevora
До тех пор, пока файл выходит одинаково каждый раз, задача является идемпотентной. Это все, что имеет значение. – joemaller
Я обнаружил, что, если вы используете 'insertafter' в сочетании с этим, вы снова получите повторяющиеся строки. 'insertafter' нарушает эту формулу. –