Почему Ansible Игнорирует Задачи После Сбоя?

  • Автор темы HeeceldMalo
  • Обновлено
  • 21, Oct 2024
  • #1

В моей ansible playbook есть задача под названием «Скопируйте сценарий сборки в систему и запустите его». Он подвержен ошибкам, поэтому я создал задачу отладки для его отладки:

 
 TASK [yocto3-env : Copy the build script to the system and run it] *************
changed: [3.236.191.93]
TASK [yocto3-env : command] ****************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: OSError: [Errno 2] No such file or directory
fatal: [3.236.191.93]: FAILED! => {"msg": "Unexpected failure during module execution.", "stdout": ""}
ERROR! Unexpected Exception, this is probably a bug: [Errno 2] No such file or directory
to see the full traceback, use -vvv
 

Однако, когда задача «yocto3-env» терпит неудачу, ansible останавливается и не переходит к задаче отладки, из-за чего я пропускаю выходные данные отладки, как это видно ниже. Что может быть потенциальной причиной этого? (Обратите внимание, что мой ansible работает в докер-контейнере в конвейере CI/CD)

- name: Copy the build script to the system and run it template: src: build3.sh.j2 dest: "{{ yocto3_env_user_home }}/build3.sh" owner: "{{ yocto3_env_user }}" mode: 0755 - command: "/bin/su -l {{ yocto3_env_user }} -c '{{ yocto3_env_user_home }}/build3.sh'" register: script_output # Creating a variable from the output of the task async: 28800 poll: 300 - debug: var: script_output # Debugging the variable created above

#ансибль

HeeceldMalo


Рег
19 Jul, 2014

Тем
81

Постов
176

Баллов
601
  • 25, Oct 2024
  • #2

По словам Владимира Ботки:

Неустранимая ошибка завершает поток. Это значение по умолчанию. При желании вы можете справиться с ошибками самостоятельно.

 

Sanek1983


Рег
23 Aug, 2014

Тем
74

Постов
201

Баллов
571
  • 25, Oct 2024
  • #3

Ansible часто запускается на нескольких хостах, поэтому он не останавливает выполнение полностью только потому, что вы столкнулись с одним сбоем.

  1. force_handlers: true , register the output and check the --force-handlers

  2. Вы можете добавить обработку ошибок несколькими способами: rescue: and place a block: делай свою работу в

в конце PREVIOUS_PLAY_OUTPUT.failed == True in the commandline or ignore_errors: yes Что касается неожиданных вещей, обработчики (даже предыдущих модулей, которые работали) будут игнорироваться, поэтому, если вы хотите по-прежнему запускать обработчики (что очень раздражает, когда у вас есть большой сборник сценариев, который время от времени дает сбой), используйте


https://docs.ansible.com/ansible/latest/user_guide/playbooks_error_handling.html

 

Никита Шульга


Рег
22 Oct, 2020

Тем
84

Постов
213

Баллов
663
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно