Какая конфигурация необходима для правильного форматирования стандартного вывода потока из задач в Ansible ansible-playbook
бегать?
Что я бегу ansible-playbook foo.yaml
вывод из задач включает стандартный поток (stdout
, stderr
) содержание. Но они отображаются в виде большого однострочного BLOB-объекта JSON, а не печатаются как отформатированные строки, которые были отправлены в поток.
TASK [Django: Collect media fixture files] ******************************************************************************
ok: [lorem]
TASK [Django: Create superuser] ******************************************************************************
fatal: [lorem]: FAILED! => {"changed": false, "cmd": "python3 -m django createsuperuser\n --noinput\n --username \"admin\"\n --email \"admin@example.com\"", "msg": "\n:stderr: CommandError: You must use --full_name with --noinput.\n", "path": "/var/local/dolor/virtualenv/rectory/venv.py3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/games", "syspath": ["/tmp/ansible_django_manage_payload_uj9f3le8/ansible_django_manage_payload.zip", "/usr/lib/python37.zip", "/usr/lib/python3.7", "/usr/lib/python3.7/lib-dynload", "/usr/local/lib/python3.7/dist-packages", "/usr/lib/python3/dist-packages"]}
Что вызывает такое нежелательное форматирование вывода? Как я могу сказать Ansible всегда правильно форматировать вывод потока для отображения в ansible-playbook
вывод?
По умолчанию Ansible использует машиночитаемый вывод JSON, который не подходит для чтения человеком. Но есть и другие Доступны модули «обратного вызова», некоторые из которых могут форматировать вывод потока.
debug
модуль больше подходит для просмотра людьми.yaml
модуль форматирует выходной поток как удобный для чтения документ YAML.Итак, используя ANSIBLE_STDOUT_CALLBACK
переменная окружения:
$ ANSIBLE_STDOUT_CALLBACK=yaml ansible-playbook ansible/deploy.yaml
изменит форматирование вывода потока:
[…]
TASK [Django: Collect media fixture files] ******************************************************************************
ok: [lorem]
TASK [Django: Create superuser] ******************************************************************************
fatal: [lorem]: FAILED! => changed=false
cmd: |-
python3 -m django createsuperuser
--noinput
--username "admin"
--email "admin@example.com
msg: |-
stderr: |-
CommandError: You must use --full_name with --noinput.
path: "/var/local/dolor/virtualenv/rectory/venv.py3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/games"
syspath:
- /tmp/ansible_django_manage_payload_uj9f3le8/ansible_django_manage_payload.zip
- /usr/lib/python37.zip
- /usr/lib/python3.7
- /usr/lib/python3.7/lib-dynload
- /usr/local/lib/python3.7/dist-packages
- /usr/lib/python3/dist-packages