ansible變量一(var和var_files)

在ansible中使用變量,能讓咱們的工做變得更加靈活,在ansible中,變量的使用方式有不少種。nginx

變量的定義:bash

變量名應該有字母,數字,下劃線組成,變量名須要以字母開頭,ansible內置的關鍵字不能做爲變量名。ide

在playbook中使用變量:3d

若是咱們想要在某個paly中定義變量,了一借組vars關鍵字,示例以下:blog

image.png

上例,使用vars關鍵字,表示在當前play中進行變量的相關設置。it

vars關鍵字的下一級定義定義了一個變量,變量名爲testvar1,變量值爲testfileclass

當咱們須要使用testvar1的變量時,則須要應用這個變量,引用方式是兩個大括號。test


也能夠定義多個變量:變量

image.png

除了上面語法,使用yaml的塊序列語法也能夠定義變量,事例以下:
image.pngfile

還能夠用相似「屬性」的方式定義變量,示例以下:

image.png


對於上面,咱們引用變量的方式有兩種:

語法一:"{{nginx.conf80}}"
語法二:"{{nginx['conf8080']}}"


仔細觀察,上例中,咱們在引用變量時使用了雙引號,而在第一個示例中沒有用雙引號,這是由於第一個示例中的變量在被引用時,並無處於」開頭的位置「,第一個示例中變量被引用時以下:

#path: /testdir/{{ testvar1 }}

當file模塊的path參數引用對應的變量時,先引入了/testdir/,而後才引用了’testvar1‘變量。

而在上述示例中引用變量,變量被引用時以下,處於’開頭的位置‘,這種狀況下,咱們引用變量時必須使用雙引號引發被引用的變量,不然報語法錯誤。

path:"{{ nginx.conf80 }}"


當咱們在playbook中爲模塊的參數賦值時,咱們使用」冒號,也可使用」等號「,當使用等號位模塊的參數賦值時,則不用考慮引用變量時是否使用」引號「的問題,示例以下:

image.png


除了可以在play中直接定義變量,咱們還能夠在某個文件中定義變量,而後再在playbook引入對應的文件,引入文件後,playbook便可使用文件中定義的變量,你可能會問,爲何要畫蛇添足呢?

這是由於在某些工做場景頗有用,好比:你想讓別人閱讀你的playbook,卻不想讓別人看到某些值,可使用這種方法,由於別人在閱讀playbook時,只能看到引入的變量名,不能看到相應的值,這種將變量分離到某個文件中的作法就作」變量文件分離「,」變量文件分離「除了可以隱藏某些值,還可以讓你將不一樣類的信息放在不一樣的文件中,而且讓這些信息與劇本主體分開。


例子,定義一個專門用來存放nginx相關變量的文件(文件名nginx_vars.yaml):

image.png


定義完相關變量後,便可在playbook中引入文件中的變量,在playbook中引入包含變量的文件時,須要使用」vars_files「關鍵字,被引入的文件須要以」-「開頭,以yaml中塊序列語法引用,示例以下:

image.png

上例中使用"var_files"關鍵字引入了對應的變量文件,而後使用了文件中定義的變量。固然也能夠引用多個變量文件,每一個被引入的文件都須要以「-」開頭。


「var」關鍵字和「var_files」關鍵字能夠同時使用,以下:

var:
- conf90: /etc/nginx/conf.d/90.conf
vars_files:
- /testdir/ansible/nginx_vars.yml
相關文章
相關標籤/搜索