Попытка использовать ansible замена модуля для обновления нескольких строк в файле и сохранения идемпотентности - PullRequest
0 голосов
/ 21 марта 2020

Код, который у меня не работает:

---
- hosts: '{{ target }}'
  tasks:
    - name: Search for strings in file.
      replace:
        path: /home/jay/tasks.conf
        regexp: '(^\s*$)# End of file'
        replace: |-

          make_bed
          brush_teeth
          # End of file

Единственная известная мне константа состоит в том, что в нижней части текущего файла находится пустая строка, за которой следует «# Конец файла»

Я пытаюсь заменить этот блок так, чтобы он выглядел следующим образом:

<blank line>
make_bed
brush_teeth
# End of file

Он становится идемпотентным, потому что, как только он будет установлен, он не будет совпадать с пустой строкой, за которой следует "# Конец файла", если Я снова запускаю скрипт.

Я не уверен, что мое регулярное выражение ошибочно или я делаю что-то еще неправильно.

1 Ответ

0 голосов
/ 21 марта 2020

Решение найдено. Пожалуйста, закройте вопрос.

Необходимо следующее:

regexp: '(^\s*$)\n^(# End of file)'
...