版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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)目11:角色和集合
學(xué)習(xí)目標(biāo)【知識(shí)目標(biāo)】了解大項(xiàng)目管理方式。了解任務(wù)并行和滾動(dòng)更新的使用場(chǎng)景。了解角色基本概念和目錄結(jié)構(gòu)。了解AnsibleGalaxy基本概念和作用。了解集合基本概念和目錄結(jié)構(gòu)?!炯寄苣繕?biāo)】掌握Ansible角色管理方式,可以創(chuàng)建和編寫(xiě)角色內(nèi)容。掌握Ansible集合管理方式,可以部署和使用集合內(nèi)容。掌握使用ansible-galaxy命令管理角色和集合的方法?!舅刭|(zhì)目標(biāo)】培養(yǎng)讀者系統(tǒng)分析與解決問(wèn)題的能力,使其能夠深入分析問(wèn)題,掌握相關(guān)知識(shí)點(diǎn),并在實(shí)踐中高效地完成項(xiàng)目任務(wù)。培養(yǎng)讀者的安全意識(shí),使其重視Ansible自動(dòng)化代碼的安全性,避免代碼出現(xiàn)漏洞,保護(hù)系統(tǒng)安全。角色和集合任務(wù)1:大項(xiàng)目管理方式目錄/Contents01020304動(dòng)態(tài)清單文件forks并行配置滾動(dòng)更新控制任務(wù)執(zhí)行位置05導(dǎo)入和包含任務(wù)01動(dòng)態(tài)清單文件動(dòng)態(tài)清單文件在Ansible中,用戶可以手動(dòng)編輯靜態(tài)清單文件,并輕松地添加、刪除或修改主機(jī)信息。靜態(tài)清單文件非常適合用于主機(jī)列表相對(duì)穩(wěn)定,或者不經(jīng)常更改的小型環(huán)境或測(cè)試環(huán)境。但對(duì)于大型基礎(chǔ)設(shè)施或快速變更的環(huán)境來(lái)說(shuō),保持靜態(tài)清單文件的最新?tīng)顟B(tài)可能會(huì)很困難。為了解決這個(gè)問(wèn)題,Ansible提供了對(duì)動(dòng)態(tài)清單腳本的支持。動(dòng)態(tài)清單腳本可以從外部數(shù)據(jù)源中獲取主機(jī)列表,在Ansible運(yùn)行時(shí)動(dòng)態(tài)生成清單文件,這些腳本可以是可執(zhí)行程序,也可以是Ansible插件,能夠以JSON格式輸出清單文件信息。在大型IT環(huán)境中,許多系統(tǒng)都使用動(dòng)態(tài)清單腳本來(lái)跟蹤可用主機(jī)和它們的組織方式,比如云提供商、LDAP(LightweightDirectoryAccessProtocol,輕量目錄訪問(wèn)協(xié)議)、Cobbler或企業(yè)CMDB系統(tǒng)。動(dòng)態(tài)清單腳本可以從這些數(shù)據(jù)源中獲取主機(jī)列表,并在Ansible執(zhí)行時(shí)將其提供給Ansible模塊進(jìn)行管理。相比于靜態(tài)清單文件,動(dòng)態(tài)清單腳本具有更高的靈活性和自動(dòng)化能力,可以更好地適應(yīng)不同的環(huán)境和任務(wù)需求。動(dòng)態(tài)清單文件如果通過(guò)AWX或RedHatAnsibleAutomationPlatform(紅帽Ansible自動(dòng)化平臺(tái))等圖形用戶界面工具管理和監(jiān)視動(dòng)態(tài)清單腳本,這些平臺(tái)的清單腳本數(shù)據(jù)庫(kù)會(huì)與所有動(dòng)態(tài)清單腳本源同步,并提供Web和REST接口來(lái)查看和編輯清單腳本。通過(guò)與所有主機(jī)的數(shù)據(jù)庫(kù)記錄相關(guān)聯(lián),用戶可以查看過(guò)去的事件歷史記錄,并查找哪些主機(jī)在最近的Playbook運(yùn)行中出現(xiàn)了故障。動(dòng)態(tài)清單腳本是一種基于外部數(shù)據(jù)源的清單文件管理方式。Ansible支持兩種與外部數(shù)據(jù)源連接的方式:清單插件和清單腳本。在Ansible2.10及之前的版本中,常見(jiàn)的方式是編寫(xiě)自定義動(dòng)態(tài)清單腳本,用戶可以使用任何編程語(yǔ)言編寫(xiě)自定義程序,但傳遞選項(xiàng)時(shí)必須以JSON格式返回清單腳本信息。清單插件是管理動(dòng)態(tài)清單腳本的推薦方式,它可以利用Ansible核心代碼的最新更新內(nèi)容。通過(guò)編寫(xiě)自定義的清單插件,用戶可以連接到其他動(dòng)態(tài)清單腳本源,并且可以更靈活地管理和更新清單文件。動(dòng)態(tài)清單文件動(dòng)態(tài)清單腳本的使用方式與靜態(tài)清單文件的類似,清單腳本的位置可以直接在當(dāng)前的ansible.cfg文件中指定,或者通過(guò)-i選項(xiàng)指定。如果清單文件可以執(zhí)行,則視為動(dòng)態(tài)清單腳本,Ansible會(huì)嘗試運(yùn)行它來(lái)生成清單文件。如果清單文件不可執(zhí)行,則視為靜態(tài)清單文件。動(dòng)態(tài)清單腳本如下所示。#inventory_script.py#!/usr/bin/envpythonimportjsonhost_data={'webserver':{'hosts':['web1','web2'],'vars':{'http_port':80,'proxy_server':''}},'databases':{'hosts':['db1'],'vars':{'ansible_user':'dbadmin','ansible_password':'dbpass'}}}print(json.dumps(host_data))setcolour_count=colour_count+1%}{%endfor%}Currently{{colour_count}}peoplecall{{}}theirfavourite.Andthefollowingareexamplesofthingsthatare{{}}:{%foritemincolour.things%}-{{item}}執(zhí)行命令python3inventory_script--list|python3-mjson.tool運(yùn)行動(dòng)態(tài)清單腳本,查看動(dòng)態(tài)清單腳本中的主機(jī)信息。02forks并行forks并行當(dāng)Ansible處理Playbook時(shí),會(huì)按順序運(yùn)行每個(gè)play,確定play的主機(jī)列表之后,Ansible將按順序運(yùn)行每個(gè)任務(wù)。通常情況下,所有主機(jī)在play中啟動(dòng)下一個(gè)任務(wù)之前成功完成當(dāng)前任務(wù)。默認(rèn)情況下,Ansible可以同時(shí)在所有目標(biāo)主機(jī)上執(zhí)行任務(wù),但是如果目標(biāo)主機(jī)數(shù)量較多,那么執(zhí)行任務(wù)的主機(jī)數(shù)量也會(huì)很多,這可能會(huì)導(dǎo)致系統(tǒng)負(fù)載過(guò)高,影響系統(tǒng)穩(wěn)定性。因此,可以使用forks關(guān)鍵字控制同時(shí)執(zhí)行任務(wù)的主機(jī)數(shù)量,以提高任務(wù)執(zhí)行效率。在小型主機(jī)列表中,可以同時(shí)連接到play中的所有主機(jī)以執(zhí)行每項(xiàng)任務(wù)。但如果該play以數(shù)百個(gè)主機(jī)為目標(biāo),則可能會(huì)給控制節(jié)點(diǎn)帶來(lái)沉重的負(fù)擔(dān)。因此,根據(jù)實(shí)際情況,可以選擇合適的策略來(lái)平衡負(fù)載和效率,以確保Ansible自動(dòng)化運(yùn)維任務(wù)的順利執(zhí)行。forks并行Ansible所允許的最大同時(shí)連接數(shù)由Ansible配置文件中的forks參數(shù)控制。默認(rèn)情況下,該參數(shù)設(shè)置為5,可在/etc/ansible/ansible.cfg文件中查看默認(rèn)值。ansible或ansible-playbook命令都支持-f或--forks選項(xiàng),如果要修改forks的數(shù)量,可以在Playbook中使用forks關(guān)鍵字,或者在命令行中使用-f參數(shù)來(lái)指定。如果Ansible控制節(jié)點(diǎn)配置了默認(rèn)值為5的forks參數(shù),這表示Ansible可以同時(shí)處理的最大連接數(shù)為5。當(dāng)一個(gè)play包含10個(gè)受管主機(jī)時(shí),Ansible將在前5個(gè)受管主機(jī)上執(zhí)行play中的第1個(gè)任務(wù),然后在剩下的5個(gè)主機(jī)上再次執(zhí)行第1個(gè)任務(wù)。完成對(duì)所有主機(jī)的第一個(gè)任務(wù)后,Ansible將每次在5個(gè)主機(jī)的組中逐一執(zhí)行下一個(gè)任務(wù),直到play執(zhí)行完畢。grepforks/etc/ansible/ansible.cfgforks=5ansible-playbook-f30my_playbook.yml03配置滾動(dòng)更新配置滾動(dòng)更新在示例中,web_servers主機(jī)組包含100個(gè)服務(wù)器,通過(guò)將serial設(shè)置為10,每次將按照每組10個(gè)主機(jī)的數(shù)量進(jìn)行操作,通過(guò)控制任務(wù)的并發(fā)性,使大規(guī)模集群的配置更新和服務(wù)重啟過(guò)程更加可控和穩(wěn)定。-name:DeployandRestartServicehosts:web_serversserial:10#設(shè)置每組處理的主機(jī)數(shù)量為10tasks:-name:Copyconfigurationfileansible.builtin.copy:src:/path/to/config/filedest:/etc/service/config.conf-name:Restartserviceansible.builtin.service:name:service_namestate:restarted在生產(chǎn)環(huán)境中,當(dāng)需要更新配置并重啟服務(wù)時(shí),使用serial關(guān)鍵字可以控制并發(fā)性,一組一組進(jìn)行更新和重啟,而不是同時(shí)對(duì)所有主機(jī)進(jìn)行操作,避免整個(gè)集群同時(shí)停機(jī)導(dǎo)致服務(wù)中斷,可提高系統(tǒng)的可用性和穩(wěn)定性,減少對(duì)用戶的影響。在Playbook中使用serial關(guān)鍵字示例如下。配置滾動(dòng)更新在示例中,第一個(gè)Plabook中的webservers組有20個(gè)主機(jī),那么第一批包含6個(gè)主機(jī),第二批包含6個(gè)主機(jī),第三批包含6個(gè)主機(jī),最后一批包含2個(gè)主機(jī)。----name:testplayhosts:webserversserial:"30%"----name:testplayhosts:webserversserial:-1-5-10serial關(guān)鍵字還可以指定為百分比,或者以列表的形式指定批處理流程,具體示例如圖。第一批包含1個(gè)主機(jī),第二批包含5個(gè)主機(jī),第三批包含10個(gè)主機(jī)。如果剩余的主機(jī)數(shù)量少于10個(gè),則下一批將包含所有剩余的主機(jī)。04控制任務(wù)執(zhí)行位置控制任務(wù)執(zhí)行位置默認(rèn)情況下,Ansible會(huì)在Playbook中指定的所有主機(jī)上執(zhí)行任務(wù),但有些情況下,需要將任務(wù)委派給不同的機(jī)器或組,或者只在本地運(yùn)行Playbook。通過(guò)任務(wù)委派,可以更加靈活地控制Playbook的執(zhí)行過(guò)程。常見(jiàn)的任務(wù)委派可以使用delegate_to、delegate_facts、run_once、local_action等關(guān)鍵字來(lái)實(shí)現(xiàn)如表所示。在Ansible中,可以使用delegate_to和delegate_facts關(guān)鍵字將任務(wù)委派給指定的機(jī)器或組,或?qū)⑹聦?shí)委派給特定的機(jī)器或組。序號(hào)委派關(guān)鍵字描述1delegate_to將任務(wù)委派給指定的主機(jī)或組執(zhí)行2delegate_facts將事實(shí)委派到指定的主機(jī)或組收集3local_action將任務(wù)委派給Ansible控制節(jié)點(diǎn)上的本地主機(jī)執(zhí)行4run_once將任務(wù)委派給所有主機(jī)中的一個(gè)主機(jī)執(zhí)行控制任務(wù)執(zhí)行位置通過(guò)delegate_to關(guān)鍵字,可以將任務(wù)從當(dāng)前主機(jī)轉(zhuǎn)移到其他主機(jī),以便在指定的主機(jī)上執(zhí)行任務(wù)。delegate_to關(guān)鍵字具體示例如下。在上面的示例中,delegate_to關(guān)鍵字將Stopwebserver任務(wù)委派給名為web_server3的主機(jī)執(zhí)行,該任務(wù)將在web_server3上執(zhí)行,而不是在play中的web_servers主機(jī)列表中的主機(jī)上執(zhí)行。----name:Exampleplaybookhosts:web_serverstasks:-name:Stopwebserverservice:name:httpdstate:stoppeddelegate_to:web_server3控制任務(wù)執(zhí)行位置通過(guò)delegate_facts關(guān)鍵字,可以將事實(shí)從當(dāng)前主機(jī)轉(zhuǎn)移到其他主機(jī),以便在指定的主機(jī)上使用這些事實(shí)。delegate_facts關(guān)鍵字具體示例如下。在上面的示例中,delegate_facts參數(shù)被設(shè)置為true,因此收集到的事實(shí)將分配給被委派的主機(jī)web_server3,而不是當(dāng)前執(zhí)行任務(wù)的主機(jī)。----name:Exampleplaybookhosts:web_serverstasks:-name:Gatherfactssetup:delegate_facts:truedelegate_to:web_server3控制任務(wù)執(zhí)行位置local_action關(guān)鍵字用于在控制節(jié)點(diǎn)上執(zhí)行本地任務(wù),而不是在遠(yuǎn)程主機(jī)上執(zhí)行。local_action關(guān)鍵字具體示例如下。在上面的示例中,local_action關(guān)鍵字將Runlocalscript任務(wù)委派給Ansible控制節(jié)點(diǎn)上的本地主機(jī)執(zhí)行,而不是在遠(yuǎn)程主機(jī)上執(zhí)行。----name:Exampleplaybookhosts:web_serverstasks:-name:Runlocalscriptlocal_action:command/path/to/local/script.sh控制任務(wù)執(zhí)行位置run_once關(guān)鍵字用于確保一個(gè)任務(wù)只在清單文件的主機(jī)中的一個(gè)主機(jī)上運(yùn)行。run_once關(guān)鍵字具體示例如下。在上面的示例中,Createdirectory任務(wù)使用file模塊創(chuàng)建一個(gè)名為/path/to/directory的目錄。由于run_once關(guān)鍵字被設(shè)置為true,因此該任務(wù)只會(huì)在第一個(gè)主機(jī)上執(zhí)行,而不是在所有主機(jī)上都執(zhí)行。----name:Exampleplaybookhosts:web_serverstasks:-name:Createdirectoryfile:path:/path/to/directorystate:directoryrun_once:true05導(dǎo)入和包含任務(wù)導(dǎo)入和包含任務(wù)在編寫(xiě)大型Playbook時(shí),如果將所有任務(wù)都寫(xiě)在一個(gè)Playbook文件中,這些任務(wù)可能會(huì)變得難以維護(hù)和理解。為了使Playbook更加模塊化和易于維護(hù),可以將其分成較小的文件,可采用模塊化方式將多個(gè)Playbook組合為一個(gè)主Playbook,或者將文件中的任務(wù)列表插入play,這樣可以更輕松地在不同項(xiàng)目中重用play或任務(wù)序列。常見(jiàn)的導(dǎo)入和包含關(guān)鍵字如表所示。序號(hào)關(guān)鍵字描述1import_playbook靜態(tài)導(dǎo)入另一個(gè)Playbook文件,可以在當(dāng)前Playbook中使用導(dǎo)入的Playbook中定義的變量。與動(dòng)態(tài)包含相比,靜態(tài)導(dǎo)入不支持循環(huán)2import_tasks靜態(tài)導(dǎo)入一個(gè)或多個(gè)任務(wù)文件,可以在當(dāng)前Playbook中使用導(dǎo)入的任務(wù)文件中定義的變量。與動(dòng)態(tài)包含相比,靜態(tài)導(dǎo)入不支持循環(huán)3import_role靜態(tài)導(dǎo)入一個(gè)或多個(gè)角色,可以在當(dāng)前Playbook中使用導(dǎo)入的角色中定義的變量。與動(dòng)態(tài)包含相比,靜態(tài)導(dǎo)入不支持循環(huán)4include_tasks動(dòng)態(tài)包含一個(gè)或多個(gè)任務(wù)文件??梢耘c循環(huán)一起使用,對(duì)于循環(huán)中的每個(gè)項(xiàng)目,包含的任務(wù)文件將被執(zhí)行一次。支持變量傳遞。與靜態(tài)包含相比,動(dòng)態(tài)包含無(wú)法在--list-tags中列出標(biāo)簽5include_role動(dòng)態(tài)包含一個(gè)或多個(gè)角色??梢耘c循環(huán)一起使用,對(duì)于循環(huán)中的每個(gè)項(xiàng)目,包含的角色將被執(zhí)行一次。支持變量傳遞。與靜態(tài)包含相比,動(dòng)態(tài)包含無(wú)法在--list-tags中列出標(biāo)簽導(dǎo)入Playbookimport_playbook指令可以將包含play列表的外部文件導(dǎo)入主Playbook中,它允許在主Playbook中導(dǎo)入一個(gè)或多個(gè)額外的Playbook。通過(guò)使用import_playbook指令,可以將復(fù)雜的Playbook分解為多個(gè)模塊化的部分,以提高其可維護(hù)性和可重用性。在Ansible項(xiàng)目中有兩個(gè)Playbook文件,分別是webserver.yml和database.yml,webserver.yml包含Web服務(wù)器的自動(dòng)化任務(wù),database.yml包含數(shù)據(jù)庫(kù)服務(wù)器的自動(dòng)化配置。在主Playbook中導(dǎo)入兩個(gè)額外Playbook的示例如下:由于導(dǎo)入的內(nèi)容是一個(gè)完整的Playbook,因此import_playbook功能只能在Playbook的頂層使用,不能在play內(nèi)使用。如果導(dǎo)入多個(gè)Playbook,它們將按照導(dǎo)入的順序依次執(zhí)行。-name:Preparethewebserverimpor
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨時(shí)快遞員合同模板
- 美術(shù)館防火門施工合同
- 城市森林公園道路施工合同模板
- 花園游泳池別墅花園施工合同
- 城市電影院用地租賃合同范本
- 建筑鋁材施工合同副本
- 智慧能源合同施工承諾書(shū)
- 化學(xué)家經(jīng)紀(jì)人聘用協(xié)議
- 汽車站旁快餐店租賃合同
- 數(shù)據(jù)分析師聘用合同范本
- 公路工程臨時(shí)用電施工方案
- 北師大版二年級(jí)數(shù)學(xué)上冊(cè)《數(shù)學(xué)好玩》(大單元教學(xué)設(shè)計(jì))
- DL5009.3-2013 電力建設(shè)安全工作規(guī)程 第3部分:變電站
- 當(dāng)代社會(huì)政策分析 課件 第13、14章 反貧困社會(huì)政策、公益慈善政策
- 人防疏散基地建設(shè)技術(shù)標(biāo)準(zhǔn) DG-TJ08-2419-2023
- 工程項(xiàng)目移交方案
- 數(shù)字貨幣的經(jīng)濟(jì)影響
- 醫(yī)療技術(shù)操作規(guī)范制度及流程
- 戶外直播知識(shí)競(jìng)賽答題附答案
- 手術(shù)室溫暖的護(hù)士
- 建筑地基基礎(chǔ)施工規(guī)范DBJ-T 15-152-2019
評(píng)論
0/150
提交評(píng)論