Linux自動(dòng)化運(yùn)維(Shell與Ansible)(微課版) 課件 8-1-變量概述_第1頁
Linux自動(dòng)化運(yùn)維(Shell與Ansible)(微課版) 課件 8-1-變量概述_第2頁
Linux自動(dòng)化運(yùn)維(Shell與Ansible)(微課版) 課件 8-1-變量概述_第3頁
Linux自動(dòng)化運(yùn)維(Shell與Ansible)(微課版) 課件 8-1-變量概述_第4頁
Linux自動(dòng)化運(yùn)維(Shell與Ansible)(微課版) 課件 8-1-變量概述_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Linux自動(dòng)化運(yùn)維項(xiàng)目8:變量與事實(shí)

學(xué)習(xí)目標(biāo)【知識(shí)目標(biāo)】了解Ansible變量的定義和引用基本概念。了解vars和vars_files

關(guān)鍵字的用法。了解事實(shí)變量和注冊(cè)變量基本概念。了解主機(jī)和主機(jī)組變量、特殊變量基本概念?!炯寄苣繕?biāo)】掌握Ansible變量的定義和調(diào)用方法。掌握事實(shí)變量的使用方法,能夠使用Ansible事實(shí)引用受管主機(jī)的數(shù)據(jù)。掌握注冊(cè)變量的使用方法,能夠使用register關(guān)鍵字捕獲任務(wù)的輸出。掌握groups、group_names、inventory_hostname、hostvars

特殊變量的調(diào)用方法?!舅刭|(zhì)目標(biāo)】培養(yǎng)讀者誠(chéng)信、務(wù)實(shí)、嚴(yán)謹(jǐn)?shù)穆殬I(yè)素養(yǎng),培養(yǎng)其正確的職業(yè)道德觀念和職業(yè)操守,使其實(shí)事求是、嚴(yán)謹(jǐn)治學(xué),以誠(chéng)信為基礎(chǔ),做一個(gè)優(yōu)秀的職業(yè)人員。培養(yǎng)讀者系統(tǒng)分析與解決問題的能力,使其能夠掌握相關(guān)知識(shí)點(diǎn)并完成項(xiàng)目任務(wù)。變量與事實(shí)任務(wù)1:變量概述目錄/Contents010203定義和引用變量在文件中引用變量布爾值變量04

列表變量05

