Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

將ansible 執行結果寄回指定信箱並保有ansi 色彩 #45

Open
changchichung opened this issue Jul 29, 2019 · 3 comments
Open

Comments

@changchichung
Copy link

我在ansible主機上,依照需求,設定了多組不同目的cron job ,讓ansible可以定時去執行指定的工作
現在因為需要交接部份機器給別人,但是對方表示不會ansible,但是需要看到每次定時排程工作執行的狀況
我是表示應該是讓對方學會維護ansible,我再把playbook打包出去給對方,這樣比較好吧?不過主管交待先把執行的紀錄傳給對方看,其他的再慢漫談....

anyway ,我原本執行的語法如下

ANSIBLE_CONFIG=/home/changch/ansible/ansible.cfg /usr/local/bin/ansible-playbook  /home/changch/ansible/playbook.user_client.yml --vault-password-file=/home/changch/ansible/vault.passwd -i /home/changch/ansible/inventory/abc.com.production -f1 --limit tyuserclients |tee /tmp/tyuserclients.log

最簡單的方式就是直接給 /tmp/tyuserclients.log ,但是通常事情都沒有那麼簡單..
對方表示log太長了,又沒有顏色區分,無法分辨執行狀況( ooxx 咧.. )

因為在console 下,要送出帶有色彩的信件頗麻煩的,上網找了一下,嘿,其實已經有人寫好了..
https://pypi.org/project/ansi2html/
所以就先

pip install ansi2html --user

然後測試一下指令 (在 /tmp/tyuserclients.log 中,找到 RECAP 這個字串,往下抓100行)

grep -A100 "RECAP" /tmp/tyuserclients.log | ansi2html > /tmp/tyuserclients.html

檔案會長成這樣

接著就只要想辦法把這個 html 檔案送給對方就好..

然後現在有個疑問,我本來想說在 post_tasks 裡面做送出郵件這件事
可是就算在 post_tasks 裡面加入這段,實際上的log 也還不會有完整的LOG出現
所以也就不會有 RECAP 這個字串可以讓我判斷

那有什麼"ansible" 的方式可以達到我的需求嗎?

其實就改用script 去跑task就好,只是想知道有沒有辦法在ansible中就一次處理掉..

@chusiang
Copy link
Member

感覺樓主可以去玩玩 Ansible 的 Python API,直接從 API 調用各種回訊值。但現階段而言,應該還是另外寫個 Shell script 或 Python script 會簡單上許多吧。

@zarr12steven
Copy link

請問樓主有考慮使用 scriptreplay 嗎?用這個可能也許會快一點!

以上意見純屬參考。

@changchichung
Copy link
Author

我不知道scriptreplay 這個指令,禮拜一上班後測試看看,謝謝🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants