版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Linux系統(tǒng)自動(dòng)化運(yùn)維(Python版)(微課版)工業(yè)和信息化精品系列教材項(xiàng)目8
企業(yè)級(jí)系統(tǒng)綜合運(yùn)維人民郵電出版社能力CAPACITY要求了解Ansible的特點(diǎn)和功能,學(xué)會(huì)使用Ansible的即席命令執(zhí)行運(yùn)維任務(wù)。學(xué)會(huì)編寫(xiě)Ansible的Playbook執(zhí)行自動(dòng)化任務(wù)。了解Ansible角色的基本用法,學(xué)會(huì)創(chuàng)建Ansible角色實(shí)現(xiàn)復(fù)雜的運(yùn)維功能。掌握Z(yǔ)abbix監(jiān)控平臺(tái)的部署。學(xué)會(huì)利用AnsibleGalaxy的角色實(shí)現(xiàn)自動(dòng)化運(yùn)維。任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)任務(wù)8.1熟悉Ansible的基本用法任務(wù)8.3使用Ansible角色組織Playbook任務(wù)8.4部署Zabbix監(jiān)控平臺(tái)任務(wù)8.1熟悉Ansible的基本用法任務(wù)說(shuō)明01OPTION02OPTION03OPTION了解Ansible的特點(diǎn)了解Ansible的基本概念掌握主機(jī)清單文件的編寫(xiě)04OPTION05OPTION掌握Ansible的安裝掌握Ansible的即席命令任務(wù)8.1熟悉Ansible的基本用法相關(guān)知識(shí)8.1.1Ansible的特點(diǎn)和應(yīng)用Ansible的主要特點(diǎn)架構(gòu)相對(duì)簡(jiǎn)單,輕量級(jí)部署,無(wú)須在受管節(jié)點(diǎn)上部署客戶端。基于推送方式操控受管節(jié)點(diǎn)。通過(guò)模塊簡(jiǎn)化任務(wù)的實(shí)施。支持任務(wù)的冪等性(Idempotent)。支持Playbook編排任務(wù)。通過(guò)角色提供功能強(qiáng)大的多層解決方案。具有伸縮性。形成了自己的生態(tài)系統(tǒng),為管理員提供大量的共享資源。任務(wù)8.1熟悉Ansible的基本用法相關(guān)知識(shí)8.1.1Ansible的特點(diǎn)和應(yīng)用Ansible的應(yīng)用自動(dòng)化管理配置項(xiàng)。自動(dòng)化部署應(yīng)用。即時(shí)開(kāi)通服務(wù)器。支持流程編排。支持網(wǎng)絡(luò)管理。任務(wù)8.1熟悉Ansible的基本用法相關(guān)知識(shí)8.1.2Ansible的基本架構(gòu)任務(wù)8.1熟悉Ansible的基本用法相關(guān)知識(shí)8.1.3安裝AnsibleAnsible的安裝要求控制節(jié)點(diǎn)的軟件環(huán)境要求
Linux、macOS、任何BSD版本,但不支持Windows。
Python3.8或更高版本。受管節(jié)點(diǎn)的軟件環(huán)境要求能夠提供SSH連接并使用SFTP傳輸模塊。安裝Python2(2.6或更高版本)或Python3(3.5或更高版本)。啟用SELinux的節(jié)點(diǎn)需要安裝libselinux-python。任務(wù)8.1熟悉Ansible的基本用法相關(guān)知識(shí)8.1.3安裝Ansible在控制節(jié)點(diǎn)上安裝Ansiblesudoaptupdatesudoaptinstallsoftware-properties-commonsudoadd-apt-repository--yes--updateppa:ansible/ansiblesudoaptinstallansible任務(wù)8.1熟悉Ansible的基本用法相關(guān)知識(shí)8.1.4配置Ansible配置文件默認(rèn)配置文件/etc/ansible/ansible.cfg當(dāng)前用戶主目錄ansible.cfg配置文件環(huán)境變量命令行選項(xiàng)覆蓋配置文件和環(huán)境變量的設(shè)置。使用ansible-config命令列出可用的命令行選項(xiàng)并檢查當(dāng)前設(shè)置值任務(wù)8.1熟悉Ansible的基本用法相關(guān)知識(shí)8.1.5編寫(xiě)清單文件清單文件格式0[webservers][dbservers]任務(wù)8.1熟悉Ansible的基本用法相關(guān)知識(shí)8.1.5編寫(xiě)清單文件將變量添加到清單文件[sales]host1http_port=80maxRequestsPerChild=808host2http_port=303maxRequestsPerChild=909在清單中定義別名server_hmansible_port=5555ansible_host=0任務(wù)8.1熟悉Ansible的基本用法相關(guān)知識(shí)8.1.6配置SSH連接管理主機(jī)密鑰檢查配置Linux主機(jī)SSH免密碼訪問(wèn)設(shè)置遠(yuǎn)程用戶設(shè)置SSH連接的行為參數(shù)some_hostansible_port=2222ansible_user=managerali_hostansible_ssh_private_key_file=/home/example/.ssh/ali.pemfreebsd_hostansible_python_interpreter=/usr/local/bin/python任務(wù)8.1熟悉Ansible的基本用法相關(guān)知識(shí)8.1.7Ansible的模塊模塊是Ansible執(zhí)行特定任務(wù)的離散代碼塊。模塊一般比較小,具有良好的定義,容易實(shí)現(xiàn),方便共享。模塊可以接收參數(shù)。Ansible執(zhí)行模塊通常返回一個(gè)JSON格式的數(shù)據(jù)。大部分模塊具有冪等性。查看模塊和獲取模塊幫助主要使用ansible-doc命令。任務(wù)8.1熟悉Ansible的基本用法相關(guān)知識(shí)8.1.8使用Ansible即席命令即席命令的用法ansible[模式]-m[模塊]-a"[模塊選項(xiàng)]"即席命令的執(zhí)行過(guò)程(1)加載Ansible配置文件。(2)加載對(duì)應(yīng)的模塊文件。(3)通過(guò)Aansible將模塊生成對(duì)應(yīng)的臨時(shí).py文件,并將該文件傳輸至遠(yuǎn)程主機(jī)。(4)在遠(yuǎn)程主機(jī)上給該臨時(shí)文件賦予執(zhí)行權(quán)限。(5)在遠(yuǎn)程主機(jī)上執(zhí)行該臨時(shí).py文件并返回結(jié)果。(6)在遠(yuǎn)程主機(jī)上刪除臨時(shí).py文件,并調(diào)用sleep(0)函數(shù)退出。任務(wù)8.1熟悉Ansible的基本用法相關(guān)知識(shí)8.1.9命令執(zhí)行模塊mand:僅支持簡(jiǎn)單的Linux命令。ansible.builtin.shell:通過(guò)/bin/bash執(zhí)行,支持各種Shell操作。ansible.builtin.script:運(yùn)行腳本。ansible.builtin.raw:不依賴Python執(zhí)行。任務(wù)8.1熟悉Ansible的基本用法任務(wù)實(shí)現(xiàn)任務(wù)8.1.1使用Ansible在目標(biāo)主機(jī)上執(zhí)行Shell腳本(1)編寫(xiě)清單文件。[centossrvs]0ansible_user=root1ansible_user=root(2)配置SSH連接。ansiblecentossrvs-mansible.posix.authorized_key-a"user=rootkey='{{lookup('file','/root/.ssh/id_rsa.pub')}}'path=/root/.ssh/authorized_keysmanage_dir=no"--ask-pass任務(wù)8.1熟悉Ansible的基本用法任務(wù)實(shí)現(xiàn)任務(wù)8.1.1使用Ansible在目標(biāo)主機(jī)上執(zhí)行Shell腳本(3)編寫(xiě)要執(zhí)行的Shell腳本文件。#!/bin/bash#獲取主機(jī)名host_name=`hostname`mem_total=$(free-m|awk'NR==2{print$2}')mem_used=$(free-m|awk'NR==2{print$3}')#計(jì)算內(nèi)存使用率mem_percent=$[($mem_used*100)/$mem_total]echo"$host_name主機(jī)內(nèi)存使用率:$mem_percent%"(4)使用即席命令通過(guò)ansible.builtin.script模塊在目標(biāo)主機(jī)上運(yùn)行該腳本。ansiblecentossrvs-mscript-a'mem_usage.sh'任務(wù)8.1熟悉Ansible的基本用法任務(wù)實(shí)現(xiàn)任務(wù)8.1.2使用Ansible提權(quán)操作目標(biāo)主機(jī)(1)編寫(xiě)清單文件。[ubuntusrvs]0ansible_user=glyansible_password=abc123(2)通過(guò)--become命令行選項(xiàng)指示進(jìn)行提權(quán)操作。ansibleubuntusrvs--become-mansible.builtin.shell-a"cat/etc/shadow"--ask-become-pass(3)修改清單文件,為0主機(jī)增加提權(quán)密碼設(shè)置。[ubuntusrvs]0ansible_user=glyansible_password=abc123ansible_become_password=Abc123(4)通過(guò)--become命令行選項(xiàng)指示進(jìn)行提權(quán)操作。ansibleubuntusrvs--become-mansible.builtin.shell-a"cat/etc/shadow"任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)任務(wù)8.1熟悉Ansible的基本用法任務(wù)8.3使用Ansible角色組織Playbook任務(wù)8.4部署Zabbix監(jiān)控平臺(tái)任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)任務(wù)說(shuō)明01OPTION02OPTION03OPTION了解Playbook的基本語(yǔ)法掌握運(yùn)行Playbook的基本方法掌握處理程序、變量、控制結(jié)構(gòu)在Playbook中的用法04OPTION05OPTION掌握Ansible內(nèi)容加密的方法能夠編寫(xiě)Playbook完成系統(tǒng)自動(dòng)化運(yùn)維任務(wù)任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)相關(guān)知識(shí)8.2.1Playbook的基本語(yǔ)法Playbook示例----name:更新Web服務(wù)器 #第1個(gè)Playhosts:webservers #受管節(jié)點(diǎn)
remote_user:roottasks: #要執(zhí)行的任務(wù)集
-name:使Apache保持最新版本
ansible.builtin.yum:name:httpdstate:latest #如果不是最新的可用版本,將更新包
-name:通過(guò)模板文件定制Apache配置文件
ansible.builtin.template:src:/srv/httpd.j2dest:/etc/httpd.conf任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)相關(guān)知識(shí)8.2.1Playbook的基本語(yǔ)法Playbook示例-name:更新數(shù)據(jù)庫(kù)服務(wù)器 #第2個(gè)Playhosts:databases #受管節(jié)點(diǎn)
remote_user:roottasks: #要執(zhí)行的任務(wù)集
-name:使postgresql保持最新版本
ansible.builtin.yum:name:postgresqlstate:latest-name:啟動(dòng)postgresqlansible.builtin.service:name:postgresqlstate:started任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)相關(guān)知識(shí)8.2.1Playbook的基本語(yǔ)法目標(biāo)定義每個(gè)Play至少定義一個(gè)目標(biāo),用于定義所屬任務(wù)的目標(biāo)及其附屬信息。使用hosts參數(shù)指定的目標(biāo)主機(jī)來(lái)自清單文件,使用模式表示。任務(wù)定義每個(gè)Play至少包含一項(xiàng)任務(wù)定義。Play中tasks關(guān)鍵字用于定義任務(wù)集。每個(gè)任務(wù)指定要運(yùn)行的Ansible模塊。使用塊對(duì)任務(wù)進(jìn)行分組在任務(wù)中使用塊關(guān)鍵字block創(chuàng)建任務(wù)的邏輯分組。塊中的所有任務(wù)都繼承了塊級(jí)別應(yīng)用的指令。任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)相關(guān)知識(shí)8.2.2運(yùn)行Playbookansible-playbook命令的基本用法ansible-playbook[選項(xiàng)]Playbook[Playbook...]回顯模塊運(yùn)行返回的消息tasks:-name:對(duì)CentOS服務(wù)器執(zhí)行Ping測(cè)試
ansible.builtin.ping:register:check #注冊(cè)變量
-name:回顯返回的消息
ansible.builtin.debug:var:check #顯示該注冊(cè)變量的值任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)相關(guān)知識(shí)8.2.2運(yùn)行Playbook處理失敗的任務(wù)ignore_errors:設(shè)置遇到任務(wù)失敗是否終止,默認(rèn)值為no。ignore_unreachable:設(shè)置是否忽略“unreachable”(無(wú)法訪問(wèn))的主機(jī)錯(cuò)誤。force_handlers:設(shè)置任務(wù)失敗后是否強(qiáng)制調(diào)用處理程序。failed_when:設(shè)置符合條件時(shí),不管命令執(zhí)行成功與否,都會(huì)強(qiáng)制該任務(wù)失敗任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)相關(guān)知識(shí)8.2.3在Playbook中使用處理程序-name:驗(yàn)證Apache安裝
hosts:webserverstasks:…-name:更改Apache配置文件
ansible.builtin.template:src:/srv/httpd.j2dest:/etc/httpd.confnotify:-Restartapache#此任務(wù)執(zhí)行完畢會(huì)通知執(zhí)行名為“Restartapache”的處理程序…h(huán)andlers: #處理程序集
-name:Restartapache #處理程序名稱,與notify的值相同
ansible.builtin.service:name:httpdstate:restarted任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)相關(guān)知識(shí)8.2.4在Playbook中定義和使用變量在Playbook中定義變量在包含的文件中定義變量引用變量注冊(cè)變量特殊的事實(shí)變量特殊的魔術(shù)變量變量的作用域
全局:由配置文件、環(huán)境變量和命令行參數(shù)設(shè)置。
Play:每個(gè)Paly及其包含結(jié)構(gòu)、vars條目、角色默認(rèn)值和變量。主機(jī):與主機(jī)直接關(guān)聯(lián)的變量。Ansible規(guī)定22種變量?jī)?yōu)先級(jí)任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)相關(guān)知識(shí)8.2.5在Playbook中使用控制結(jié)構(gòu)條件語(yǔ)句條件語(yǔ)句使用when關(guān)鍵字定義。用于條件判斷的變量可以是事實(shí)數(shù)據(jù)、注冊(cè)變量、Playbook或清單文件中定義的變量。循環(huán)語(yǔ)句定義循環(huán)語(yǔ)句的關(guān)鍵字有l(wèi)oop、with_<lookup>和until。將條件語(yǔ)句與循環(huán)語(yǔ)句結(jié)合使用時(shí),Ansible會(huì)為每個(gè)條目單獨(dú)處理?xiàng)l件。任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)相關(guān)知識(shí)8.2.6使用AnsibleVault加密內(nèi)容使用ansible-vault命令加密和解密內(nèi)容子命令說(shuō)明encrypt_string變量名創(chuàng)建加密變量create文件名創(chuàng)建加密文件edit文件名編輯加密文件view文件名查看現(xiàn)有文件encrypt文件名加密現(xiàn)有文件decrypt文件名解密加密文件rekey文件名更改加密文件的密碼或保險(xiǎn)庫(kù)ID任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)相關(guān)知識(shí)8.2.6使用AnsibleVault加密內(nèi)容密碼的管理和使用創(chuàng)建加密內(nèi)容時(shí)將其通過(guò)--vault-id選項(xiàng)傳遞給ansible-vault命令。將其存儲(chǔ)在文件或第三方工具中。運(yùn)行使用該保險(xiǎn)庫(kù)ID加密內(nèi)容的Playbook時(shí),將其通過(guò)--vault-id選項(xiàng)傳遞給ansible-playbook命令。任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)任務(wù)實(shí)現(xiàn)任務(wù)8.2.1使用Playbook配置系統(tǒng)時(shí)鐘同步編寫(xiě)清單文件all:children:centossrvs:hosts:0:1:任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)任務(wù)實(shí)現(xiàn)任務(wù)8.2.1使用Playbook配置系統(tǒng)時(shí)鐘同步編寫(xiě)Playbook-name:為系統(tǒng)設(shè)置時(shí)鐘同步
hosts:centossrvs#定義變量
vars:ntp_srv:server#NTP服務(wù)器地址使用阿里云的
#定義任務(wù)
tasks:-name:設(shè)置時(shí)區(qū)
community.general.timezone:name:Asia/Shanghai-name:安裝Chronyansible.builtin.yum:name:chronystate:present任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)任務(wù)實(shí)現(xiàn)任務(wù)8.2.1使用Playbook配置系統(tǒng)時(shí)鐘同步編寫(xiě)Playbook-name:修改時(shí)鐘同步源
ansible.builtin.lineinfile:dest:/etc/chrony.confregexp:''line:'{{ntp_srv}}'notify:-restartchrony#通知重啟Chrony#定義處理程序
handlers:-name:restartchronyansible.builtin.service:name:chronydstate:restartedenabled:yes#開(kāi)機(jī)自動(dòng)啟動(dòng)任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)任務(wù)實(shí)現(xiàn)任務(wù)8.2.1使用Playbook配置系統(tǒng)時(shí)鐘同步運(yùn)行Playbook完成配置root@autowks:/autoom/08comp#ansible-playbook-intp_hostsntp.ymlPLAY[為系統(tǒng)設(shè)置時(shí)鐘同步]*************TASK[GatheringFacts]**************ok:[1]ok:[0]TASK[設(shè)置時(shí)區(qū)]***********************changed:[1]changed:[0]TASK[安裝Chrony]**************ok:[1]ok:[0]TASK[修改時(shí)鐘同步源]*********changed:[0]changed:[1]RUNNINGHANDLER[restartchrony]*********changed:[0]changed:[1]PLAYRECAP*****************0:ok=5changed=3unreachable=0failed=0skipped=0rescued=0ignored=01:ok=5changed=3unreachable=0failed=0skipped=0rescued=0ignored=0任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)任務(wù)實(shí)現(xiàn)任務(wù)8.2.2使用Playbook批量添加用戶賬戶加密用戶賬戶文件(1)編寫(xiě)名為user_pwd.yml的用戶賬戶文件。newusers:-name:tester1pwd:abc123-name:tester2pwd:def456(2)使用ansible-vault命令對(duì)該文件進(jìn)行加密,根據(jù)提示輸入密碼。root@autowks:/autoom/08comp#ansible-vaultencryptuser_pwd.ymlNewVaultpassword:ConfirmNewVaultpassword:Encryptionsuccessful任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)任務(wù)實(shí)現(xiàn)任務(wù)8.2.2使用Playbook批量添加用戶賬戶編寫(xiě)Playbook-name:批量添加用戶賬戶
hosts:centossrvsvars:group_name:testgroupvars_files:-user_pwd.yml#引用用戶賬戶文件中的變量
tasks:-name:添加組賬戶
ansible.builtin.group:name:"{{group_name}}"state:present-name:添加用戶賬戶
ansible.builtin.user:name:"{{}}"password:"{{item.pwd|password_hash('sha512')}}"#密碼必須加密傳輸
group:"{{group_name}}"loop:"{{newusers}}"#循環(huán)語(yǔ)句讀取用戶列表任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)任務(wù)實(shí)現(xiàn)任務(wù)8.2.2使用Playbook批量添加用戶賬戶運(yùn)行Playbook完成用戶賬戶的批量添加root@autowks:/autoom/08comp#ansible-playbook-intp_hostsadd_users.yml--vault-id@promptVaultpassword(default):PLAY[批量添加用戶賬戶]*****************TASK[GatheringFacts]******************ok:[1]ok:[0]TASK[添加組賬戶]******changed:[1]changed:[0]TASK[添加用戶賬戶]******************************changed:[1]=>(item={'name':'tester1','pwd':'abc123'})changed:[0]=>(item={'name':'tester1','pwd':'abc123'})changed:[1]=>(item={'name':'tester2','pwd':'def456'})changed:[0]=>(item={'name':'tester2','pwd':'def456'})PLAYRECAP***************************************任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)任務(wù)8.1熟悉Ansible的基本用法任務(wù)8.3使用Ansible角色組織Playbook任務(wù)8.4部署Zabbix監(jiān)控平臺(tái)任務(wù)8.3使用Ansible角色組織Playbook任務(wù)說(shuō)明01OPTION02OPTION03OPTION了解Ansible角色的基本知識(shí)掌握手動(dòng)創(chuàng)建Ansible角色的方法和步驟掌握使用AnsibleGalaxy公共角色的方法和步驟任務(wù)8.3使用Ansible角色組織Playbook相關(guān)知識(shí)8.3.1理解Ansible角色使用角色的好處使用角色可以對(duì)內(nèi)容分組,便于與其他用戶共享代碼。通過(guò)角色實(shí)現(xiàn)系統(tǒng)運(yùn)維業(yè)務(wù)的模塊化。角色使較大型的項(xiàng)目更易于實(shí)現(xiàn)。團(tuán)隊(duì)成員可以并行開(kāi)發(fā)不同的角色,協(xié)同完成運(yùn)維任務(wù)??梢灾苯訌钠渌麃?lái)源(如AnsibleGalaxy)獲取現(xiàn)成的角色并加以利用。任務(wù)8.3使用Ansible角色組織Playbook相關(guān)知識(shí)8.3.1理解Ansible角色角色的目錄結(jié)構(gòu)site.yml #角色的整體編排文件webservers.yml #受管節(jié)點(diǎn)信息fooservers.ymlroles/ #所有角色的根目錄
common/ #此目錄名為角色名稱,其子目錄分類存放角色所需內(nèi)容
tasks/ #角色執(zhí)行的任務(wù)列表
handlers/ #可在此角色內(nèi)部或外部使用的處理程序
library/ #可在此角色中使用的模塊
files/ #角色任務(wù)引用的靜態(tài)文件,由copy或script等模塊調(diào)用
templates/ #角色任務(wù)引用的Jinja2模板文件,由template模塊調(diào)用
vars/ #角色的其他變量,通常用于角色內(nèi)部,優(yōu)先級(jí)較高
defaults/ #角色的默認(rèn)變量,在所有可用變量中具有最低優(yōu)先級(jí)
meta/ #角色的元數(shù)據(jù),如作者、許可證等,以及可選的角色依賴項(xiàng)
webservers/ #另一個(gè)名為webservers的角色
tasks/defaults/meta/任務(wù)8.3使用Ansible角色組織Playbook相關(guān)知識(shí)8.3.1理解Ansible角色存儲(chǔ)和查找角色首先從同級(jí)目錄的名為roles的目錄中查找與角色所在目錄同名的目錄。然后從Ansible環(huán)境變量ANSIBLE_ROLES_PATH和配置文件中由roles_path選項(xiàng)指定的角色路徑中查找角色。如果使用集合,則Ansible優(yōu)先從集合中查找角色??梢栽谡{(diào)用角色時(shí)明確指定角色路徑。任務(wù)8.3使用Ansible角色組織Playbook相關(guān)知識(shí)8.3.1理解Ansible角色使用角色在Play級(jí)別使用角色-hosts:webserversroles:-common-webservers任務(wù)8.3使用Ansible角色組織Playbook相關(guān)知識(shí)8.3.1理解Ansible角色使用角色在任務(wù)級(jí)別使用角色動(dòng)態(tài)包含。在任務(wù)部分使用include_role關(guān)鍵字指定角色以實(shí)現(xiàn)內(nèi)容的動(dòng)態(tài)重用。靜態(tài)導(dǎo)入。在任務(wù)部分使用import_role關(guān)鍵字指定角色以實(shí)現(xiàn)內(nèi)容的靜態(tài)重用。動(dòng)態(tài)包含的示例-hosts:webserverstasks:-name:Printamessageansible.builtin.debug:msg:"thistaskrunsbeforetheexamplerole"-name:Includetheexampleroleinclude_role:name:example-name:Printamessageansible.builtin.debug:msg:"thistaskrunsaftertheexamplerole"任務(wù)8.3使用Ansible角色組織Playbook相關(guān)知識(shí)8.3.1理解Ansible角色手動(dòng)創(chuàng)建Ansible角色的步驟(1)創(chuàng)建項(xiàng)目目錄。(2)在項(xiàng)目目錄下創(chuàng)建roles目錄。(3)在roles目錄中創(chuàng)建以角色命名的角色目錄。(4)在角色目錄中根據(jù)需要分別創(chuàng)建files、handlers、tasks、templates、vars等標(biāo)準(zhǔn)化目錄。(5)在標(biāo)準(zhǔn)化目錄中創(chuàng)建角色內(nèi)容文件。(6)在項(xiàng)目目錄下創(chuàng)建Playbook文件用于調(diào)用角色。(7)測(cè)試并運(yùn)行Playbook文件,基于角色完成運(yùn)維任務(wù)。任務(wù)8.3使用Ansible角色組織Playbook相關(guān)知識(shí)8.3.2使用AnsibleGalaxyAnsibleGalaxy簡(jiǎn)介AnsibleGalaxy首頁(yè)任務(wù)8.3使用Ansible角色組織Playbook相關(guān)知識(shí)8.3.2使用AnsibleGalaxyAnsibleGalaxy簡(jiǎn)介AnsibleGalaxy角色示例任務(wù)8.3使用Ansible角色組織Playbook相關(guān)知識(shí)8.3.2使用AnsibleGalaxy操作AnsibleGalaxy的角色ansible-galaxyrolesearch:在AnsibleGalaxy中搜索角色。
ansible-galaxyroleinfo:查看指定的AnsibleGalaxy角色的詳細(xì)信息。
ansible-galaxyroleinstall:在本地從AnsibleGalaxy安裝指定的角色。
ansible-galaxyrolelist:列出本地已安裝的AnsibleGalaxy角色。
ansible-galaxyroleremove:刪除本地安裝的角色。
ansible-galaxyroleinit:初始化具有基本結(jié)構(gòu)的角色框架。任務(wù)8.3使用Ansible角色組織Playbook相關(guān)知識(shí)8.3.2使用AnsibleGalaxy操作AnsibleGalaxy的集合ansible-galaxycollectiondownload:從AnsibleGalaxy下載集合及其依賴項(xiàng)。
ansible-galaxycollectioninstall:在本地從AnsibleGalaxy安裝指定的集合。
ansible-galaxycollectionlist:列出本地已安裝的AnsibleGalaxy集合。
ansible-galaxycollectioninit:初始化具有基本結(jié)構(gòu)的集合框架。任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡HAProxy+Nginx部署方案主機(jī)名IP地址Ansible角色SSH配置centossrv-a0nginx互信centossrv-b1nginx互信ubuntusrv-a0haproxy密碼認(rèn)證任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡編寫(xiě)主機(jī)清單文件[nginx]01[haproxy]0ansible_user=glyansible_password=abc123ansible_become_password=abc123[all:vars]frontend_port=80backend_port=8010任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡編寫(xiě)nginx角色文件(1)創(chuàng)建roles目錄,該目錄與Playbook同級(jí)。mkdir-proles/nginx(2)在角色目錄中分別創(chuàng)建所需的標(biāo)準(zhǔn)化目錄。mkdir-proles/nginx/{handlers,tasks,vars}(3)在vars目錄下創(chuàng)建變量文件main.yml。web_port:'{{backend_port}}'任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡編寫(xiě)nginx角色文件(4)在tasks目錄下創(chuàng)建任務(wù)文件main.yml。-name:通過(guò)yum安裝nginxansible.builtin.yum:name:nginxstate:latest-name:設(shè)置防火墻端口規(guī)則,開(kāi)放HTTP端口
ansible.posix.firewalld:zone:publicport:"{{web_port}}/tcp"#端口和協(xié)議
permanent:yes#持久生效
immediate:yes#即時(shí)生效
state:enabled#啟用規(guī)則
ignore_errors:yes任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡編寫(xiě)nginx角色文件(4)在tasks目錄下創(chuàng)建任務(wù)文件main.yml。-name:設(shè)置SELinux規(guī)則,放行非標(biāo)準(zhǔn)的HTTP端口
ansible.builtin.shell:semanageport-a-thttp_port_t-ptcp{{web_port}}ignore_errors:yes-name:創(chuàng)建測(cè)試網(wǎng)頁(yè)文件index.htmlansible.builtin.shell:echo"hello{{ansible_facts['hostname']}}">/usr/share/nginx/html/index.html-name:修改nginx配置文件,設(shè)置指定的HTTP端口
ansible.builtin.shell:sed-ri"s/80default_server/{{web_port}}default_server/g"/etc/nginx/nginx.confnotify:restartnginx-name:啟動(dòng)nginx服務(wù)并設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng)
ansible.builtin.service:name:nginxstate:startedenabled:yes任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡編寫(xiě)nginx角色文件(5)在handlers目錄下創(chuàng)建處理程序文件main.yml。-name:restartnginx#處理程序名稱需要與任務(wù)中的notify值保持一致
ansible.builtin.service:name:nginxstate:restarted任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡編寫(xiě)haproxy角色文件(1)創(chuàng)建roles目錄,該目錄與Playbook同級(jí)。mkdir-proles/haproxy(2)在角色目錄中分別創(chuàng)建所需的標(biāo)準(zhǔn)化目錄。mkdir-proles/haproxy/{defaults,handlers,tasks,templates}(3)在defaults目錄下創(chuàng)建默認(rèn)變量文件main.yml。haproxy_frontend_bind_address:'*'haproxy_frontend_mode:'http'haproxy_backend_mode:'http'haproxy_backend_balance_method:'roundrobin'haproxy_connect_timeout:5000haproxy_client_timeout:50000haproxy_server_timeout:50000任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡編寫(xiě)haproxy角色文件(4)在templates目錄下創(chuàng)建模板文件haproxy.cfg.j2。globaldaemonmaxconn25600defaultsmodehttptimeoutconnect{{haproxy_connect_timeout}}mstimeoutclient{{haproxy_client_timeout}}mstimeoutserver{{haproxy_server_timeout}}ms#前端設(shè)置frontendhttp-inbind{{haproxy_frontend_bind_address}}:{{frontend_port}}mode{{haproxy_frontend_mode}}default_backendservers任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡編寫(xiě)haproxy角色文件(4)在templates目錄下創(chuàng)建模板文件haproxy.cfg.j2。#后端設(shè)置backendserversmode{{haproxy_backend_mode}}balance{{haproxy_backend_balance_method}}optionforwardfor{%forhostingroups['nginx']%}server{{hostvars[host]['ansible_facts']['hostname']}}{{host}}:{{backend_port}}check{%endfor%}任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡編寫(xiě)haproxy角色文件(5)在tasks目錄下創(chuàng)建任務(wù)文件main.yml。-name:通過(guò)yum安裝haproxyansible.builtin.yum:name:haproxystate:presentwhen:ansible_os_family=='RedHat'-name:通過(guò)apt安裝haproxyansible.builtin.apt:name:haproxystate:presentwhen:ansible_os_family=='Debian'-name:復(fù)制haproxy配置文件
ansible.builtin.template:src:haproxy.cfg.j2dest:/etc/haproxy/haproxy.cfgmode:0644validate:haproxy-f%s-c-qnotify:restarthaproxy任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡編寫(xiě)haproxy角色文件(5)在tasks目錄下創(chuàng)建任務(wù)文件main.yml。-name:啟動(dòng)haproxy服務(wù)并設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng)
ansible.builtin.service:name:haproxystate:startedenabled:yes(6)在handlers目錄下創(chuàng)建處理程序文件main.yml。任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡編寫(xiě)Playbook文件-name:部署nginx角色
hosts:nginxroles:-nginx #指定角色名稱-name:部署haproxy角色
hosts:haproxybecome:yes #兼顧Ubuntu未啟用root賬戶
roles:-haproxy #指定角色名稱任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.1通過(guò)角色部署Web負(fù)載平衡運(yùn)行Playbook進(jìn)行部署root@autowks:/autoom/08comp/weblb#ansible-playbook-iweblb_hostsweblb.ymlPLAY[部署nginx角色]***********************TASK[GatheringFacts]**************************************ok:[1]ok:[0]TASK[nginx:通過(guò)yum安裝nginx]*********************ok:[1]ok:[0]TASK[nginx:設(shè)置防火墻端口規(guī)則,開(kāi)放HTTP端口]**********************ok:[0]ok:[1]TASK[nginx:設(shè)置SELinux規(guī)則,放行非標(biāo)準(zhǔn)的HTTP端口]*********ok:[0]ok:[1]TASK[nginx:創(chuàng)建測(cè)試網(wǎng)頁(yè)文件index.html]**********************************changed:[0]changed:[1]┈┈┈任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.2通過(guò)AnsibleGalaxy部署角色(1)查找角色角色文件ansible-galaxyrolesearchredis(2)瀏覽查找結(jié)果ansible-galaxyroleinfogeerlingguy.redis(3)安裝geerlingguy.redis角色ansible-galaxyroleinstallgeerlingguy.redis(4)列出當(dāng)前已安裝的角色ansible-galaxyrolelist(5)查看geerlingguy.redis角色的目錄結(jié)構(gòu)tree/root/.ansible/roles/geerlingguy.redis任務(wù)8.3使用Ansible角色組織Playbook任務(wù)實(shí)現(xiàn)任務(wù)8.3.2通過(guò)AnsibleGalaxy部署角色(6)編寫(xiě)名為redis.yml的Playbook文件,調(diào)用geerlingguy.redis角色-name:安裝redishosts:0become:Trueroles:-geerlingguy.redis(7)編寫(xiě)名為redis_hosts的主機(jī)清單文件0ansible_user=glyansible_password=abc123ansible_become_password=abc123(8)執(zhí)行該P(yáng)laybook,完成Redis數(shù)據(jù)庫(kù)服務(wù)器的部署ansible-playbook-iredis_hostsredis.yml
(9)登錄0服務(wù)器進(jìn)行驗(yàn)證任務(wù)8.2基于Playbook實(shí)現(xiàn)自動(dòng)化任務(wù)任務(wù)8.1熟悉Ansible的基本用法任務(wù)8.3使用Ansible角色組織Playbook任務(wù)8.4部署Zabbix監(jiān)控平臺(tái)任務(wù)8.4部署Zabbix監(jiān)控平臺(tái)任務(wù)說(shuō)明01OPTION02OPTION03OPTION了解Zabbix監(jiān)控平臺(tái)的主要特性了解Zabbix監(jiān)控平臺(tái)的基本架構(gòu)結(jié)合Ansible部署Zabbix監(jiān)控平臺(tái)任務(wù)8.4部署Zabbix監(jiān)控平臺(tái)相關(guān)知識(shí)8.4.1Zabbix的主要特性Zabbix是一個(gè)高度集成的統(tǒng)一監(jiān)控平臺(tái),提供全面的監(jiān)控解決方案。Zabbix可以監(jiān)控各種IT對(duì)象。Zabbix使用“開(kāi)箱即用”的模板實(shí)現(xiàn)監(jiān)控。Zabbix能夠從眾多來(lái)源收集指標(biāo)。Zabbix支持?jǐn)?shù)據(jù)收集,可用性和性能檢查等具體功能。Zabbix支持主動(dòng)和被動(dòng)兩種監(jiān)控模式。任務(wù)8.4部署Zabbix監(jiān)控平臺(tái)相關(guān)知識(shí)8.4.2Zabbix的基本架構(gòu)任務(wù)8.4部署Zabbix監(jiān)控平臺(tái)任務(wù)實(shí)現(xiàn)任務(wù)8.4.1以容器形式安裝Zabbix服務(wù)器安裝Docker引擎(1)安裝相應(yīng)的軟件倉(cāng)庫(kù)。aptupdateaptinstallca-certificatescurlgnupglsb-releasemkdir-p/etc/apt/keyringscurl-fsSL/linux/ubuntu/gpg|sudogpg--dearmor-o/etc/apt/keyrings/docker.gpgecho"deb[arch=$(dpkg--print-architecture)signed-by=/etc/apt/keyrings/docker.gpg]/linux/ubuntu$(lsb_release-cs)stable"|sudotee/etc/apt/sources.list.d/docker.list>/dev/null(2)安裝Docker引擎。aptupdateaptinstalldocker-cedocker-ce-clicontainerd.iodocker-compose-plugin(3)查看Docker版本,驗(yàn)證是否成功安裝。任務(wù)8.4部署Zabbix監(jiān)控平臺(tái)任務(wù)實(shí)現(xiàn)任務(wù)8.4.1以容器形式安裝Zabbix服務(wù)器以容器形式安裝Zabbix服務(wù)器(1)創(chuàng)建Zabbix組件容器專用的橋接網(wǎng)絡(luò)。dockernetworkcreate--subnet/16--ip-range/20zabbix-net(2)創(chuàng)建并啟動(dòng)MySQL容器。dockerrun--namemysql-server-t\-eMYSQL_DATABASE="zabbix"\-eMYSQL_USER="zabbix"\-eMYSQL_PASSWORD="zabbix_pwd"\-eMYSQL_ROOT_PASSWORD="root_pwd"\--network=zabbix-net\--restartunless-stopped\-dmysql:8.0\--character-set-server=utf8--collation-server=utf8_bin\--default-authentication-plugin=mysql_native_password任務(wù)8.4部署Zabbix監(jiān)控平臺(tái)任務(wù)實(shí)現(xiàn)任務(wù)8.4.1以容器形式安裝Zabbix服務(wù)器以容器形式安裝Zabbix服務(wù)器(3)創(chuàng)建并啟動(dòng)ZabbixJava網(wǎng)關(guān)容器。dockerrun--namezabbix-java-gateway-t\--network=zabbix-net\--restartunless-stopped\-dzabbix/zabbix-java-gateway:alpine-5.4-latest(4)創(chuàng)建并啟動(dòng)Zabbix服務(wù)器容器,并將其關(guān)聯(lián)到已創(chuàng)建的MySQL容器。dockerrun--namezabbix-server-mysql-t\-eDB_SERVER_HOST="mysql-server"\-eMYSQL_DATABASE="zabbix"\-eMYSQL_USER="zabbix"\-eMYSQL_PASSWORD="zabbix_pwd"\-eMYSQL_ROOT_PASSWORD="root_pwd"\-eZBX_JAVAGATEWAY="zabbix-java-gateway"\--network=zabbix-net\-p10051:10051\--restartunless-stopped\-dzabbix/zabbix-server-mysql:alpine-5.4-latest任務(wù)8.4部署Zabbix監(jiān)控平臺(tái)任務(wù)實(shí)現(xiàn)任務(wù)8.4.1以容器形式安裝Zabbix服務(wù)器以容器形式安裝Zabbix服務(wù)器(5)創(chuàng)建并啟動(dòng)ZabbixWeb容器,并將其關(guān)聯(lián)到已創(chuàng)建的MySQL和Zabbix服務(wù)器容器。dockerrun--namezabbix-web-nginx-mysql-t\-eZBX_SERVER_HOST="zabbix-server-mysql"\-eDB_SERVER_HOST="mysql-server"\-eMYSQL_DATABASE="zabbix"\-eMYSQL_USER="zabbix"\-eMYSQL_PASSWORD="zabbix_pwd"\-eMYSQL_ROOT_PASSWORD="root_pwd"\--network=zabbix-net\-p80:8080\--restartunless-stopped\-dzabbix/zabbix-web-nginx-
溫馨提示
- 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è)計(jì)
- 2024年新世紀(jì)版八年級(jí)英語(yǔ)下冊(cè)階段測(cè)試試卷133
- 電站鍋爐課程設(shè)計(jì)
- 2024年外研版七年級(jí)生物下冊(cè)階段測(cè)試試卷含答案159
- 2024年人教版(2024)選擇性必修3化學(xué)上冊(cè)階段測(cè)試試卷含答案579
- 2024年粵教新版九年級(jí)科學(xué)上冊(cè)月考試卷含答案791
- 2024年冀教新版選修3地理上冊(cè)月考試卷146
- 2024年湘師大新版八年級(jí)化學(xué)下冊(cè)月考試卷含答案586
- 2024年滬教版二年級(jí)語(yǔ)文上冊(cè)月考試卷含答案61
- 2024年智能社區(qū)商業(yè)街物業(yè)運(yùn)營(yíng)與管理服務(wù)合同3篇
- 2023年中證數(shù)據(jù)招聘筆試真題
- 木桶效應(yīng)-課件
- (DB45T 2522-2022)《橋梁纜索吊裝系統(tǒng)技術(shù)規(guī)程》
- 2024年全國(guó)《考評(píng)員》專業(yè)技能鑒定考試題庫(kù)與答案
- 道法全冊(cè)知識(shí)點(diǎn)梳理-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
- 四川省成都市2023-2024學(xué)年高二上學(xué)期期末考試+地理 含答案
- 人教版數(shù)學(xué)六年級(jí)上冊(cè)期末考試試卷
- 2024年時(shí)事政治試題庫(kù)附答案(綜合題)
- 新人教版八年級(jí)上冊(cè)數(shù)學(xué)知識(shí)點(diǎn)歸納及??碱}型
- DB43T 1167-2016 高純(SiO ≥99.997%)石英砂 規(guī)范
- 電池制造工(電池(組)裝配工)行業(yè)職業(yè)技能競(jìng)賽理論考試題庫(kù)及答案
評(píng)論
0/150
提交評(píng)論