Ansible中毒中....
資訊本文轉載自舊站存檔。
本來是想振作起來寫一些shell script的說...結果中間有些動作想說用ansible寫看看可能會比較簡單
結果一寫下去...就..不 可 挽 回的沉迷進去了....
Ansibleとは?
Ansible是RedHat開發的一個自動化工具,透過python跟ssh,實現了一台control machine rules them all
之前我也不是沒有試著用過,但是當時的我只覺得ansible是個又慢又複雜又難懂的東西....所以就稍微弄了點入門的就放棄了
結果這次我不知道哪裡忽然開竅了,寫著寫著就越來越包山包海
相關的教學
補充一些想使用ansible的入門者參考的文獻與影片
Documents
Youtube教學影片
Jay from Learn Linux TV會提供很多有用的Linux教學影片(不過基本上都是比較基本的教學)除了Ansible也可以翻翻其他的主題影片
先前的卡關點
我之前使用ansible主要卡在以下兩點
變數/迴圈使用
ansible的迴圈功能基本上都會伴隨變數一起,若是不會定義"{{ }}"的Jinja2變數格式基本上就用不了迴圈
不用迴圈的ansible playbook就是一個肥大,機器與重複性動作越多就跑得越囉唆與緩慢的東西
條件
這個也是一個很大的重點,如同shell script不會使用if ..else ..fi來判斷狀態的話shell script也會寫不下去的....
其他上癮的地方
inculde_task, inculde_roles
之前我就針對ansible的roles機能很有好感,畢竟這是可以將一個很大的playbook.yml支解成多個小型好寫的roles來減輕編寫的負擔以及再利用等特徵
但是roles是靜態的寫上的就是一定會被呼叫並且執行,但是搭配上inculde_task與變數判定,就可以做成依照node特性(例如os_family自動判別作業系統的類型)
動態的載入對應的task.yml使一個playbook.yml的覆蓋範圍擴大到幾乎所有的機器(尤其是像我這種喜歡用不同distrobution來做不同類型server/workstation的人)
