版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Linux自動化運維項目6:Ansible自動化概述
學習目標【知識目標】了解自動化和IT基礎(chǔ)設(shè)施自動化基本概念。了解Ansible基本概念和基本架構(gòu)。了解Ansible清單文件和配置文件主要參數(shù)的功能?!炯寄苣繕恕空莆誂nsible安裝方法,能夠在RHEL、Ubuntu等Linux發(fā)行版中安裝Ansible。掌握Ansible清單文件和配置文件主要參數(shù)的使用方法。掌握清單文件的構(gòu)建方法和ansible.cfg文件的基本配置?!舅刭|(zhì)目標】培養(yǎng)讀者的信息素養(yǎng)和學習能力,使其能夠靈活運用正確的學習方法和技巧,快速掌握新知識和技能,并不斷學習和進步。培養(yǎng)讀者的職業(yè)道德素養(yǎng),使其明確在自動化運維中的職業(yè)責任與義務(wù),引導讀者樹立正確的職業(yè)態(tài)度。培養(yǎng)讀者嚴謹?shù)倪壿嬎季S能力,使其在解決問題時使用邏輯思維,提高自主學習能力。Ansible自動化概述任務(wù)1:Ansible簡介目錄/Contents0203Ansible基本概念A(yù)nsible基本架構(gòu)01IT基礎(chǔ)設(shè)施自動化01IT基礎(chǔ)設(shè)施自動化自動化自動化是指通過技術(shù)手段,在減少人工協(xié)助的情況下執(zhí)行各項任務(wù),使工作或過程自動完成。目前,自動化已經(jīng)應(yīng)用于各種行業(yè)和領(lǐng)域。自動化技術(shù)和人工智能經(jīng)常一起使用,以實現(xiàn)更高效、更準確和更智能的自動化過程。通過結(jié)合機器學習和自動化技術(shù),可以實現(xiàn)自動化的文本分類、圖像識別和語音識別等任務(wù)。自動化可以幫助用戶加快流程變革和環(huán)境拓展,構(gòu)建持續(xù)集成、持續(xù)交付和持續(xù)部署(CI/CD)工作流。自動化的種類有很多,其中包括IT自動化、業(yè)務(wù)自動化、機器人流程自動化、工業(yè)自動化、AI應(yīng)用部署和管理自動化等。IT基礎(chǔ)設(shè)施自動化IT基礎(chǔ)設(shè)施是指企業(yè)運行和管理IT環(huán)境所需的基礎(chǔ)組件和技術(shù),這些基礎(chǔ)組件和技術(shù)包括硬件、軟件、網(wǎng)絡(luò)、操作系統(tǒng)、安全設(shè)備和數(shù)據(jù)存儲等,它們共同提供各種IT服務(wù)和解決方案。隨著云計算技術(shù)的快速發(fā)展,計算資源和服務(wù)變得更加靈活和可擴展,IT基礎(chǔ)設(shè)施的規(guī)模也在不斷擴大?,F(xiàn)代數(shù)據(jù)中心通常包含數(shù)百甚至數(shù)千個機架,以及數(shù)以萬計的服務(wù)器、存儲設(shè)備和網(wǎng)絡(luò)設(shè)備等。IT基礎(chǔ)設(shè)施已經(jīng)從傳統(tǒng)數(shù)據(jù)中心中的物理硬件逐步轉(zhuǎn)移到虛擬化、容器、云計算等混合云或多云環(huán)境中。云計算技術(shù)的變革推動了軟件架構(gòu)和開發(fā)模式的變革,應(yīng)用發(fā)布流程和發(fā)布頻率發(fā)生了很大的變化。IT基礎(chǔ)設(shè)施自動化為了滿足復(fù)雜多變的業(yè)務(wù)要求,現(xiàn)代數(shù)據(jù)中心采用了各種自動化和智能化技術(shù),以提高自身的的效率和可管理性。例如,自動化的服務(wù)器配置、存儲管理和網(wǎng)絡(luò)管理可以大大減少人工干預(yù),減少人為錯誤和故障,提高數(shù)據(jù)中心的效率和可靠性。通過Ansible、Puppet、SaltStack、Terraform等自動化部署和配置工具,可自動部署和配置應(yīng)用程序及其相關(guān)組件;基于Jenkins、GitLab等持續(xù)集成和持續(xù)部署工具,可自動對軟件進行測試、構(gòu)建和部署,從而提高軟件的質(zhì)量和開發(fā)效率。這種自動化部署和配置可以大大減少發(fā)布流程中的人工干預(yù),提高發(fā)布效率和質(zhì)量。IT基礎(chǔ)設(shè)施自動化為了實現(xiàn)IT基礎(chǔ)設(shè)施自動化,基礎(chǔ)設(shè)施即代碼應(yīng)運而生?;A(chǔ)設(shè)施即代碼(InfrastructureasCode,IaC)是通過代碼而非手動流程來管理和置備基礎(chǔ)設(shè)施的方法。它使用編碼語言(如Ruby、Python)來自動化IT基礎(chǔ)設(shè)施的配置,將IT基礎(chǔ)設(shè)施的配置、部署、運維等操作以代碼的形式進行編寫和管理。例如開發(fā)人員或運維人員每次想要開發(fā)、測試或部署軟件時,手動配置和管理服務(wù)器、操作系統(tǒng),數(shù)據(jù)庫連接、存儲和其他基礎(chǔ)設(shè)施元素的需求,可以使用代碼定義、配置和管理軟件基礎(chǔ)設(shè)施來實現(xiàn),這樣可以提高一致性并減少錯誤和手動配置,能夠以更快的速度、更低的風險和更低的成本開發(fā)、部署和擴展云應(yīng)用程序。02Ansible基本概念A(yù)nsible基本概念A(yù)nsible是一個開源IT自動化引擎,能夠自動化置備、配置管理、應(yīng)用部署、編排等IT流程,通過軟件工程的方法重新定義和描述IT設(shè)施基礎(chǔ)設(shè)施,用自動化技術(shù)替代重復(fù)和手動操作,可提高工作效率并降低人工干預(yù)的風險。Ansible起源于計算機工程師MichaelDeHaan(邁克爾·德哈恩)在2012年發(fā)起的AnsibleWorks項目。DeHaan曾經(jīng)在紅帽公司工作,離開紅帽公司后,隨著云計算技術(shù)和DevOps的流行,他認為當時市面上的自動化工具都過于復(fù)雜,希望能夠開發(fā)一種簡單易用的自動化運維工具。德哈恩選擇用Python語言開發(fā)Ansible,并在GitHub上開源了項目,且在開發(fā)過程中汲取了Cobbler、Puppet、Chef等項目開發(fā)的經(jīng)驗教訓。在接下來的幾年中,Ansible得到了廣泛的關(guān)注和使用,并成為自動化運維領(lǐng)域的一個知名項目。在2015年,紅帽公司將Ansible作為核心產(chǎn)品之一收入旗下,并繼續(xù)推廣和開發(fā)此工具。在收購Ansible后,紅帽公司不僅繼續(xù)維護Ansible的開源版本,還推出了商業(yè)版本,通過制定企業(yè)級自動化方案,為企業(yè)用戶提供更多的支持和服務(wù)。Ansible可應(yīng)用于絕大多數(shù)Linux發(fā)行版中,如RHEL、CentOS、openSUSE、Debian、Ubuntu、華為openEuler等系統(tǒng)。通過不同的模塊和插件,Ansible還可以用于Windows、FreeBSD、macOS等操作系統(tǒng)。紅帽公司在2021年12月正式發(fā)布了AnsibleAutomationPlatform(AAP)。這個平臺是在現(xiàn)有的Ansible開源項目的基礎(chǔ)上構(gòu)建的,增加了更多面向企業(yè)的功能和集成。AAP的推出是紅帽公司在擴展Ansible的影響力和能力方面的一個重要步驟,特別是在企業(yè)環(huán)境中,通過提供一整套工具來支持各種IT領(lǐng)域的自動化。AAP可以實現(xiàn)紅帽產(chǎn)品緊密集成,如RedHatEnterpriseLinux、RedHatOpenShift和RedHatOpenStack,提供一個無縫的自動化體驗跨越整個IT堆棧。還支持與多個云服務(wù)提供商和技術(shù)解決方案的集成,增強了其多云和混合云環(huán)境中的應(yīng)用能力。Ansible基本概念A(yù)nsible使用簡單的YAML來編寫配置文件,不需要編寫復(fù)雜的代碼。簡單易用Ansible不需要在目標系統(tǒng)上安裝任何代理軟件,可以基于SSH進行遠程操作。無須安裝客戶端Ansible可以管理各類系統(tǒng)和網(wǎng)絡(luò)設(shè)備,支持多種操作系統(tǒng),還可以進行多種類型的任務(wù)自動化。高效實用Ansible提供大量的模塊、插件、角色、集合并行化執(zhí)行操作,可管理大規(guī)模的服務(wù)器和網(wǎng)絡(luò)設(shè)備,完成大規(guī)模部署任務(wù)。支持大規(guī)模部署:Ansible提供可讀性高的配置文件,使用版本控制工具,易于維護和回滾。易于維護Ansible支持多種安全機制,以保護機密信息不被竊取或泄露。Ansible支持密鑰驗證和TLS/SSL加密來確保數(shù)據(jù)傳輸?shù)陌踩?,可以使用ansible-vault來加密配置文件中的敏感信息。安全性Ansible的設(shè)計目標如下:Ansible基本概念03Ansible基本架構(gòu)Ansible基本架構(gòu)Ansible可以滿足自動化云環(huán)境的設(shè)置、配置管理、應(yīng)用程序部署、內(nèi)部服務(wù)編排等IT需求。Ansible被設(shè)計用于多層部署,通過描述所有系統(tǒng)的相互關(guān)系將IT基礎(chǔ)設(shè)施代碼化,以實現(xiàn)對復(fù)雜的IT環(huán)境的管理。與Puppet、Chef等IT自動化工具不同的是,Ansible不需要使用代理或其他自定義安全基礎(chǔ)設(shè)施,因此易于部署和使用。此外,它使用基于YAML格式的AnsiblePlaybook自動化文件,可以讓用戶以接近英語的方式描述自動化工作。Ansible基本架構(gòu)Ansible基本架構(gòu)中的核心概念如表所示:序號名稱描述1ControlNode控制節(jié)點,安裝Ansible且用于管理遠程節(jié)點(受管主機)的系統(tǒng)都可以稱為控制節(jié)點,控制節(jié)點通常使用SSH連接遠程主機和設(shè)備2ManagedNode受管節(jié)點或者受管節(jié)點,被Ansible控制節(jié)點管理的主機或設(shè)備3Inventory清單文件,用于存儲遠程主機和設(shè)備的信息,如IP地址、主機名稱、組名等。Ansible通過清單文件來管理遠程主機和設(shè)備4User使用Ansible的用戶,包括系統(tǒng)管理員、運維工程師等5PlaybookAnsible的配置腳本文件,用于定義需要執(zhí)行的任務(wù)和操作6Public/PrivateCloudAnsible可以在公有云或私有云中運行,可以管理云上的資源7PluginAnsible提供的插件,用于擴展Ansible的功能,比如lookup插件、filter插件、callback插件、netconf插件等8ModuleAnsible模塊。模塊也可以理解成在受管節(jié)點(通常是遠程系統(tǒng))上執(zhí)行自動化任務(wù)的插件。Ansible內(nèi)置了大量的模塊,比如文件操作、包管理、用戶管理等模塊,用戶也可以使用Python或者PowerShell自行編寫模塊以執(zhí)行特定任務(wù)。通過Ansible模塊,可以實現(xiàn)對目標系統(tǒng)的控制和配置9APIAnsible提供的API,可以通過腳本和程序來調(diào)用Ansible的功能10NetworkingAnsible支持管理網(wǎng)絡(luò)設(shè)備,如交換機、路由器等11Host被Ansible管理的主機或設(shè)備12CMDBAnsible可以將收集到的配置信息與其他CMDB(ConfigurationManagementDatabase,配置管理數(shù)據(jù)庫)工具進行集成,通過可視化方式來展示IT環(huán)境中的配置信息,使IT運維團隊能夠更好地了解整個IT環(huán)境的配置信息,便于計劃和管理IT資源謝謝Ansible自動化概述任務(wù)2:Ansible安裝方式與目錄結(jié)構(gòu)01Ansible安裝方式Ansible安裝方式Ansible由若干個組件組成,包括ansible-core、ansible-galaxy、ansible-lint等,這些組件都是Ansible的一部分,并且能夠協(xié)同工作,為用戶提供更加強大和全面的自動化運維功能。ansible-core是Ansible的核心組件,包含Ansible的核心功能。對于控制節(jié)點(運行Ansible的機器),可以安裝在具有Python3.9或更新版本的Linux發(fā)行版上,包括RHEL、Debian、Ubuntu、macOS和WindowsSubsystemforLinux(WSL)發(fā)行版下的Windows等,目前Windows本身不支持作為控制節(jié)點。受管節(jié)點(Ansible管理的機器)不需要安裝Ansible,但需要Python2.7或Python3.5~Python3.11來運行Ansible庫代碼。控制節(jié)點和受管節(jié)點所需的Python的當前和歷史版本如下:序號ansible-core版本控制節(jié)點Python版本受管節(jié)點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、麒麟等多個Linux發(fā)行版上。其主要的安裝方式有以下幾種:源碼安裝:通過下載Ansible的源碼并手動編譯安裝,安裝目錄通常是用戶指定的目錄。pip安裝:通過Python的包管理器pip安裝Ansible,安裝目錄通常由包管理器默認指定。包管理器安裝:使用不同Linux發(fā)行版自帶的包管理器(如apt、yum等)安裝Ansible,安裝目錄通常由包管理器默認指定。git安裝:通過gitclone的方式安裝Ansible。yum和apt包管理器安裝安裝Ansible以為Ubuntu22系統(tǒng)為例:添加官方的Ansible倉庫。sudoaptupdatesudoaptinstallsoftware-properties-commonsudoadd-apt-repository--yes--updateppa:ansible/ansible安裝Ansible:sudoaptinstallansible驗證安裝ansible--version以CentOSStream9和Rocky9系統(tǒng)為例:添加Ansible倉庫:sudoyuminstallepel-release安裝Ansible:sudoyuminstallansible驗證安裝ansible--version目前主流的Linux發(fā)行版,廣泛使用的軟件包管理工具是yum和apt,它們?yōu)長inux系統(tǒng)的軟件安裝、升級和管理提供了命令行界面,并基于不同的包管理系統(tǒng)設(shè)計,以滿足特定用戶群體的需求。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鏡像站點為清華大學的鏡像站點,加快Python包的下載和安裝速度,[rhce@control~]$mkdir~/.pip[rhce@control~]$vim~/.pip/pip.conf[global]timeout=6000index-url=/simpletrusted-host=pip是Python附帶的包管理器,允許用戶安裝和管理Python庫及模塊,也可用于安裝和管理不屬于Python標準庫的附加包,它可以在線搜索Python包索引PyPI庫中的軟件包,并將它們安裝到系統(tǒng)中。常見的Linux發(fā)行版,比如紅帽RHEL、Fedora、CentOSStream、Rocky、華為openEuler、Ubuntu等,都可以使用pip安裝ansible。02目錄結(jié)構(gòu)Ansible的主要目錄結(jié)構(gòu)安裝Ansible的步驟需要根據(jù)操作系統(tǒng)及其版本來確定,使用不同的方式安裝和部署Ansible,會導致軟件安裝目錄、配置文件、可執(zhí)行命令、插件等的存放位置不同。以RHEL、CentOS、華為openEuler等Linux發(fā)行版包管理器為例,使用yum方式安裝Ansible的主要目錄結(jié)構(gòu)如下:/etc/ansible:存儲系統(tǒng)級別的配置文件,如ansible.cfg、hosts等。/usr/share/ansible:存儲Ansible的文檔、示例、插件等。/usr/bin/ansible:存儲Ansible命令的可執(zhí)行文件,例如ansible、ansible-config、ansible-galaxy、ansible-playbook、ansible-vault、ansible-doc、ansible-inventory等。/usr/lib/python×.×/site-packages/ansible:存儲Ansible的Python模塊。其中,×.×代表Python的版本號。這個目錄中存儲了Ansible所需要的Python模塊和庫,這些模塊和庫用于在Ansible的命令和腳本中進行Python代碼的執(zhí)行。~/.ansible:用戶級別的配置文件和目錄,如ansible.cfg、roles等。在RHEL、CentOS、華為openEuler等Linux發(fā)行版中,可以使用rpm-qlansble命令,在Debian、Ubuntu等Linux發(fā)行版中,可以使用dpkg-Lansible命令,以查詢Ansible的安裝路徑、配置文件等。Ansible的主要目錄結(jié)構(gòu)也可以通過ansible--version命令查看,該命令輸出當前Ansible的版本號、配置文件路徑、模塊搜索路徑、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輸出信息:序號名稱描述1configfile當前使用的Ansible配置文件的路徑。在執(zhí)行Ansible命令時,Ansible會按照一定的優(yōu)先級查找配置文件。這個文件包含Ansible的許多全局設(shè)置,如連接方式、插件路徑、環(huán)境變量等2configuredmodulesearchpathAnsible模塊搜索的配置路徑。這個路徑是在Ansible配置文件(ansible.cfg)中指定的,是Ansible在執(zhí)行時用來查找模塊的路徑。如果沒有配置,那么Ansible會使用默認的模塊搜索路徑3ansiblepythonmodulelocationAnsible的Python模塊的位置,包含Ansible核心模塊、插件和其他相關(guān)Python庫。這個路徑是Ansible在運行時尋找和加載Python模塊的重要路徑。4AnsiblecollectionlocationAnsible集合文件所在的位置。Ansible集合是一組功能相關(guān)的Ansible模塊和資源的集合,通常是由第三方組織或個人開發(fā)并發(fā)布的。這些集合可以通過AnsibleGalaxy工具安裝和管理5executablelocationAnsible可執(zhí)行文件的位置6pythonversionPython的版本信息7jinjaversionJinja模板引擎的版本號,Jinja是Ansible用于模板處理的引擎,它允許在AnsiblePlaybooks中使用模板語法8libyaml系統(tǒng)支持YAML解析庫libyaml謝謝Ansible自動化概述任務(wù)3:清單文件目錄/Contents0102清單文件簡介清單文件格式03在清單文件中定義別名04清單文件變量01清單文件簡介清單文件簡介IT基礎(chǔ)設(shè)施環(huán)境中存在大量的服務(wù)器、云主機等設(shè)備。清單(inventory)文件是Ansible用來描述目標主機和主機組的文件。在清單文件中,用戶可以指定每個主機的IP地址、主機名、組名、變量、連接方式等信息。Ansible使用清單文件來確定要管理的主機集合,以及在執(zhí)行任務(wù)時如何與這些主機進行交互,還可以使用模式(pattern)來選擇清單文件中的主機或組,針對IT基礎(chǔ)設(shè)施中的多個受管節(jié)點執(zhí)行自動化任務(wù)。清單文件簡介Ansible的清單文件有靜態(tài)清單文件和動態(tài)清單文件兩種類型。靜態(tài)清單文件:靜態(tài)清單文件可以通過文本文件來定義,在文件中直接列出要管理的主機的主機名或IP地址。靜態(tài)清單文件是Ansible常見的清單文件類型,這種清單文件適用于主機數(shù)量固定,且這些主機的IP地址或主機名不會經(jīng)常發(fā)生變化的環(huán)境。動態(tài)清單文件:動態(tài)清單文件可以根據(jù)需要在運行自動化任務(wù)時由外部腳本或程序生成,動態(tài)清單文件使用外部數(shù)據(jù)源,如CMDB或云平臺API來動態(tài)查找主機,并生成清單文件。動態(tài)清單文件適用于管理數(shù)量較多、動態(tài)變化的主機,比如AmazonEC2實例、VMware虛擬機、OpenStack實例等。Ansible也提供了一些官方的清單插件用于動態(tài)生成清單文件。清單文件簡介最簡單的清單文件是一個包含主機和組列表的文件。該文件的默認位置為/etc/ansible/hosts。通常的做法是不使用該文件,而在Ansible配置文件中指定一個清單文件的位置,或者利用ansible和ansible-playbook命令來運行Ansible臨時命令(即AdHoc命令)和Playbook,可使用-i<path>選項指定不同的清單文件,其中path是所需清單文件的路徑。清單文件定義了Ansible管理的一批主機,這些主機也可以分配到組中,以進行集中管理。組可以包含子組,主機也可以是多個組的成員。清單文件還可以設(shè)置應(yīng)用到它所定義的主機和組的變量。02清單文件格式清單文件簡介Ansible的清單文件主要有兩種格式,即INI格式和YAML格式,廣泛應(yīng)用于生產(chǎn)環(huán)境中。INI格式:INI格式的清單文件由若干組和主機的信息構(gòu)成,具有節(jié)(section)和鍵值對的結(jié)構(gòu)。它使用簡單的鍵值對來表示配置項,每個鍵值對由一個名稱(鍵)和一個值組成,以等號“=”分隔。鍵值對可以分組存儲在節(jié)中,每個節(jié)用方括號“[]”標識。每個節(jié)代表一個主機組,每個鍵值對代表一個主機及其相關(guān)信息。YAML格式:YAML是一種輕量級的數(shù)據(jù)序列化格式,非常簡潔且易于閱讀,適合用于維護規(guī)模更大的主機信息。其語法基于縮進(indentation),YAML中的鍵值對使用冒號“:”分隔,all關(guān)鍵字表示一個包含所有主機的組,hosts關(guān)鍵字表示主機信息。清單文件簡介INI格式的清單文件基本格式如下:01[group1]0102[group2]0304[group_name1]host1ansible_host=01host2ansible_host=02[group_name2]host3ansible_host=03host4ansible_host=04在示例中,INI格式的清單文件包含受管主機的主機名或IP地址的列表,如、、0、1分別表示4個主機,且不屬于任何主機組。group1和group2是兩個主機組,用于對主機進行分類。group1中包含、、01、02這4個主機,group2中包含、、03、04這4個主機。group_name1和group_name2是兩個主機組,每個組中有兩個主機,變量ansible_host用于指定主機的IP地址。清單文件簡介YAML格式的清單文件基本格式如下:all:hosts:::0:1:children:group1:hosts:::01:02:group2:hosts:::03:04:在示例中,頂層的all表示Ansible清單的默認組,它包含所有的主機和主機組。hosts表示一個包含所有主機的鍵,每個主機都是一個鍵值對,其中鍵是主機的名稱或IP地址,值可以為空或是一個字典。children表示包含所有主機組的鍵。每個主機組都是一個鍵值對,其中鍵是組的名稱,值是一個包含所有該組主機的鍵值對字典。在本示例中,group1中包含、、01和02這4個主機。同樣,group2中包含、、03和04這4個主機。group_name1:hosts:host1:ansible_host:01host2:ansible_host:02group_name2:hosts:host3:ansible_host:03host4:ansible_host:04all和ungrouped在Ansible清單文件中,有兩個主機組始終存在,all主機組包含清單文件中定義的所有主機,ungrouped主機組表示在清單文件中未被分組的主機。all和ungrouped是隱式的,不會出現(xiàn)在清單文件中。在上面的清單文件中,all主機組將包含host1、host2和host3這3個主機,而ungrouped主機組包含這個主機。[webserver]host1host2[database]host3嵌套組在Ansible清單文件中,可以定義嵌套組,其中父組包含多個子組。這可以通過在清單文件中創(chuàng)建一個組并在其中創(chuàng)建另一個組來實現(xiàn)。例如,用戶可以創(chuàng)建一個名為webserver的父組,該組包含兩個分別名為app1和app2的子組,每個子組都包含一組主機。通過嵌套的方式可以指定父組來執(zhí)行任務(wù)或應(yīng)用模板,以同時處理多個主機。在INI格式中,可以在方括號中定義父組,并用冒號分隔父組的名稱和children屬性。在上述示例中,group_name是父組的名稱,group1和group2是子組的名稱,所有子組中的主機都會被歸到父組中。[group_name:children]group1group2添加主機范圍如果有很多具有相似模式的主機,可以通過指定數(shù)值或字母范圍來簡化Ansible主機清單文件。指定范圍的語法格式如下:host[start:end:step]#host可以是主機名或IP地址,start表示起始數(shù)字,end表示結(jié)束數(shù)字,step表示步長。范圍匹配start~end(含)的所有值匹配名為~的50個機器:server[01:20].www[01:50].匹配名為~的所有主機:匹配/24~/24網(wǎng)絡(luò)中的所有IPv4地址(~55):192.168.[100:105].[0:255]添加主機范圍匹配名為、、的3個主機:[webservers]www[01:30:2].[a:c].在定義主機的數(shù)值范圍時,可以指定序列號之間的增量,也就是以X:Y:Z的格式來指定序列號范圍。其中,X表示起始值,Y表示水結(jié)束值,Z表示步長。www[01:30:2]表示www01~www30,步長為2的所有主機,將匹配www01、www03、www05、……、www49這些主機,但不匹配www00、www02、……、www50這些主機,這樣就可以選擇性地包含或排除某些主機03在清單文件中定義別名在清單文件中定義別名可以在清單文件中使用主機變量定義主機別名,別名是自定義的名稱,用于表示主機。引用主機時可直接調(diào)用別名,而無須知道它們的完整名稱。[web_servers]app1_hostansible_host=app2_hostansible_host=在上述示例中,可以使用別名app1_host和app2_host分別代替實際的主機名稱和。比如在運行Playbook時,使用app1_host來指定主機,Ansible會自動將其解析為。04清單文件變量清單文件變量在清單文件中指定Playbook使用的變量,這些變量僅應(yīng)用到特定的主機或主機組。通常,在特殊目錄中定義清單文件變量,而不直接在清單文件中定義。[groupname]node1http_port=82maxRequestsPerChild=202node2http_port=92maxRequestsPerChild=303Ansible使用INI格式來定義清單文件。在清單文件中,我們可以設(shè)置主機或主機組變量。包含主機變量的INI格式清單文件:謝謝Ansible自動化概述任務(wù)4:Ansible配置文件及主要參數(shù)目錄/Contents01Ansible配置文件02ansible.cfg主要參數(shù)01Ansible配置文件Ansible配置文件Ansible為管理控制節(jié)點和受管節(jié)點之間的交互行為,提供了多種工具,包括INI格式的ansible.cfg文件、環(huán)境變量、命令行選項、Playbook的關(guān)鍵字和變量等。在所有這些工具中,每個工具的優(yōu)先級都不同,Ansible會按照優(yōu)先級查找配置信息。常見的方法是使用配置文件ansible.cfg來控制Ansible的行為。當Ansible執(zhí)行時,它會按照以下順序搜索并使用配置文件:如果設(shè)置了環(huán)境變量ANSIBLE_CONFIG,則使用該變量指定的文件作為配置文件。比如/opt/ansible/ansible.cfg。如果當前目錄中存在ansible.cfg文件,則使用該文件作為配置文件,如/home/rhce/auto-manager/ansible.cfg。如果用戶家目錄中存在.ansible.cfg文件,則使用該文件作為配置文件,如/home/rhce/.ansible.cfg。如果在上述3個位置都沒有找到配置文件,則使用默認配置文件/etc/ansible/ansible.cfg。Ansible配置文件用戶可以在控制節(jié)點上的多個位置選擇配置文件,按照最高優(yōu)先級到最低優(yōu)先級(最容易被覆蓋)的順序,ansible.cfg文件將按以下順序進行搜索:ANSIBLE_CONFIG環(huán)境變量指定的ansible.cfg文件→執(zhí)行Ansible命令的目錄中的ansible.cfg文件→當前用戶家目錄中~/.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運行以下命令檢查Ansible是否使用了新的配置文件路徑:[rhce@ansibleplaybook]$ansible--version|grep-icfgconfigfile=/opt/project/ansile/ansible.cfg如果輸出中顯示了新的配置文件路徑,則表示ANSIBLE_CONFIG環(huán)境變量已成功設(shè)置。使用export命令和-n選項可以取消ANSIBLE_CONFIG環(huán)境變量的設(shè)置:[rhce@ansibleplaybook]$export-nANSIBLE_CONFIG=/opt/project/ansile/ansible.cfg02ansible.cfg主要參數(shù)ansible.cfg文件ansible.cfg是Ansible的主配置文件,它可以控制Ansible的行為和運行方式。ansible-config命令用于查看和管理Ansible的配置信息。通過這個命令,用戶可以獲取Ansible的配置文件路徑、查看配置項的值、修改配置項的值等。ansibe.cfg文件采用INI格式存儲配置數(shù)據(jù)。在文件中,用方括號標識的部分稱為配置段。每個配置段都有一組相關(guān)的配置選項,用于控制Ansible的不同行為和功能。#生成一個禁用了所有默認配置的ansible.cfg文件ansible-configinit--disabled>ansible.cfg#生成禁用了所有默認配置的ansible.cfg文件,其中包含所有可能的配置項ansible-configinit--disabled-tall>ansible.cfgansible.cfg文件ansible.cfg常用配置段詳細信息:序號配置段名稱描述1[defaults]默認配置段,該配置段設(shè)置的值會作為全局默認值,包含一些常用的配置指令,如清單文件路徑、遠程用戶、主機密鑰檢查等參數(shù)。主要的指令有inventory、remote_user、ask_pass、gather_facts、host_key_checking等2[privilege_escalation]特權(quán)升級配置段,包含一些特權(quán)升級相關(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]默認連接配置段,包含一些連接類型相關(guān)的配置指令ControlMaster、ControlPath和ControlPersist等指令5[selinux]SELinux配置段,包含一些SELinux相關(guān)的配置選項,如在執(zhí)行任務(wù)時是否啟用SELinux策略等ansible.cfg文件ansible.cfg常用配置段詳細信息:序號配置段名稱描述6[diff]差異配置段,包含一些控制任務(wù)運行時顯示差異信息的配置選項,如任務(wù)運行時是否顯示差異信息等7[inventory]清單文件配置段,包含一些與Ansible清單文件相關(guān)的配置選項,如清單文件路徑、默認的清單文件名等8[galaxy]Galaxy配置段,包含一些與AnsibleGalaxy相關(guān)的配置選項,如默認的角色、下載路徑等9[netconf_connection]NETCONF連接配置段,包含一些與NETCONF連接相關(guān)的配置選項,如默認的NETCONF端口號和用戶名等10[paramiko_connection]Paramiko連接配置段,Paramiko是一個用于實現(xiàn)SSH協(xié)議的Python庫,是Ansible的一種連接插件。該配置段包含banner_timeout、look_for_keys、use_rsa_sha2_algorithms等指令11[jinja2]Jinja2配置段,包含一些與Jinja2相關(guān)的配置選項,如Jinja2模板文件路徑等12[tags]標簽配置段,包含一些與標簽相關(guān)的配置選項,如默認的標簽列表等連接設(shè)置Ansible采用無代理模式自動化管理受管節(jié)點,默認情況下,Ansible使用SSH連接受管主機??刂艫nsible如何連接受管主機的指令在[defaults]部分設(shè)置。當Ansible控制主機連接受管主機時,默認使用的用戶名與運行Ansible命令的本地用戶的名稱相同。若要指定不同的遠程用戶,需要將remote_user設(shè)置為該用戶的名稱。[defaults]inventory=./inventoryremote_user=rhceask_pass=false如果設(shè)置指令ask_pass=true,遠程連接的用戶需要輸入賬戶和密碼。如果Ansible控制節(jié)點的管理用戶配置了SSH私鑰,通過指令ask_pass=false,在受管主機上進行遠程用戶身份驗證,可以實現(xiàn)免密碼登錄。sudo提權(quán)sudo是一種在Linux操作系統(tǒng)中執(zhí)行特權(quán)命令的方式。使用sudo可以讓普通用戶在需要時執(zhí)行root管理用戶權(quán)限級別的操作,而不需要切換到root用戶。在使用sudo提權(quán)時,用戶需要在命令前面加上sudo,系統(tǒng)會提示用戶輸入自己
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年北京市朝陽區(qū)高三期末高考數(shù)學試卷試題(含答案詳解)
- 2026屆新疆維吾爾自治區(qū)克拉瑪依市第十三中學生物高三上期末達標檢測模擬試題含解析
- 智能控制 課件 第六章-學習控制
- 內(nèi)河海事執(zhí)法培訓
- 歡送儀式活動策劃方案(3篇)
- 管監(jiān)責任實施管理制度(3篇)
- 網(wǎng)絡(luò)銷售配送管理制度內(nèi)容(3篇)
- 苗圃技術(shù)管理制度內(nèi)容(3篇)
- 獸藥生產(chǎn)技術(shù)課程
- 項目門衛(wèi)值班管理制度內(nèi)容(3篇)
- 質(zhì)檢員班組級安全培訓課件
- 蓖麻醇酸鋅復(fù)合除味劑的制備及其除臭效能研究
- 海岸帶調(diào)查技術(shù)規(guī)程 國家海洋局908專項辦公室編
- 危重病人的院前急救課件
- 礦井突水機理研究-洞察及研究
- 2025年九江職業(yè)大學單招《職業(yè)適應(yīng)性測試》模擬試題(基礎(chǔ)題)附答案詳解
- 防御性駕駛安全培訓內(nèi)容
- 鉆探原始班報表試行版
- 青年積分培養(yǎng)管理辦法
- 市級應(yīng)急廣播管理制度
- 智慧檢驗與大數(shù)據(jù)分析知到智慧樹期末考試答案題庫2025年溫州醫(yī)科大學
評論
0/150
提交評論