Ansible Log

--

https://burst.shopify.com/photos/office-work-tools-on-the-white-desk

Log

在執行ansible的時候,常常會需要去追蹤執行ansible的訊息。確認為什麼失敗,哪邊出問題了。

之前曾經使用tee來紀錄log。但這樣的方式會讓ansible的訊息都沒有顏色,相較於之前有顏色的時候,閱讀起來會比較困難。

ansible-playbook -i host.cfg test.yml | tee /var/log/ansible.log

之後去谷歌了一下,ansible本身是支援log的。

只要修改ansible.cfg裡面的設定,將log_path打開並設定路徑。

[defaults] 
log_path=/path/to/logfile
  • ansible.cfg 直接從執行 ansible-playbook 的當前目錄取得
  • ~/.ansible.cfg
  • /etc/ansible/ansible.cfg

使用log記下部署過程雖然方便,但有時候我們會在部署過程使用密碼等敏感資訊時,可以使用no_log的設定,將原本會輸出的訊息隱藏起來。

test.yml

- hosts: all
tasks:
- name: 'test no_log False'
shell: echo 'yes Log'
- name: 'test no_log True'
no_log: True
shell: echo 'no Log'

host.cfg

[all]
localhost ansible_ssh_user="<user>" ansible_ssh_pass="<password>"

以上為測試的host config與tasks,執行結果如下。記得加上 -v 才會顯示echo 的資訊。

$ ansible-playbook -v -i host.cfg test.ymlPLAY [all] ************************************************************************************************************TASK [Gathering Facts] ************************************************************************************************
ok: [localhost]
TASK [test no_log False] **********************************************************************************************
changed: [localhost] => {"changed": true, "cmd": "echo 'yes Log'", "delta": "0:00:00.004612", "end": "2020-12-16 13:52:00.638348", "rc": 0, "start": "2020-12-16 13:52:00.633736", "stderr": "", "stderr_lines": [], "stdout": "yes Log", "stdout_lines": ["yes Log"]}
TASK [test no_log True] ***********************************************************************************************
changed: [localhost] => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result", "changed": true}
PLAY RECAP ************************************************************************************************************
localhost : ok=3 changed=2 unreachable=0 failed=0

--

--

身為DevOps工程師
身為DevOps工程師

Written by 身為DevOps工程師

目前在蓋亞資訊擔任DevOps Consultant。最近才從後端的世界轉成投向DevOps的懷抱,目前專注在Kubernetes, GitLab, DevSecOps的學習中。

No responses yet