Можно ли перебирать несколько файлов на узле машины, используя Ansible playbook, и искать и заменять определенную строку? - PullRequest
0 голосов
/ 07 декабря 2018

Существует ли модуль / способ перебора нескольких файлов?

Вариант использования:

Есть несколько .conf файлов

/opt/a1.conf

/opt/a2.conf

/var/app1/conf/a3.conf

/etc/a4.conf

Есть ли модульили способ перебора нескольких файлов и поиска, если в этих файлах существует определенная строка.Строка останется прежней.

Модуль "lineinfile" поможет вам найти один файл, но я хотел бы знать, есть ли способ перебрать несколько файлов, найти эту строку и заменить ее наразличные значения

Моя текущая книга воспроизведения Содержимое одного файла:

    - name: Modify line to include Timeout
      become: yes
      become_method: sudo
        lineinfile:
        path: /tmp/httpd.conf
        regexp: 'http\s+Timeout\s+\='
        line: 'http Timeout = 10'
        backup: yes

Вышеуказанное можно использовать только для одного файла.

В качестве альтернативы, мы можем использовать какую-то команду оболочки, чтобы сделать это, но есть ли Ansible способ добиться этого?

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Вы используете директиву with_items для трансляции файла, или вы можете использовать Jinja-скрипты, ищите строку, как показано ниже:

files: 
  - /opt/a1.conf
  - /opt/a2.conf
  - /var/app1/conf/a3.conf
  - /etc/a4.conf

{% for item in files %} {{item.find('string')}} {% endfor %}

0 голосов
/ 07 декабря 2018

Вы пытались выполнить итерацию по параметру loop?

- 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
  loop:
    - /opt/a1.conf
    - /opt/a2.conf
    - /var/app1/conf/a3.conf
    - /etc/a4.conf
...