Linux Playbook roles的使用

角色類似於一些屬性的集合。

比如webserver dbserver。不同的服務器需要安裝不同的軟件,我們需要一種快捷的方式讓服務器儘快上線。我們可以將每一個種類的服務器作爲一個角色,在角色中創建該角色需要執行的任務。

從ansible的角度來看,一個角色就是一個目錄,在目錄中有該角色應該有的全部屬性。

角色集合:

        roles/

             mysql/

             httpd/

             nginx/


mysql httpd  nginx都是角色。

比如mysql。在mysql下還需要有包含屬性的目錄:

        mysql/

             files/  存放由copyscript模塊等調用的文件

             templates/ template模塊 查找所需要模板文件的目錄

             tasks/ 至少應該包含一個名爲main.yml的文件 其他文件需要在main.yml中通過Include進行包含

             handlers/ 至少應該包含一個名爲main.yml的文件其他文件需要在main.yml中通過Include進行包含

             vars/ 至少應該包含一個名爲main.yml的文件其他文件需要在main.yml中通過Include進行包含

             meta/ 定義當前角色的特殊設定及其依賴關係 至少應該包含一個名爲main.yml的文件其他文件需要在main.yml中通過Include進行包含

             default/ 爲當前角色設定默認變量時使用此目錄

如果使用roles功能,那麼在ansible-playbook在執行腳本時會自動的到ansible目錄下找尋相關文件。

測試一個實例

第一步:創建所需的目錄

圖片.png

第二步:查看角色目錄

圖片.png

第三步:編輯任務主文件

圖片.png

src指定的文件會在telnet/templates目錄中查找

第四步:創建腳本

圖片.png

第五步:試運行

圖片.png

第六步:運行

圖片.png

第七步:檢查

圖片.png


再做一個實例

由於配置文件發生改變,就生成一個日誌文件,就在上面的實例基礎上做修改

第一步:修改.j2文件

圖片.png

第二步:創建被調用的文件

圖片.png

第三步:修改tasks主文件

圖片.png

第四步:試運行

圖片.png

第五步:運行

圖片.png

第六步:檢查

圖片.png


優化上面的配置

在第二次執行腳本的時候,其實telnet的程序已經安裝過了,可以跳過這個任務。通過tags指定需要執行的任務

第一步:修改.j2文件

圖片.png

第二步:修改tasks主文件

圖片.png

第三步:試運行

圖片.png

這裏沒有執行安裝telnet的任務


調用變量的實例

第一步:定義變量

圖片.png

第二步:修改.j2文件

圖片.png

第三步:試運行

圖片.png

第四步:執行

圖片.png

第五步:遠端主機檢查

圖片.png

第六步:重新執行命令,不過這次帶上參數

圖片.png

第七步:在遠端主機上檢查結果

圖片.png

這裏要證明-e指定的變量值要優先於變量文件中的變量值


通過調用角色傳遞變量

第一步:修改腳本文件

圖片.png

第二步:執行:

圖片.png

第三步:在遠端主機上檢查

圖片.png

調用角色時加入判斷語句

第一步:修改腳本文件

圖片.png

第二步:試運行

圖片.png

第三步:現在把條件改成 6

圖片.png

第四步:試運行

圖片.png

由於遠端主機是7,所以跳過任務


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章