Есть ли лучший способ перебирать несколько файлов на компьютере-узле с помощью Ansible playbook и искать и заменять определенную строку.
У меня есть следующие файлы в моем каталоге, и он должен перебирать эти файлыи проверьте и замените определенную строку в файле.
/opt/a1.conf
/opt/a2.con.f
/var/app1/conf/a3.conf
/etc/a5.conf
/etc/a6.conf
/etc/a7.conf
/etc/a8.conf
/etc/a9.conf
Моя Ansible Playbook может быть отформатирована следующим образом:
-
name: Install nginx and other binaries using with_item and variables.
gather_facts: yes
hosts: aws1
become_method: sudo
become: yes
tasks:
- name: Modify line to include Timeout
become: yes
become_method: sudo
lineinfile:
path: {{ item }}
regexp: 'http\s+Timeout\s+\='
line: 'http Timeout = 10'
backup: yes
with-items
- /opt/a1.conf
- /opt/a2.con.f
- /var/app1/conf/a3.conf
- /etc/a5.conf
- /etc/a6.conf
- /etc/a7.conf
- /etc/a8.conf
- /etc/a9.conf
Это на самом деле сработает и поможет мне.Я также мог бы создать файл vars.yaml, добавить все эти файлы и использовать их в синтаксисе with_items.Однако это на самом деле приводит к тому, что книга воспроизведения выглядит слишком длинной, так как количество файлов для поиска больше
Возможно, мы сможем добиться того же самого эффективно, используя шаблон jinja2, используя цикл for.Пример: {% для элемента в vars.yml%}
, и это скорее будет эффективный способ сделать это, и я не стану делать мою Ansible playbook неуклюжей, но я не могу понять точную команду для ее зацикливания.
Существует ли команда jinja для достижения того же или лучшего способа перебирать несколько файлов, а не записывать каждый из них в список воспроизведения.
Спасибо