Logging
顯示正確格式化的 Ansible playbook 輸出
需要什麼配置才能正確格式化 Ansible
ansible-playbook
執行中任務的標準流輸出?我
ansible-playbook foo.yaml
從任務中執行的輸出包括標準流 (stdout
,stderr
) 內容。但是這些顯示在一個大的 JSON 單行 blob 中,而不是作為發送到流的格式化行列印。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 輸出,不適合人類閱讀。但是還有其他可用的“回調”模組,其中一些可以格式化流輸出。
因此,使用
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