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

下載本文檔

版權(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)目6:Ansible自動(dòng)化概述

學(xué)習(xí)目標(biāo)【知識(shí)目標(biāo)】了解自動(dòng)化和IT基礎(chǔ)設(shè)施自動(dòng)化基本概念。了解Ansible基本概念和基本架構(gòu)。了解Ansible清單文件和配置文件主要參數(shù)的功能?!炯寄苣繕?biāo)】掌握Ansible安裝方法,能夠在RHEL、Ubuntu等Linux發(fā)行版中安裝Ansible。掌握Ansible清單文件和配置文件主要參數(shù)的使用方法。掌握清單文件的構(gòu)建方法和ansible.cfg文件的基本配置。【素質(zhì)目標(biāo)】培養(yǎng)讀者的信息素養(yǎng)和學(xué)習(xí)能力,使其能夠靈活運(yùn)用正確的學(xué)習(xí)方法和技巧,快速掌握新知識(shí)和技能,并不斷學(xué)習(xí)和進(jìn)步。培養(yǎng)讀者的職業(yè)道德素養(yǎng),使其明確在自動(dòng)化運(yùn)維中的職業(yè)責(zé)任與義務(wù),引導(dǎo)讀者樹(shù)立正確的職業(yè)態(tài)度。培養(yǎng)讀者嚴(yán)謹(jǐn)?shù)倪壿嬎季S能力,使其在解決問(wèn)題時(shí)使用邏輯思維,提高自主學(xué)習(xí)能力。Ansible自動(dòng)化概述任務(wù)1:Ansible簡(jiǎn)介目錄/Contents0203Ansible基本概念A(yù)nsible基本架構(gòu)01IT基礎(chǔ)設(shè)施自動(dòng)化01IT基礎(chǔ)設(shè)施自動(dòng)化自動(dòng)化自動(dòng)化是指通過(guò)技術(shù)手段,在減少人工協(xié)助的情況下執(zhí)行各項(xiàng)任務(wù),使工作或過(guò)程自動(dòng)完成。目前,自動(dòng)化已經(jīng)應(yīng)用于各種行業(yè)和領(lǐng)域。自動(dòng)化技術(shù)和人工智能經(jīng)常一起使用,以實(shí)現(xiàn)更高效、更準(zhǔn)確和更智能的自動(dòng)化過(guò)程。通過(guò)結(jié)合機(jī)器學(xué)習(xí)和自動(dòng)化技術(shù),可以實(shí)現(xiàn)自動(dòng)化的文本分類、圖像識(shí)別和語(yǔ)音識(shí)別等任務(wù)。自動(dòng)化可以幫助用戶加快流程變革和環(huán)境拓展,構(gòu)建持續(xù)集成、持續(xù)交付和持續(xù)部署(CI/CD)工作流。自動(dòng)化的種類有很多,其中包括IT自動(dòng)化、業(yè)務(wù)自動(dòng)化、機(jī)器人流程自動(dòng)化、工業(yè)自動(dòng)化、AI應(yīng)用部署和管理自動(dòng)化等。IT基礎(chǔ)設(shè)施自動(dòng)化IT基礎(chǔ)設(shè)施是指企業(yè)運(yùn)行和管理IT環(huán)境所需的基礎(chǔ)組件和技術(shù),這些基礎(chǔ)組件和技術(shù)包括硬件、軟件、網(wǎng)絡(luò)、操作系統(tǒng)、安全設(shè)備和數(shù)據(jù)存儲(chǔ)等,它們共同提供各種IT服務(wù)和解決方案。隨著云計(jì)算技術(shù)的快速發(fā)展,計(jì)算資源和服務(wù)變得更加靈活和可擴(kuò)展,IT基礎(chǔ)設(shè)施的規(guī)模也在不斷擴(kuò)大?,F(xiàn)代數(shù)據(jù)中心通常包含數(shù)百甚至數(shù)千個(gè)機(jī)架,以及數(shù)以萬(wàn)計(jì)的服務(wù)器、存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備等。IT基礎(chǔ)設(shè)施已經(jīng)從傳統(tǒng)數(shù)據(jù)中心中的物理硬件逐步轉(zhuǎn)移到虛擬化、容器、云計(jì)算等混合云或多云環(huán)境中。云計(jì)算技術(shù)的變革推動(dòng)了軟件架構(gòu)和開(kāi)發(fā)模式的變革,應(yīng)用發(fā)布流程和發(fā)布頻率發(fā)生了很大的變化。IT基礎(chǔ)設(shè)施自動(dòng)化為了滿足復(fù)雜多變的業(yè)務(wù)要求,現(xiàn)代數(shù)據(jù)中心采用了各種自動(dòng)化和智能化技術(shù),以提高自身的的效率和可管理性。例如,自動(dòng)化的服務(wù)器配置、存儲(chǔ)管理和網(wǎng)絡(luò)管理可以大大減少人工干預(yù),減少人為錯(cuò)誤和故障,提高數(shù)據(jù)中心的效率和可靠性。通過(guò)Ansible、Puppet、SaltStack、Terraform等自動(dòng)化部署和配置工具,可自動(dòng)部署和配置應(yīng)用程序及其相關(guān)組件;基于Jenkins、GitLab等持續(xù)集成和持續(xù)部署工具,可自動(dòng)對(duì)軟件進(jìn)行測(cè)試、構(gòu)建和部署,從而提高軟件的質(zhì)量和開(kāi)發(fā)效率。這種自動(dòng)化部署和配置可以大大減少發(fā)布流程中的人工干預(yù),提高發(fā)布效率和質(zhì)量。IT基礎(chǔ)設(shè)施自動(dòng)化為了實(shí)現(xiàn)IT基礎(chǔ)設(shè)施自動(dòng)化,基礎(chǔ)設(shè)施即代碼應(yīng)運(yùn)而生。基礎(chǔ)設(shè)施即代碼(InfrastructureasCode,IaC)是通過(guò)代碼而非手動(dòng)流程來(lái)管理和置備基礎(chǔ)設(shè)施的方法。它使用編碼語(yǔ)言(如Ruby、Python)來(lái)自動(dòng)化IT基礎(chǔ)設(shè)施的配置,將IT基礎(chǔ)設(shè)施的配置、部署、運(yùn)維等操作以代碼的形式進(jìn)行編寫和管理。例如開(kāi)發(fā)人員或運(yùn)維人員每次想要開(kāi)發(fā)、測(cè)試或部署軟件時(shí),手動(dòng)配置和管理服務(wù)器、操作系統(tǒng),數(shù)據(jù)庫(kù)連接、存儲(chǔ)和其他基礎(chǔ)設(shè)施元素的需求,可以使用代碼定義、配置和管理軟件基礎(chǔ)設(shè)施來(lái)實(shí)現(xiàn),這樣可以提高一致性并減少錯(cuò)誤和手動(dòng)配置,能夠以更快的速度、更低的風(fēng)險(xiǎn)和更低的成本開(kāi)發(fā)、部署和擴(kuò)展云應(yīng)用程序。02Ansible基本概念A(yù)nsible基本概念A(yù)nsible是一個(gè)開(kāi)源IT自動(dòng)化引擎,能夠自動(dòng)化置備、配置管理、應(yīng)用部署、編排等IT流程,通過(guò)軟件工程的方法重新定義和描述IT設(shè)施基礎(chǔ)設(shè)施,用自動(dòng)化技術(shù)替代重復(fù)和手動(dòng)操作,可提高工作效率并降低人工干預(yù)的風(fēng)險(xiǎn)。Ansible起源于計(jì)算機(jī)工程師MichaelDeHaan(邁克爾·德哈恩)在2012年發(fā)起的AnsibleWorks項(xiàng)目。DeHaan曾經(jīng)在紅帽公司工作,離開(kāi)紅帽公司后,隨著云計(jì)算技術(shù)和DevOps的流行,他認(rèn)為當(dāng)時(shí)市面上的自動(dòng)化工具都過(guò)于復(fù)雜,希望能夠開(kāi)發(fā)一種簡(jiǎn)單易用的自動(dòng)化運(yùn)維工具。德哈恩選擇用Python語(yǔ)言開(kāi)發(fā)Ansible,并在GitHub上開(kāi)源了項(xiàng)目,且在開(kāi)發(fā)過(guò)程中汲取了Cobbler、Puppet、Chef等項(xiàng)目開(kāi)發(fā)的經(jīng)驗(yàn)教訓(xùn)。在接下來(lái)的幾年中,Ansible得到了廣泛的關(guān)注和使用,并成為自動(dòng)化運(yùn)維領(lǐng)域的一個(gè)知名項(xiàng)目。在2015年,紅帽公司將Ansible作為核心產(chǎn)品之一收入旗下,并繼續(xù)推廣和開(kāi)發(fā)此工具。在收購(gòu)Ansible后,紅帽公司不僅繼續(xù)維護(hù)Ansible的開(kāi)源版本,還推出了商業(yè)版本,通過(guò)制定企業(yè)級(jí)自動(dòng)化方案,為企業(yè)用戶提供更多的支持和服務(wù)。Ansible可應(yīng)用于絕大多數(shù)Linux發(fā)行版中,如RHEL、CentOS、openSUSE、Debian、Ubuntu、華為openEuler等系統(tǒng)。通過(guò)不同的模塊和插件,Ansible還可以用于Windows、FreeBSD、macOS等操作系統(tǒng)。紅帽公司在2021年12月正式發(fā)布了AnsibleAutomationPlatform(AAP)。這個(gè)平臺(tái)是在現(xiàn)有的Ansible開(kāi)源項(xiàng)目的基礎(chǔ)上構(gòu)建的,增加了更多面向企業(yè)的功能和集成。AAP的推出是紅帽公司在擴(kuò)展Ansible的影響力和能力方面的一個(gè)重要步驟,特別是在企業(yè)環(huán)境中,通過(guò)提供一整套工具來(lái)支持各種IT領(lǐng)域的自動(dòng)化。AAP可以實(shí)現(xiàn)紅帽產(chǎn)品緊密集成,如RedHatEnterpriseLinux、RedHatOpenShift和RedHatOpenStack,提供一個(gè)無(wú)縫的自動(dòng)化體驗(yàn)跨越整個(gè)IT堆棧。還支持與多個(gè)云服務(wù)提供商和技術(shù)解決方案的集成,增強(qiáng)了其多云和混合云環(huán)境中的應(yīng)用能力。Ansible基本概念A(yù)nsible使用簡(jiǎn)單的YAML來(lái)編寫配置文件,不需要編寫復(fù)雜的代碼。簡(jiǎn)單易用Ansible不需要在目標(biāo)系統(tǒng)上安裝任何代理軟件,可以基于SSH進(jìn)行遠(yuǎn)程操作。無(wú)須安裝客戶端Ansible可以管理各類系統(tǒng)和網(wǎng)絡(luò)設(shè)備,支持多種操作系統(tǒng),還可以進(jìn)行多種類型的任務(wù)自動(dòng)化。高效實(shí)用Ansible提供大量的模塊、插件、角色、集合并行化執(zhí)行操作,可管理大規(guī)模的服務(wù)器和網(wǎng)絡(luò)設(shè)備,完成大規(guī)模部署任務(wù)。支持大規(guī)模部署:Ansible提供可讀性高的配置文件,使用版本控制工具,易于維護(hù)和回滾。易于維護(hù)Ansible支持多種安全機(jī)制,以保護(hù)機(jī)密信息不被竊取或泄露。Ansible支持密鑰驗(yàn)證和TLS/SSL加密來(lái)確保數(shù)據(jù)傳輸?shù)陌踩裕梢允褂胊nsible-vault來(lái)加密配置文件中的敏感信息。安全性Ansible的設(shè)計(jì)目標(biāo)如下:Ansible基本概念03Ansible基本架構(gòu)Ansible基本架構(gòu)Ansible可以滿足自動(dòng)化云環(huán)境的設(shè)置、配置管理、應(yīng)用程序部署、內(nèi)部服務(wù)編排等IT需求。Ansible被設(shè)計(jì)用于多層部署,通過(guò)描述所有系統(tǒng)的相互關(guān)系將IT基礎(chǔ)設(shè)施代碼化,以實(shí)現(xiàn)對(duì)復(fù)雜的IT環(huán)境的管理。與Puppet、Chef等IT自動(dòng)化工具不同的是,Ansible不需要使用代理或其他自定義安全基礎(chǔ)設(shè)施,因此易于部署和使用。此外,它使用基于YAML格式的AnsiblePlaybook自動(dòng)化文件,可以讓用戶以接近英語(yǔ)的方式描述自動(dòng)化工作。Ansible基本架構(gòu)Ansible基本架構(gòu)中的核心概念如表所示:序號(hào)名稱描述1ControlNode控制節(jié)點(diǎn),安裝Ansible且用于管理遠(yuǎn)程節(jié)點(diǎn)(受管主機(jī))的系統(tǒng)都可以稱為控制節(jié)點(diǎn),控制節(jié)點(diǎn)通常使用SSH連接遠(yuǎn)程主機(jī)和設(shè)備2ManagedNode受管節(jié)點(diǎn)或者受管節(jié)點(diǎn),被Ansible控制節(jié)點(diǎn)管理的主機(jī)或設(shè)備3Inventory清單文件,用于存儲(chǔ)遠(yuǎn)程主機(jī)和設(shè)備的信息,如IP地址、主機(jī)名稱、組名等。Ansible通過(guò)清單文件來(lái)管理遠(yuǎn)程主機(jī)和設(shè)備4User使用Ansible的用戶,包括系統(tǒng)管理員、運(yùn)維工程師等5PlaybookAnsible的配置腳本文件,用于定義需要執(zhí)行的任務(wù)和操作6Public/PrivateCloudAnsible可以在公有云或私有云中運(yùn)行,可以管理云上的資源7PluginAnsible提供的插件,用于擴(kuò)展Ansible的功能,比如lookup插件、filter插件、callback插件、netconf插件等8ModuleAnsible模塊。模塊也可以理解成在受管節(jié)點(diǎn)(通常是遠(yuǎn)程系統(tǒng))上執(zhí)行自動(dòng)化任務(wù)的插件。Ansible內(nèi)置了大量的模塊,比如文件操作、包管理、用戶管理等模塊,用戶也可以使用Python或者PowerShell自行編寫模塊以執(zhí)行特定任務(wù)。通過(guò)Ansible模塊,可以實(shí)現(xiàn)對(duì)目標(biāo)系統(tǒng)的控制和配置9APIAnsible提供的API,可以通過(guò)腳本和程序來(lái)調(diào)用Ansible的功能10NetworkingAnsible支持管理網(wǎng)絡(luò)設(shè)備,如交換機(jī)、路由器等11Host被Ansible管理的主機(jī)或設(shè)備12CMDBAnsible可以將收集到的配置信息與其他CMDB(ConfigurationManagementDatabase,配置管理數(shù)據(jù)庫(kù))工具進(jìn)行集成,通過(guò)可視化方式來(lái)展示IT環(huán)境中的配置信息,使IT運(yùn)維團(tuán)隊(duì)能夠更好地了解整個(gè)IT環(huán)境的配置信息,便于計(jì)劃和管理IT資源謝謝Ansible自動(dòng)化概述任務(wù)2:Ansible安裝方式與目錄結(jié)構(gòu)01Ansible安裝方式Ansible安裝方式Ansible由若干個(gè)組件組成,包括ansible-core、ansible-galaxy、ansible-lint等,這些組件都是Ansible的一部分,并且能夠協(xié)同工作,為用戶提供更加強(qiáng)大和全面的自動(dòng)化運(yùn)維功能。ansible-core是Ansible的核心組件,包含Ansible的核心功能。對(duì)于控制節(jié)點(diǎn)(運(yùn)行Ansible的機(jī)器),可以安裝在具有Python3.9或更新版本的Linux發(fā)行版上,包括RHEL、Debian、Ubuntu、macOS和WindowsSubsystemforLinux(WSL)發(fā)行版下的Windows等,目前Windows本身不支持作為控制節(jié)點(diǎn)。受管節(jié)點(diǎn)(Ansible管理的機(jī)器)不需要安裝Ansible,但需要Python2.7或Python3.5~Python3.11來(lái)運(yùn)行Ansible庫(kù)代碼。控制節(jié)點(diǎn)和受管節(jié)點(diǎn)所需的Python的當(dāng)前和歷史版本如下:序號(hào)ansible-core版本控制節(jié)點(diǎn)Python版本受管節(jié)點(diǎn)Python版本12.11Python2.7、Python3.5~Python3.9Python2.6~Python2.7、Python3.5~Python3.922.12Python3.8~Python3.10Python2.6~Python2.7、Python3.5~Python3.1032.13Python3.8~Python3.10Python2.7、Python3.5~Python3.1042.14Python3.9~Python3.11Python2.7、Python3.5~Python3.11Ansible安裝方式Ansible可以安裝到RHEL、CentOS、Ubuntu、Debian、華為openEuler、麒麟等多個(gè)Linux發(fā)行版上。其主要的安裝方式有以下幾種:源碼安裝:通過(guò)下載Ansible的源碼并手動(dòng)編譯安裝,安裝目錄通常是用戶指定的目錄。pip安裝:通過(guò)Python的包管理器pip安裝Ansible,安裝目錄通常由包管理器默認(rèn)指定。包管理器安裝:使用不同Linux發(fā)行版自帶的包管理器(如apt、yum等)安裝Ansible,安裝目錄通常由包管理器默認(rèn)指定。git安裝:通過(guò)gitclone的方式安裝Ansible。yum和apt包管理器安裝安裝Ansible以為Ubuntu22系統(tǒng)為例:添加官方的Ansible倉(cāng)庫(kù)。sudoaptupdatesudoaptinstallsoftware-properties-commonsudoadd-apt-repository--yes--updateppa:ansible/ansible安裝Ansible:sudoaptinstallansible驗(yàn)證安裝ansible--version以CentOSStream9和Rocky9系統(tǒng)為例:添加Ansible倉(cāng)庫(kù):sudoyuminstallepel-release安裝Ansible:sudoyuminstallansible驗(yàn)證安裝ansible--version目前主流的Linux發(fā)行版,廣泛使用的軟件包管理工具是yum和apt,它們?yōu)長(zhǎng)inux系統(tǒng)的軟件安裝、升級(jí)和管理提供了命令行界面,并基于不同的包管理系統(tǒng)設(shè)計(jì),以滿足特定用戶群體的需求。pip包管理器安裝Ansible安裝Python3的包管理器pip,并更新pip版本[rhce@control~]$sudoyum-yinstallpython3-pip[rhce@control~]$pip3install--upgradepip使用pip包管理器安裝Ansible

