Записать вывод задачи в файл при использовании «до» - PullRequest
1 голос
/ 26 февраля 2020

У меня есть задача ansible, которая не выполняется примерно 20% времени. Это почти всегда удается, если повторить пару раз. Я хотел бы использовать от until до l oop, пока задача не будет выполнена успешно, и сохранять результаты каждой попытки в отдельном файле журнала на локальном компьютере. Есть ли хороший способ для достижения этой цели?

Например, моя задача в настоящее время выглядит следующим образом:

- name: Provision
  register: prov_ret
  until: prov_ret is succeeded
  retries: 2
  command: provision_cmd

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

- name: Write Log
  local_action: copy content={{ prov_ret | to_nice_json }} dest="/tmp/ansible_logs/provision.log"

1 Ответ

1 голос
/ 27 февраля 2020

Это невозможно с 2.9. until l oop не сохраняет results, как loop. После завершения задачи все переменные внутри задачи исчезнут, кроме register one.

Чтобы увидеть, что происходит в l oop, запишите журнал внутри команды на удаленный узел. Например, команда provision_cmd записывает журнал в /scratch/provision_cmd.log. Запустите его в block и отобразите журнал в разделе rescue.

    - block:
        - name: Provision
          command: provision_cmd
          register: prov_ret
          until: prov_ret is succeeded
          retries: 2
      rescue:
        - name: Display registered variable
          debug:
            var: prov_ret
        - name: Read the log
          slurp:
            src: /scratch/provision_cmd.log
          register: provision_cmd_log
        - name: Display log
          debug:
            msg: "{{ msg.split('\n') }}"
          vars:
            msg: "{{ provision_cmd_log.content|b64decode }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...