字典變量01定義和引用變量定義和引用變量變量可以指在計(jì)算機(jī)存儲(chǔ)器里存在值的被命名的存儲(chǔ)空間。Ansible使用變量來管理不同主機(jī)之間的差異,變量可以是不同類型的值,比如字符串、數(shù)字、布爾值、列表、字典等。Ansible可以在命令行、Playbook、清單文件、角色中定義和引用變量,通常使用標(biāo)準(zhǔn)的YAML語法創(chuàng)建變量。通過使用變量,可以讓自動(dòng)化任務(wù)更加靈活,根據(jù)每個(gè)主機(jī)的不同情況自動(dòng)化適應(yīng)其配置。在Ansible中定義變量要滿足基本的命名規(guī)則,并非所有的字符串都是有效的Ansible變量名,變量名只能由字母、數(shù)字、下畫線組成,變量名不能以數(shù)字開頭,Python關(guān)鍵字或Playbook關(guān)鍵字不是有效的變量名。而以下畫線開頭的變量名可以使用,但不能保證其私有性或安全性。Ansible有效和無效變量名示例如表所示:序號(hào)有效的變量名無效的變量名1foo*foo,Python關(guān)鍵字,比如async、lambda、for、when等2foo_envPlayboook關(guān)鍵字,比如become、vars、register等3foo_portfoo-port、fooport、foo.port4foo5、_foo5foo、12定義和引用變量使用標(biāo)準(zhǔn)的YAML語法定義一個(gè)簡(jiǎn)單的變量時(shí),只需要使用冒號(hào)(:)將變量名和變量值分隔開,如下所示:在定義變量后,使用Jinja2語法來引用變量。Jinja2變量使用雙花括號(hào),比如表達(dá)式“Myampgoesto{{max_amp_value}}”表示引用變量的基本形式。在Playbook中引用變量時(shí),需要使用{{}}標(biāo)識(shí)變量名,如下所示:-name:Mytaskdebug:msg:Thevalueofmy_varis{{my_var}}my_var:some_value定義和引用變量在YAML文件中,如果在一個(gè)值的開頭使用了{(lán){my_var}}這樣的表達(dá)式,它通常用于引用變量。由于YAML語法中使用花括號(hào)標(biāo)識(shí)字典,所以解釋器無法確定該表達(dá)式表示變量還是字典。為了避免這種歧義,需要將整個(gè)表達(dá)式放在引號(hào)中,以便解釋器正確地解釋整個(gè)表達(dá)式。如果沒有引號(hào),解釋器就會(huì)解釋失敗并顯示錯(cuò)誤消息。-name:Mytaskdebug:msg:"{{my_var}}/18"在Ansible中,vars關(guān)鍵字用于在Playbook中定義變量,這些變量可以直接在任務(wù)中使用,使Playbook更加靈活和可配置。vars關(guān)鍵字的基本語法如下:vars:var1:value1var2:value2var3:value3定義和引用變量在下面的示例中,使用var關(guān)鍵字定義一個(gè)名為my_var的變量,它的值是字符串“Hello,World!”,在任務(wù)中使用debug模塊和msg選項(xiàng)來輸出這個(gè)變量的值。-name:Defineandprintavariablehosts:localhostvars:my_var:"Hello,World!"tasks:-debug:msg:"{{my_var}}"02在文件中引用變量在文件中引用變量在Ansible中,vars_files關(guān)鍵字用于在Playbook中引用存儲(chǔ)變量的文件,這些文件可以是YAML格式或JSON格式的。vars_files關(guān)鍵字的基本語法如下:vars_files:-path/to/varfile1.yml-path/to/varfile2.yml其中,path/to/varfile1.yml和path/to/varfile2.yml是包含變量的YAML文件的路徑。在文件中引用變量在上面的示例中,vars_files關(guān)鍵字用于從vars.yml文件中加載變量,這些變量可以在Playbook的任務(wù)中使用。#變量文件vars.yml---var1:value1var2:value2var3:value3#在Playbook中引用文件中的變量-name:Exampleplaybookhosts:web_serversvars_files:-vars.ymltasks:-name:Task1debug:msg:Var1is{{var1}},var2is{{var2}},var3is{{var3}}在Playbook中,使用vars_files關(guān)鍵字來加載vars.yml文件中定義的變量:03布爾值變量布爾值變量在Ansible中,布爾值變量可以用不同的形式來表示,包括true/false、1/0、yes/no、True/False等。在匹配有效字符串時(shí),不區(qū)分字母大小寫。ansible-lint是一個(gè)用于檢查AnsiblePlaybook是否符合規(guī)范的工具,該工具更傾向于使用true/false作為布爾值,文檔中的示例也采用這種方式,保持與ansible-lint默認(rèn)設(shè)置的兼容性。常見的布爾值表示形式如表所示:序號(hào)布爾值布爾值表示1真值True、'true'、't'、'yes'、'y'、'on'、'1'、1、1.02假值False、'false'、'f'、'no'、'n'、'off'、'0'、0、0.004列表變量列表變量列表變量是一種常見的變量類型,是由變量名和多個(gè)值組合在一起的單個(gè)變量。列表變量可以通過定義一個(gè)包含多個(gè)值的項(xiàng)目化列表,或使用方括號(hào)[]包含多個(gè)值并用逗號(hào)分隔來創(chuàng)建。列表變量可以包含多種類型的值,比如字符串、數(shù)字、布爾值、其他列表等,常用于存儲(chǔ)一組相關(guān)的值,比如IP地址列表、文件路徑列表。在Playbook中,可以使用列表變量來定義任務(wù)的目標(biāo)主機(jī)、執(zhí)行特定模塊的參數(shù)、應(yīng)用特定配置文件的路徑等。列表變量可以使用YAML格式的語法定義,示例如下:my_list:-value1-value2-value3列表變量在這個(gè)示例中,我們定義了一個(gè)名為my_list的列表變量,它包含3個(gè)字符串值value1、value2和value3。引用列表變量時(shí),可以通過指定其索引來訪問列表中的特定項(xiàng)。在列表中,第一個(gè)項(xiàng)的索引為0,第二個(gè)項(xiàng)的索引為1,以此類推??梢詢H使用列表中的特定項(xiàng)來執(zhí)行特定任務(wù),而不必引用整個(gè)列表。在Playbook中引用列表變量my_list中的第二個(gè)值,示例如下:-name:Printthesecondvalueinmy_listdebug:msg:"Thesecondvalueofmy_varis{{my_list[1]}05字典變量字典變量字典是將數(shù)據(jù)存儲(chǔ)在鍵值對(duì)中的一種數(shù)據(jù)結(jié)構(gòu),其中每個(gè)鍵值對(duì)表示一個(gè)特定的數(shù)據(jù)項(xiàng)。字典變量可以包含多種類型的值,比如字符串、數(shù)字、布爾值、列表、其他字典等。在使用字典變量時(shí),可以使用鍵來訪問特定的值,以便執(zhí)行特定的任務(wù)或操作。在Ansible中,可以使用YAML語法定義字典變量,示例如下:my_dict:key1:value1key2:value2key3:value3在上述示例中,定義了一個(gè)名為my_dict的字典變量,它包含3個(gè)鍵值對(duì),其中鍵是key1、key2和key3,值分別為value1、value2和value3。字典變量引用字典變量時(shí),可以使用方括號(hào)或點(diǎn)號(hào)來訪問該字典中的單個(gè)特定鍵值。在Playbook中引用字典變量my_dict中的key2鍵的值value2,示例如下:-name:Printthevalueofkey2inmy_dictdebug:msg:"Thethevalueofkey2inmy_dictis{{my_dict['key2']}-name:Printthevalueofkey2inmy_dictdebug:msg:"Thethevalueofkey2inmy_dictis{{my_dict.key2}上述兩個(gè)示例都引用了相同的值value2。在Ansible中使用字典變量時(shí),推薦使用方括號(hào)形式來訪問特定的鍵值。字典變量在Ansible中,注冊(cè)變量、事實(shí)變量、特殊變量存儲(chǔ)的數(shù)據(jù)都是嵌套類型的數(shù)據(jù)結(jié)構(gòu)。引用嵌套變量示例如下:-name:Printcompanyinformationhosts:localhostvars:web_servers:-name:webserver1ip:ports:-80-443-name:webserver2ip:ports:-80-443db_servers:-name:dbserver1ip:ports:-3306tasks:-name:Printweb_serverIPAddressdebug:msg:"Thisisweb_serverip{{web_servers[0].ip}}"-name:Printdb_serversIPAddressdebug:msg:"Thisisdb_serversip{{db_servers[0].name}}"在示例中,定義了兩個(gè)列表,一個(gè)是web_servers,另一個(gè)是db_servers,每個(gè)列表中都包含一個(gè)或多個(gè)嵌套的變量。web_servers列表中的每個(gè)元素都是一個(gè)字典,包含名字、IP地址和端口信息。同樣,db_servers列表中的每個(gè)元素也是一個(gè)字典,包

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論