[rhce@control~]$pip3installansible--user使用ansible--version命令查看Ansible版本信息。[rhce@control~]$ansible--version配置pip鏡像站點(diǎn)為清華大學(xué)的鏡像站點(diǎn),加快Python包的下載和安裝速度,[rhce@control~]$mkdir~/.pip[rhce@control~]$vim~/.pip/pip.conf[global]timeout=6000index-url=/simpletrusted-host=pip是Python附帶的包管理器,允許用戶安裝和管理Python庫(kù)及模塊,也可用于安裝和管理不屬于Python標(biāo)準(zhǔn)庫(kù)的附加包,它可以在線搜索Python包索引PyPI庫(kù)中的軟件包,并將它們安裝到系統(tǒng)中。常見(jiàn)的Linux發(fā)行版,比如紅帽RHEL、Fedora、CentOSStream、Rocky、華為openEuler、Ubuntu等,都可以使用pip安裝ansible。02目錄結(jié)構(gòu)Ansible的主要目錄結(jié)構(gòu)安裝Ansible的步驟需要根據(jù)操作系統(tǒng)及其版本來(lái)確定,使用不同的方式安裝和部署Ansible,會(huì)導(dǎo)致軟件安裝目錄、配置文件、可執(zhí)行命令、插件等的存放位置不同。以RHEL、CentOS、華為openEuler等Linux發(fā)行版包管理器為例,使用yum方式安裝Ansible的主要目錄結(jié)構(gòu)如下:/etc/ansible:存儲(chǔ)系統(tǒng)級(jí)別的配置文件,如ansible.cfg、hosts等。/usr/share/ansible:存儲(chǔ)Ansible的文檔、示例、插件等。/usr/bin/ansible:存儲(chǔ)Ansible命令的可執(zhí)行文件,例如ansible、ansible-config、ansible-galaxy、ansible-playbook、ansible-vault、ansible-doc、ansible-inventory等。/usr/lib/python×.×/site-packages/ansible:存儲(chǔ)Ansible的Python模塊。其中,×.×代表Python的版本號(hào)。這個(gè)目錄中存儲(chǔ)了Ansible所需要的Python模塊和庫(kù),這些模塊和庫(kù)用于在Ansible的命令和腳本中進(jìn)行Python代碼的執(zhí)行。~/.ansible:用戶級(jí)別的配置文件和目錄,如ansible.cfg、roles等。在RHEL、CentOS、華為openEuler等Linux發(fā)行版中,可以使用rpm-qlansble命令,在Debian、Ubuntu等Linux發(fā)行版中,可以使用dpkg-Lansible命令,以查詢Ansible的安裝路徑、配置文件等。Ansible的主要目錄結(jié)構(gòu)也可以通過(guò)ansible--version命令查看,該命令輸出當(dāng)前Ansible的版本號(hào)、配置文件路徑、模塊搜索路徑、Python模塊位置、Ansible集合(collection)和角色(role)位置以及Ansible可執(zhí)行文件位置等信息。[rhce@control~]$ansible--versionansible[core2.16.5]configfile=/etc/ansible/ansible.cfgconfiguredmodulesearchpath=['/home/rhca/.ansible/plugins/modules','/usr/share/ansible/plugins/modules']ansiblepythonmodulelocation=/usr/lib/python3/dist-packages/ansibleansiblecollectionlocation=/home/rhca/.ansible/collections:/usr/share/ansible/collectionsexecutablelocation=/usr/bin/ansiblepythonversion=3.10.12(main,Nov202023,15:14:05)[GCC11.4.0](/usr/bin/python3)jinjaversion=3.0.3libyaml=TrueAnsible的主要目錄結(jié)構(gòu)ansible--version輸出信息:序號(hào)名稱描述1configfile當(dāng)前使用的Ansible配置文件的路徑。在執(zhí)行Ansible命令時(shí),Ansible會(huì)按照一定的優(yōu)先級(jí)查找配置文件。這個(gè)文件包含Ansible的許多全局設(shè)置,如連接方式、插件路徑、環(huán)境變量等2configuredmodulesearchpathAnsible模塊搜索的配置路徑。這個(gè)路徑是在Ansible配置文件(ansible.cfg)中指定的,是Ansible在執(zhí)行時(shí)用來(lái)查找模塊的路徑。如果沒(méi)有配置,那么Ansible會(huì)使用默認(rèn)的模塊搜索路徑3ansiblepythonmodulelocationAnsible的Python模塊的位置,包含Ansible核心模塊、插件和其他相關(guān)Python庫(kù)。這個(gè)路徑是Ansible在運(yùn)行時(shí)尋找和加載Python模塊的重要路徑。4AnsiblecollectionlocationAnsible集合文件所在的位置。Ansible集合是一組功能相關(guān)的Ansible模塊和資源的集合,通常是由第三方組織或個(gè)人開(kāi)發(fā)并發(fā)布的。這些集合可以通過(guò)AnsibleGalaxy工具安裝和管理5executablelocationAnsible可執(zhí)行文件的位置6pythonversionPython的版本信息7jinjaversionJinja模板引擎的版本號(hào),Jinja是Ansible用于模板處理的引擎,它允許在AnsiblePlaybooks中使用模板語(yǔ)法8libyaml系統(tǒng)支持YAML解析庫(kù)libyaml謝謝Ansible自動(dòng)化概述任務(wù)3:清單文件目錄/Contents0102清單文件簡(jiǎn)介清單文件格式03在清單文件中定義別名04清單文件變量01清單文件簡(jiǎn)介清單文件簡(jiǎn)介IT基礎(chǔ)設(shè)施環(huán)境中存在大量的服務(wù)器、云主機(jī)等設(shè)備。清單(inventory)文件是Ansible用來(lái)描述目標(biāo)主機(jī)和主機(jī)組的文件。在清單文件中,用戶可以指定每個(gè)主機(jī)的IP地址、主機(jī)名、組名、變量、連接方式等信息。Ansible使用清單文件來(lái)確定要管理的主機(jī)集合,以及在執(zhí)行任務(wù)時(shí)如何與這些主機(jī)進(jìn)行交互,還可以使用模式(pattern)來(lái)選擇清單文件中的主機(jī)或組,針對(duì)IT基礎(chǔ)設(shè)施中的多個(gè)受管節(jié)點(diǎn)執(zhí)行自動(dòng)化任務(wù)。清單文件簡(jiǎn)介Ansible的清單文件有靜態(tài)清單文件和動(dòng)態(tài)清單文件兩種類型。靜態(tài)清單文件:靜態(tài)清單文件可以通過(guò)文本文件來(lái)定義,在文件中直接列出要管理的主機(jī)的主機(jī)名或IP地址。靜態(tài)清單文件是Ansible常見(jiàn)的清單文件類型,這種清單文件適用于主機(jī)數(shù)量固定,且這些主機(jī)的IP地址或主機(jī)名不會(huì)經(jīng)常發(fā)生變化的環(huán)境。動(dòng)態(tài)清單文件:動(dòng)態(tài)清單文件可以根據(jù)需要在運(yùn)行自動(dòng)化任務(wù)時(shí)由外部腳本或程序生成,動(dòng)態(tài)清單文件使用外部數(shù)據(jù)源,如CMDB或云平臺(tái)API來(lái)動(dòng)態(tài)查找主機(jī),并生成清單文件。動(dòng)態(tài)清單文件適用于管理數(shù)量較多、動(dòng)態(tài)變化的主機(jī),比如AmazonEC2實(shí)例、VMware虛擬機(jī)、OpenStack實(shí)例等。Ansible也提供了一些官方的清單插件用于動(dòng)態(tài)生成清單文件。清單文件簡(jiǎn)介最簡(jiǎn)單的清單文件是一個(gè)包含主機(jī)和組列表的文件。該文件的默認(rèn)位置為/etc/ansible/hosts。通常的做法是不使用該文件,而在Ansible配置文件中指定一個(gè)清單文件的位置,或者利用ansible和ansible-playbook命令來(lái)運(yùn)行Ansible臨時(shí)命令(即AdHoc命令)和Playbook,可使用-i<path>選項(xiàng)指定不同的清單文件,其中path是所需清單文件的路徑。清單文件定義了Ansible管理的一批主機(jī),這些主機(jī)也可以分配到組中,以進(jìn)行集中管理。組可以包含子組,主機(jī)也可以是多個(gè)組的成員。清單文件還可以設(shè)置應(yīng)用到它所定義的主機(jī)和組的變量。02清單文件格式清單文件簡(jiǎn)介Ansible的清單文件主要有兩種格式,即INI格式和YAML格式,廣泛應(yīng)用于生產(chǎn)環(huán)境中。INI格式:INI格式的清單文件由若干組和主機(jī)的信息構(gòu)成,具有節(jié)(section)和鍵值對(duì)的結(jié)構(gòu)。它使用簡(jiǎn)單的鍵值對(duì)來(lái)表示配置項(xiàng),每個(gè)鍵值對(duì)由一個(gè)名稱(鍵)和一個(gè)值組成,以等號(hào)“=”分隔。鍵值對(duì)可以分組存儲(chǔ)在節(jié)中,每個(gè)節(jié)用方括號(hào)“[]”標(biāo)識(shí)。每個(gè)節(jié)代表一個(gè)主機(jī)組,每個(gè)鍵值對(duì)代表一個(gè)主機(jī)及其相關(guān)信息。YAML格式:YAML是一種輕量級(jí)的數(shù)據(jù)序列化格式,非常簡(jiǎn)潔且易于閱讀,適合用于維護(hù)規(guī)模更大的主機(jī)信息。其語(yǔ)法基于縮進(jìn)(indentation),YAML中的鍵值對(duì)使用冒號(hào)“:”分隔,all關(guān)鍵字表示一個(gè)包含所有主機(jī)的組,hosts關(guān)鍵字表示主機(jī)信息。清單文件簡(jiǎn)介INI格式的清單文件基本格式如下:01[group1]0102[group2]0304[group_name1]host1ansible_host=01host2ansible_host=02[group_name2]host3ansible_host=03host4ansible_host=04在示例中,INI格式的清單文件包含受管主機(jī)的主機(jī)名或IP地址的列表,如、、0、1分別表示4個(gè)主機(jī),且不屬于任何主機(jī)組。group1和group2是兩個(gè)主機(jī)組,用于對(duì)主機(jī)進(jìn)行分類。group1中包含、、01、02這4個(gè)主機(jī),group2中包含、、03、04這4個(gè)主機(jī)。group_name1和group_name2是兩個(gè)主機(jī)組,每個(gè)組中有兩個(gè)主機(jī),變量ansible_host用于指定主機(jī)的IP地址。清單文件簡(jiǎn)介YAML格式的清單文件基本格式如下:all:hosts:::0:1:children:group1:hosts:::01:02:group2:hosts:::03:04:在示例中,頂層的all表示Ansible清單的默認(rèn)組,它包含所有的主機(jī)和主機(jī)組。hosts表示一個(gè)包含所有主機(jī)的鍵,每個(gè)主機(jī)都是一個(gè)鍵值對(duì),其中鍵是主機(jī)的名稱或IP地址,值可以為空或是一個(gè)字典。children表示包含所有主機(jī)組的鍵。每個(gè)主機(jī)組都是一個(gè)鍵值對(duì),其中鍵是組的名稱,值是一個(gè)包含所有該組主機(jī)的鍵值對(duì)字典。在本示例中,group1中包含、、01和02這4個(gè)主機(jī)。同樣,group2中包含、、03和04這4個(gè)主機(jī)。group_name1:hosts:host1:ansible_host:01host2:ansible_host:02group_name2:hosts:host3:ansible_host:03host4:ansible_host:04all和ungrouped在Ansible清單文件中,有兩個(gè)主機(jī)組始終存在,all主機(jī)組包含清單文件中定義的所有主機(jī),ungrouped主機(jī)組表示在清單文件中未被分組的主機(jī)。all和ungrouped是隱式的,不會(huì)出現(xiàn)在清單文件中。在上面的清單文件中,all主機(jī)組將包含host1、host2和host3這3個(gè)主機(jī),而ungrouped主機(jī)組包含這個(gè)主機(jī)。[webserver]host1host2[database]host3嵌套組在Ansible清單文件中,可以定義嵌套組,其中父組包含多個(gè)子組。這可以通過(guò)在清單文件中創(chuàng)建一個(gè)組并在其中創(chuàng)建另一個(gè)組來(lái)實(shí)現(xiàn)。例如,用戶可以創(chuàng)建一個(gè)名為webserver的父組,該組包含兩個(gè)分別名為app1和app2的子組,每個(gè)子組都包含一組主機(jī)。通過(guò)嵌套的方式可以指定父組來(lái)執(zhí)行任務(wù)或應(yīng)用模板,以同時(shí)處理多個(gè)主機(jī)。在INI格式中,可以在方括號(hào)中定義父組,并用冒號(hào)分隔父組的名稱和children屬性。在上述示例中,group_name是父組的名稱,group1和group2是子組的名稱,所有子組中的主機(jī)都會(huì)被歸到父組中。[group_name:children]group1group2添加主機(jī)范圍如果有很多具有相似模式的主機(jī),可以通過(guò)指定數(shù)值或字母范圍來(lái)簡(jiǎn)化Ansible主機(jī)清單文件。指定范圍的語(yǔ)法格式如下:host[start:end:step]#host可以是主機(jī)名或IP地址,start表示起始數(shù)字,end表示結(jié)束數(shù)字,step表示步長(zhǎng)。范圍匹配start~end(含)的所有值匹配名為~的50個(gè)機(jī)器:server[01:20].www[01:50].匹配名為~的所有主機(jī):匹配/24~/24網(wǎng)絡(luò)中的所有IPv4地址(~55):192.168.[100:105].[0:255]添加主機(jī)范圍匹配名為、、的3個(gè)主機(jī):[webservers]www[01:30:2].[a:c].在定義主機(jī)的數(shù)值范圍時(shí),可以指定序列號(hào)之間的增量,也就是以X:Y:Z的格式來(lái)指定序列號(hào)范圍。其中,X表示起始值,Y表示水結(jié)束值,Z表示步長(zhǎng)。www[01:30:2]表示www01~www30,步長(zhǎng)為2的所有主機(jī),將匹配www01、www03、www05、……、www49這些主機(jī),但不匹配www00、www02、……、www50這些主機(jī),這樣就可以選擇性地包含或排除某些主機(jī)03在清單文件中定義別名在清單文件中定義別名可以在清單文件中使用主機(jī)變量定義主機(jī)別名,別名是自定義的名稱,用于表示主機(jī)。引用主機(jī)時(shí)可直接調(diào)用別名,而無(wú)須知道它們的完整名稱。[web_servers]app1_hostansible_host=app2_hostansible_host=在上述示例中,可以使用別名app1_host和app2_host分別代替實(shí)際的主機(jī)名稱和。比如在運(yùn)行Playbook時(shí),使用app1_host來(lái)指定主機(jī),Ansible會(huì)自動(dòng)將其解析為。04清單文件變量清單文件變量在清單文件中指定Playbook使用的變量,這些變量?jī)H應(yīng)用到特定的主機(jī)或主機(jī)組。通常,在特殊目錄中定義清單文件變量,而不直接在清單文件中定義。[groupname]node1http_port=82maxRequestsPerChild=202node2http_port=92maxRequestsPerChild=303Ansible使用INI格式來(lái)定義清單文件。在清單文件中,我們可以設(shè)置主機(jī)或主機(jī)組變量。包含主機(jī)變量的INI格式清單文件:謝謝Ansible自動(dòng)化概述任務(wù)4:Ansible配置文件及主要參數(shù)目錄/Contents01Ansible配置文件02ansible.cfg主要參數(shù)01Ansible配置文件Ansible配置文件Ansible為管理控制節(jié)點(diǎn)和受管節(jié)點(diǎn)之間的交互行為,提供了多種工具,包括INI格式的ansible.cfg文件、環(huán)境變量、命令行選項(xiàng)、Playbook的關(guān)鍵字和變量等。在所有這些工具中,每個(gè)工具的優(yōu)先級(jí)都不同,Ansible會(huì)按照優(yōu)先級(jí)查找配置信息。常見(jiàn)的方法是使用配置文件ansible.cfg來(lái)控制Ansible的行為。當(dāng)Ansible執(zhí)行時(shí),它會(huì)按照以下順序搜索并使用配置文件:如果設(shè)置了環(huán)境變量ANSIBLE_CONFIG,則使用該變量指定的文件作為配置文件。比如/opt/ansible/ansible.cfg。如果當(dāng)前目錄中存在ansible.cfg文件,則使用該文件作為配置文件,如/home/rhce/auto-manager/ansible.cfg。如果用戶家目錄中存在.ansible.cfg文件,則使用該文件作為配置文件,如/home/rhce/.ansible.cfg。如果在上述3個(gè)位置都沒(méi)有找到配置文件,則使用默認(rèn)配置文件/etc/ansible/ansible.cfg。Ansible配置文件用戶可以在控制節(jié)點(diǎn)上的多個(gè)位置選擇配置文件,按照最高優(yōu)先級(jí)到最低優(yōu)先級(jí)(最容易被覆蓋)的順序,ansible.cfg文件將按以下順序進(jìn)行搜索:ANSIBLE_CONFIG環(huán)境變量指定的ansible.cfg文件→執(zhí)行Ansible命令的目錄中的ansible.cfg文件→當(dāng)前用戶家目錄中~/.ansible.cfg→/etc/ansible/ansible.cfg。設(shè)置ANSIBLE_CONFIG環(huán)境變量,使用export命令可以將ANSIBLE_CONFIG環(huán)境變量設(shè)置為指定的配置文件路徑:[rhce@ansibleplaybook]$exportANSIBLE_CONFIG=/opt/project/ansile/ansible.cfg運(yùn)行以下命令檢查Ansible是否使用了新的配置文件路徑:[rhce@ansibleplaybook]$ansible--version|grep-icfgconfigfile=/opt/project/ansile/ansible.cfg如果輸出中顯示了新的配置文件路徑,則表示ANSIBLE_CONFIG環(huán)境變量已成功設(shè)置。使用export命令和-n選項(xiàng)可以取消ANSIBLE_CONFIG環(huán)境變量的設(shè)置:[rhce@ansibleplaybook]$export-nANSIBLE_CONFIG=/opt/project/ansile/ansible.cfg02ansible.cfg主要參數(shù)ansible.cfg文件ansible.cfg是Ansible的主配置文件,它可以控制Ansible的行為和運(yùn)行方式。ansible-config命令用于查看和管理Ansible的配置信息。通過(guò)這個(gè)命令,用戶可以獲取Ansible的配置文件路徑、查看配置項(xiàng)的值、修改配置項(xiàng)的值等。ansibe.cfg文件采用INI格式存儲(chǔ)配置數(shù)據(jù)。在文件中,用方括號(hào)標(biāo)識(shí)的部分稱為配置段。每個(gè)配置段都有一組相關(guān)的配置選項(xiàng),用于控制Ansible的不同行為和功能。#生成一個(gè)禁用了所有默認(rèn)配置的ansible.cfg文件ansible-configinit--disabled>ansible.cfg#生成禁用了所有默認(rèn)配置的ansible.cfg文件,其中包含所有可能的配置項(xiàng)ansible-configinit--disabled-tall>ansible.cfgansible.cfg文件ansible.cfg常用配置段詳細(xì)信息:序號(hào)配置段名稱描述1[defaults]默認(rèn)配置段,該配置段設(shè)置的值會(huì)作為全局默認(rèn)值,包含一些常用的配置指令,如清單文件路徑、遠(yuǎn)程用戶、主機(jī)密鑰檢查等參數(shù)。主要的指令有inventory、remote_user、ask_pass、gather_facts、host_key_checking等2[privilege_escalation]特權(quán)升級(jí)配置段,包含一些特權(quán)升級(jí)相關(guān)的配置指令,如使用sudo或su提升執(zhí)行權(quán)限等。主要的指令有become、become_method、become_user、become_ask_pass等3[persistent_connection]持久化連接配置段,包含一些持久化連接相關(guān)的配置指令,如ControlMaster、ControlPath和ControlPersist等指令4[connection]默認(rèn)連接配置段,包含一些連接類型相關(guān)的配置指令ControlMaster、ControlPath和ControlPersist等指令5[selinux]SELinux配置段,包含一些SELinux相關(guān)的配置選項(xiàng),如在執(zhí)行任務(wù)時(shí)是否啟用SELinux策略等ansible.cfg文件ansible.cfg常用配置段詳細(xì)信息:序號(hào)配置段名稱描述6[diff]差異配置段,包含一些控制任務(wù)運(yùn)行時(shí)顯示差異信息的配置選項(xiàng),如任務(wù)運(yùn)行時(shí)是否顯示差異信息等7[inventory]清單文件配置段,包含一些與Ansible清單文件相關(guān)的配置選項(xiàng),如清單文件路徑、默認(rèn)的清單文件名等8[galaxy]Galaxy配置段,包含一些與AnsibleGalaxy相關(guān)的配置選項(xiàng),如默認(rèn)的角色、下載路徑等9[netconf_connection]NETCONF連接配置段,包含一些與NETCONF連接相關(guān)的配置選項(xiàng),如默認(rèn)的NETCONF端口號(hào)和用戶名等10[paramiko_connection]Paramiko連接配置段,Paramiko是一個(gè)用于實(shí)現(xiàn)SSH協(xié)議的Python庫(kù),是Ansible的一種連接插件。該配置段包含banner_timeout、look_for_keys、use_rsa_sha2_algorithms等指令11[jinja2]Jinja2配置段,包含一些與Jinja2相關(guān)的配置選項(xiàng),如Jinja2模板文件路徑等12[tags]標(biāo)簽配置段,包含一些與標(biāo)簽相關(guān)的配置選項(xiàng),如默認(rèn)的標(biāo)簽列表等連接設(shè)置Ansible采用無(wú)代理模式自動(dòng)化管理受管節(jié)點(diǎn),默認(rèn)情況下,Ansible使用SSH連接受管主機(jī)??刂艫nsible如何連接受管主機(jī)的指令在[defaults]部分設(shè)置。當(dāng)Ansible控制主機(jī)連接受管主機(jī)時(shí),默認(rèn)使用的用戶名與運(yùn)行Ansible命令的本地用戶的名稱相同。若要指定不同的遠(yuǎn)程用戶,需要將remote_user設(shè)置為該用戶的名稱。[defaults]inventory=./inventoryremote_user=rhceask_pass=false如果設(shè)置指令ask_pass=true,遠(yuǎn)程連接的用戶需要輸入賬戶和密碼。如果Ansible控制節(jié)點(diǎn)的管理用戶配置了SSH私鑰,通過(guò)指令ask_pass=false,在受管主機(jī)上進(jìn)行遠(yuǎn)程用戶身份驗(yàn)證,可以實(shí)現(xiàn)免密碼登錄。sudo提權(quán)sudo是一種在Linux操作系統(tǒng)中執(zhí)行特權(quán)命令的方式。使用sudo可以讓普通用戶在需要時(shí)執(zhí)行root管理用戶權(quán)限級(jí)別的操作,而不需要切換到root用戶。在使用sudo提權(quán)時(shí),用戶需要在命令前面加上sudo,系統(tǒng)會(huì)提示用戶輸入自己

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論