Найти каталог с нескольких хостов используя Jinja2 - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь выполнить файл yml, чтобы найти доступный путь, который соответствует моему шаблону на разных хостах (2 хоста в группе) в моем файле инвентаризации, но вывод поступает только с одного сервера за раз, то есть, если я запускаю команда ansible -playbook выдает мне выходные данные с первого хоста, и если я снова запускаю ansible -playbook, немедленно выводится только информация о втором хосте. Если я не использую опцию Delegate_to: localhost , файл создается на каждом сервере индивидуально вместе с найденным путем, который является абсолютно правильным.

- name: files
  hosts: all
  tasks:
    - name: find the files
      find:
        paths: /home/osboxes
        patterns: "*.yaml"
        recurse: yes
      register: results
    - name: output the files
      template:
        src: files.j2
        dest: /home/osboxes/output.txt
        owner: osboxes
        group: osboxes
        mode: 0644
      delegate_to: localhost

Если я запускаю в первый раз первый хост в выводе товарных запасов отображает. Если я запускаю его во второй раз, он перезаписывает выходные данные вторым сервером, но они не добавляются. Я попытался выполнить обновление с помощью модуля lineinfile, но он также не работает.

Если я изменяю шаблон jinja2 и что-то подобное происходит, брат

[osboxes@ansiblecontroller project1]$ cat output.txt                              
Hostnameosboxes1
 /home/osboxes/a.yaml
/home/osboxes/b/acd.yaml
/home/osboxes/sample/test/and.yaml

  Hostnameosboxes2
 /home/osboxes/a.yaml
/home/osboxes/b/acd.yaml
/home/osboxes/sample/test/and.yaml

Hostnameosboxes1 и Hostnameosboxes2 содержит ту же директорию с сервера hostnameosboxes1.

Во второй раз это происходит

[osboxes@ansiblecontroller project1]$ cat output.txt                            
 Hostnameosboxes1
 /home/osboxes/testing/ansible/hello.yaml
/home/osboxes/testing/simple/hello1.yaml

  Hostname1osboxes2
 /home/osboxes/testing/ansible/hello.yaml
/home/osboxes/testing/simple/hello1.yaml

Hostnameosboxes1 и Hostnameosboxes2 содержит один и тот же каталог с сервера hostnameosboxes2.

Мой Jinjatemplate выглядит следующим образом

{{ansible_host}}
{% for file in results['files'] %}
{{ file['path'] }}
{% endfor %}

...