Проблема шаблона Ansible Jinja2 с выводом регистра с использованием цикла fo

Скорее всего нехватка энтропии. В комментариях вы подтвердили, что некоторые действия на коробке заставляют sshdстартовать быстрее -, что происходит потому, что ваши действия вносят свой вклад в источники энтропии.

Установите (и убедитесь, что он запускается)haveged(или, в старых дистрибутивах,rngd).

0
03.05.2020, 17:21
2 ответа

Используйте ansible _play _batch«Список активных хостов в текущем запуске воспроизведения, ограниченный серийным номером, также известный как «пакет». Неудачные/недоступные хосты не считаются «активными». "

{% for network_switch in ansible_play_batch %}
...

Если пакетов больше, файл будет перезаписан. См. Стратегии управления выполнением плейбука :и многое другое . См. Переменная даты Ansible , как использовать дату и создавать уникальные имена файлов. Например

dest: "{{ file_path ~ '-' ~
          ansible_date_time.date ~ '-' ~
          ansible_date_time.hour ~ '-' ~
          ansible_date_time.minute ~ '-' ~
          ansible_date_time.second }}"

Создать один файл

Следующим вариантом было бы создать список со всеми элементами в первом воспроизведении и записать файл во втором воспроизведении (изменить шаблон и использовать мой _список). Например

- hosts: all
  tasks:
    - name: Getting the OS Information
     ...
    - name: Collect the list
      set_fact:
        my_list: "{{ my_list|default([]) +
                     [hostvars[item]['ansible_hostname'],
                      hostvars[item]['kernel.stdout'],
                      hostvars[item]['httpd.stdout']] }}"
       loop: "{{ ansible_play_batch }}"
       run_once: true

- hosts: all
  tasks:
    - name: Take a look at what was collected
      debug:
        var: my_list
      run_once: true
    - name: create HTML report
      template:
        src: report.j2
        dest: "{{ file_path }}"
      delegate_to: localhost
      run_once: true

(не тестировалось)

0
28.04.2021, 23:16

Сборник игр:


  • имя :построить отчет об инвентаризации Centos хосты :клиент

    варс :файл _путь :/var/www/html/generated _report.html

    задачи:

    -имя :Получение информации об ОС

    команда :'cat /etc/redhat -выпуск'

    регистр :ОС _релиз

    • имя :Получение информации об ОС команда :'имя -r' регистр :ядро ​​

    • имя :Получение информации об ОС оболочка :"статус systemctl sshd | grep -я активен | awk '{print $3}'" регистр :httpd

    • имя :Собрать список набор _факт :мой список _:"{{ мой список _| по умолчанию([] )+ [hostvars[item]['ansible _имя хоста'], hostvars[item]['kernel.stdout'], hostvars[item]['httpd.stdout']] }}" loop :"{{ ansible _play _batch }}" выполнить _один раз :верно

  • имя :Сбор всей информации хосты :клиент вары :файл _путь :/var/www/html/generated _report.html задачи:

    • имя :Взгляните на то, что было собрано отладка :var :мой _список выполнить _один раз :верно

    • имя :создать отчет HTML шаблон :источник :отчет.j2 dest :"{{ файл _путь }}" делегировать _на :локальный хост выполнить _один раз :верно

Шаблон Джиндзя:

{% для сети _переключатель в доступном _воспроизведении _пакет %} {{ hostvars[сеть _переключатель]['доступное _имя хоста'] }} {{ hostvars[сеть _переключатель]['kernel.stdout'] }} {{ hostvars[сеть _переключатель]['httpd.stdout'] }} {% endfor%}

0
28.04.2021, 23:16

Теги

Похожие вопросы