2016-02-01 38 views
1

而不是在log_path中定義的單個日誌文件,我希望在Ansible中運行每個劇本的單獨日誌文件。如何在Ansible中的每個劇本中單獨登錄一個文件

據我所知,沒有內置的方法來做到這一點。所以我在尋找聰明的「黑客」。

更具體地說,我想一個劇本是跑了日誌文件之後,格式爲[劇本名稱]產生。[日期]的.log

我發現this線程左右,但它不符合我的需要。如果我可以動態地傳遞劇本名稱,那麼別名就是一個解決方案,不僅僅是日期。如果我只能複製主日誌文件中的相關部分而沒有所有歷史記錄,那麼查找解決方案就可以了。另外,如果你有很多並行運行的劇本,我不知道這個方法有多好。

任何線索/想法?我的想法是創建一個shell腳本,該腳本將在劇本中調用,以便從主日誌中「提取」相關條目並創建一個單獨的腳本。但我相信我會讓它太複雜。

回答

3

請務必在ansible.cfg註釋掉log_path選項。

創建一個包裝shell腳本:ansible-playbook-wrapper.sh

#!/bin/bash 

export ANSIBLE_LOG_PATH=/var/log/ansible/playbook_$(echo $1 | cut -d . -f 1).log 
ansible-playbook [email protected] 

別名ansible-劇本運行封裝腳本:

alias ansible-playbook="/path/to/ansible-playbook-wrapper.sh" 

創建日誌目錄並打開權限所以所有用戶(或者也許是所有的用戶)都可以寫信給它:

sudo mkdir /var/log/ansible 
sudo chmod 777 /var/log/ansible 

現在當你運行ansible-playbook dns_server.yml -u cobra -k你會看到以下內容:

[[email protected] ~]$ ls /var/log/ansible 
playbook-dns_server.log 
playbook-some_other_playbook.log 
playbook-even_more_plays.log 
相關問題