Мы предполагаем, что вы не знаете, что такое previousimage
, что у вас может быть несколько предыдущих изображений, и вы хотите добавить mycustomimage
, и вы хотите, чтобы playbook был идемпотентным:
---
- hosts: all
connection: ssh
become: no
gather_facts: no
vars:
image_name: mycustomimage
tasks:
- lineinfile:
path: testfile.txt
regexp: '^images=(.*(?<!{{ image_name }}))'
line: '\1,{{ image_name }}'
backrefs: yes
Итак, давайте объясним регулярное выражение: ^images=
вы можете выяснить сами!
Первая скобка начинает блок backref, и он собирает все до конца строки: .*
Затем он оглядывается на то, что он только что втянул, и проверяет, что {{ image_name }}
не находится в конце: (?<!{{ image_name }})
Наконец, мы закрываем блок обратной ссылки с помощью )
.