Рейтинг:1

Как я могу увидеть, какие команды выполняются и их вывод?

флаг us

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

Я сделал экспорт ANSIBLE_STDOUT_CALLBACK=отладка а потом ansible-playbook -vvvvvv arch-upgrade.yaml -l мой-хост с арк-upgrade.yaml ниже:

- название: ArchLinux актуальная версия
  хозяева: все
  задачи:
    - название: полное обновление системы
      пакман:
        update_cache: да
        обновление: да
      зарегистрироваться: нет
    - отладка: msg="{{ out }}"

я получил много подробностей о том, как ansible открывает свои ssh-соединения, передает свой файл python, запускает его удаленно и т. д., но, насколько я могу судить, ни единой информации о том, какую команду на самом деле выполнил скрипт python и что он вернул (stdout, stderr, код возврата). Вот почему я не привожу сюда этот очень длинный лог, но могу по запросу.

Кто-нибудь знает, как я могу попросить ansible быть более подробным о какие это так (и не как это получается)?

флаг br
Ansible может предоставить вам вывод модуля. См. [Модули отладки](https://docs.ansible.com/ansible/latest/dev_guide/debugging.html#debugging-modules), если вы хотите узнать больше. Это довольно просто. Вы просите Ansible оставить код на удаленном узле. См. ANSIBLE_KEEP_REMOTE_FILES. Затем на удаленном узле вы распаковываете код и запускаете *pdb*.
флаг us
Хорошо, спасибо, я думаю, это способ сделать это. Хотя кажется немного запутанным.Нет ли «родного» способа увидеть, что происходит из командной строки? Я имею в виду, что такие вещи, как `run_command`, не взаимодействуют с каким-то родным механизмом ведения журнала в ansible?
флаг br
Нет это не так. Представьте, как работает Ansible. Сначала на контроллере все данные и код сжимаются в пакет AnsiballZ. Затем этот пакет отправляется на удаленный узел. На удаленном узле данные и код извлекаются и выполняются. Когда задача завершается, выходные данные отправляются обратно с удаленного узла на контроллер. Прочтите ссылку выше.
флаг us
Да, то, что вы предлагаете, просто с точки зрения проектирования систем. Это не так просто с точки зрения пользователя. Я немного удивлен, что в ansible нет общей структуры для регистрации побочных эффектов того, что делают модули (команды оболочки, системные вызовы, вызовы API и т. д.), без необходимости запускать их вручную. Тем не менее, спасибо за понимание внутренностей ansible!
флаг br
Пожалуйста! Необходимо понимать, что успех Ansible заключается в предоставлении комплексной основы для написания пользовательских модулей. Существует [унифицированная структура вывода](https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html#creating-an-info-or-a-facts-module), но из-за разнообразия модулей, вы получаете только тот вывод, который предоставляет автор модуля. Я предполагаю, что на данный момент существует около 10 тысяч модулей. См. [Коллекции Ansible] (https://github.com/orgs/ansible-collections/repositories).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.