ANSIBLE---变量
注冊(cè)變量
ansible的模塊在運(yùn)行之后,其實(shí)都會(huì)返回一些”返回值”,只是默認(rèn)情況下,這些”返回值”并不會(huì)顯示而已,我們可以把這些返回值寫入到某個(gè)變量中,這樣我們就能夠通過引用對(duì)應(yīng)的變量從而獲取到這些返回值了,這種將模塊的返回值寫入到變量中的方法被稱為”注冊(cè)變量”。
提示用戶輸入信息并寫入變量
在運(yùn)行某些腳本時(shí),有時(shí)候腳本會(huì)提示用戶輸入一些信息,腳本需要根據(jù)用戶輸入的信息決定下一步的動(dòng)作,這種”交互”有時(shí)候是必須的,那么,在playbook中該怎樣實(shí)現(xiàn)這種交互呢?我們可以這樣做,提示用戶輸入信息,然后將用戶輸入的信息存入到指定的變量中,當(dāng)我們需要使用這些”輸入的信息”時(shí),只要引用對(duì)應(yīng)的變量即可
使用”vars_prompt”關(guān)鍵字創(chuàng)建了兩個(gè)變量,在定義” vars_prompt”中的變量時(shí),使用private關(guān)鍵字,將變量的private屬性設(shè)置為no即可, “private: no”表示變量值為非私有的,可見的,默認(rèn)情況下 private值為yes,表示不可見。我們還能為提示信息設(shè)置默認(rèn)值,即如果用戶不輸入任何信息,則將默認(rèn)值賦予變量
我們使用了default關(guān)鍵字設(shè)置了”solution”變量的默認(rèn)值,如果用戶沒有輸入任何值(直接回車),則將”solution”變量的值設(shè)置為A,如果用戶輸入了值,則”solution”變量值為用戶輸入的值
encrypt關(guān)鍵字表示對(duì)用戶輸入的信息進(jìn)行哈希,encrypt: “sha512_crypt”表示使用sha512算法對(duì)用戶輸入的信息進(jìn)行哈希,當(dāng)使用”encrypt”關(guān)鍵字對(duì)字符串進(jìn)行哈希時(shí),ansible需要依賴passlib庫(kù)完成哈希操作,如果未安裝passlib庫(kù)(一個(gè)用于哈希明文密碼的python庫(kù)),執(zhí)行playbook時(shí)會(huì)報(bào)錯(cuò)。
除了能夠使用”encrypt”關(guān)鍵字對(duì)字符串進(jìn)行哈希加密,還能夠使用”confirm”關(guān)鍵字實(shí)現(xiàn)類似確認(rèn)密碼的功能,我們?cè)跒橛脩粼O(shè)置密碼時(shí),通常需要輸入兩次完全相同的密碼,才能夠設(shè)置成功,通過”confirm”關(guān)鍵字就能實(shí)現(xiàn)類似的效果
通過命令行傳入變量
在調(diào)用playbook時(shí)使用?–extra-vars選項(xiàng)可以傳遞對(duì)應(yīng)的變量與變量值,?–extra-vars是長(zhǎng)選項(xiàng),對(duì)應(yīng)的短選項(xiàng)是-e,我們也可以一次性傳入多個(gè)變量,變量之間用空格隔開。在playbook中定義好變量,然后在執(zhí)行playbook時(shí),再次傳入相同名稱的變量,最終還是以傳入的變量值為準(zhǔn)。命令行傳入的變量的優(yōu)先級(jí)要高于playbook中的變量,傳入相同名稱的變量,除了使用”key=value”的方式傳遞變量,ansible還支持通過json的格式傳入變量。
使用”@”符號(hào)加上變量文件的路徑,即可在命令行中傳入對(duì)應(yīng)的變量文件,變量文件中的所有變量都可以在playbook中引用
?
總結(jié)
以上是生活随笔為你收集整理的ANSIBLE---变量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JDK源码解析之 java.lang.L
- 下一篇: innodb_flush_method理