Ansible之變量和事實

1. 管理變量和事實

將playbook中的某些值使用變量代替,從而簡化playbook的編寫

1.1 管理變量

ansible變量簡介:

變量可能包含下面這些值:

要創建的用戶、要安裝的軟件包、 要重啓的服務、 要刪除的文件、 要從互聯網檢索的文檔

命名變量:

變量名稱必須以字母開頭,並且只能含有字母、數字和下劃線

定義變量 :

三個範圍級別

  • 全局範圍:從命令行或ansible配置設置的變量
  • play範圍:在play和相關結構中設置的變量
  • 主機範圍:由清單、事實收集或註冊的任務,在主機組和個別主機上設置的變量

如果多個級別上定義了相同名稱的變量,優先採用級別最高的變量,窄範圍優先於廣範圍

playbook中的變量 :

在playbook中定義變量

1.常見方式:

在playbook開頭的vars塊中: 

2.在外部文件定義playbook變量

在users.yml文件中寫入

在playbook中使用變量

'注意:當變量用作開始一個值的第一元素時,必須使用引號'

 主機變量和組變量

直接應用於主機的清單變量分爲兩大類:

1.主機變量:應用於特定主機

2.組變量:應用於一個主機組或一組主機組中的所有主機

主機變量優先於組變量,但是playbook中定義的變量比這兩者更高

定義主機變量和組變量:

方法一(比較舊,不建議採用):

定義server1.huayu.com的ansible_user主機變量:

定義dbservers主機組的user組變量:

'這種做法使的清單文件難以處理,在同一文件中混合提供主機和變量信息,語法也過時'

方法二:

使用目錄填充主機和組變量

定義主機和主機組變量的首選做法是在清單文件或目錄相同的工作目錄中,創建group_vars 和host_vars兩個目錄,這兩個目錄

分別包含用於定義組變量和主機變量的文件

創建group_vars/servers的YAML文件,設置變量爲:

user:student

同樣需要在host_vars目錄中創建名稱與主機匹配的文件來存放主機變量 所以一個項目目錄中包含: ansible.cfg、group_vars、host_vars、inventory、playbook.yml

 

從命令行覆蓋變量

清單變量可以被playbook中設置的變量覆蓋 兩者又可通過命令行參數覆蓋

 

使用已註冊變量捕獲命令輸出

管理員可以使用register語句捕獲命令輸出

cat playbook.yml 

ansible-playbook test.yml

 

練習:

創建playbook,來安裝apache並開啓,使可被訪問,playbook查詢web服務器並確認它已經設置好並在運行

  • web_pkg 要安裝的web服務器軟件包
  • firewall_pkg #要安裝的防火牆軟件包
  • web_service #要管理的web服務
  • firewall_service #要管理的防火牆服務
  • python_pkg #uri模塊所需軟件包
  • rule #要打開的服務

 執行playbook

 

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