Ansible Tower - Модуль lineinfile - Проблема: недостающие строки - PullRequest
0 голосов
/ 04 октября 2019

Я использую ansible tower и настроен на запуск forks = 250.

Мои задачи просты, он записывает в файл данные, извлеченные из хостов, таких как 4000 хостов.

пример:

      - name: creating report
        lineinfile: dest="reports/{{ report_name }}.csv" line="{{ inventory_hostname }},{{ item }}" 
        insertafter=EOF create=yes
        with_items: "{{ report_result.stdout_lines | trim }}"

Это хорошо работает, но в последнее время я заметил, что строки отсутствуют, как 400 хостов. В этих хостах нет ничего плохого, поэтому единственное преимущество, которое я имею, состоит в том, что модуль lineinfile имеет свои ограничения при записи такого количества строк в файле.

Мне интересно, есть ли у кого-нибудь здесь этопроблема раньше и любые альтернативы. спасибо!

Ответы [ 2 ]

0 голосов
/ 07 октября 2019

Я использую ядро ​​Ansible и заметил похожую проблему. Выполнение чего-то вроде следующего даже на небольшом количестве хостов (менее 10) приводит к отсутствию строк:

  - name: "Generate Summary Report Line"
    lineinfile:
      path: "{{ report_sum_file }}"
      line: "some text that is different per {{host}}"
    delegate_to: localhost

Единственный способ, которым я мог обойти это, - создать отдельную игру для этой задачи сserial: 1, который выглядит как:

- name: Write Report Lines
  hosts: all
  gather_facts: no
  serial: 1

  tasks:
    - name: "Generate Summary Report Line"
      lineinfile:
        path: "{{ report_sum_file }}"
        line: "some text that is different per {{host}}"
      delegate_to: localhost
0 голосов
/ 04 октября 2019

Не уверен, что это ограничение на lineinfile, но уменьшение количества вилок с 250 до значения по умолчанию устранило проблему.

...