




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Linux系統自動化運維(Python版)(微課版)工業和信息化精品系列教材項目8
企業級系統綜合運維人民郵電出版社能力CAPACITY要求了解Ansible的特點和功能,學會使用Ansible的即席命令執行運維任務。學會編寫Ansible的Playbook執行自動化任務。了解Ansible角色的基本用法,學會創建Ansible角色實現復雜的運維功能。掌握Zabbix監控平臺的部署。學會利用AnsibleGalaxy的角色實現自動化運維。任務8.2基于Playbook實現自動化任務任務8.1熟悉Ansible的基本用法任務8.3使用Ansible角色組織Playbook任務8.4部署Zabbix監控平臺任務8.1熟悉Ansible的基本用法任務說明01OPTION02OPTION03OPTION了解Ansible的特點了解Ansible的基本概念掌握主機清單文件的編寫04OPTION05OPTION掌握Ansible的安裝掌握Ansible的即席命令任務8.1熟悉Ansible的基本用法相關知識8.1.1Ansible的特點和應用Ansible的主要特點架構相對簡單,輕量級部署,無須在受管節點上部署客戶端。基于推送方式操控受管節點。通過模塊簡化任務的實施。支持任務的冪等性(Idempotent)。支持Playbook編排任務。通過角色提供功能強大的多層解決方案。具有伸縮性。形成了自己的生態系統,為管理員提供大量的共享資源。任務8.1熟悉Ansible的基本用法相關知識8.1.1Ansible的特點和應用Ansible的應用自動化管理配置項。自動化部署應用。即時開通服務器。支持流程編排。支持網絡管理。任務8.1熟悉Ansible的基本用法相關知識8.1.2Ansible的基本架構任務8.1熟悉Ansible的基本用法相關知識8.1.3安裝AnsibleAnsible的安裝要求控制節點的軟件環境要求
Linux、macOS、任何BSD版本,但不支持Windows。
Python3.8或更高版本。受管節點的軟件環境要求能夠提供SSH連接并使用SFTP傳輸模塊。安裝Python2(2.6或更高版本)或Python3(3.5或更高版本)。啟用SELinux的節點需要安裝libselinux-python。任務8.1熟悉Ansible的基本用法相關知識8.1.3安裝Ansible在控制節點上安裝Ansiblesudoaptupdatesudoaptinstallsoftware-properties-commonsudoadd-apt-repository--yes--updateppa:ansible/ansiblesudoaptinstallansible任務8.1熟悉Ansible的基本用法相關知識8.1.4配置Ansible配置文件默認配置文件/etc/ansible/ansible.cfg當前用戶主目錄ansible.cfg配置文件環境變量命令行選項覆蓋配置文件和環境變量的設置。使用ansible-config命令列出可用的命令行選項并檢查當前設置值任務8.1熟悉Ansible的基本用法相關知識8.1.5編寫清單文件清單文件格式0[webservers][dbservers]任務8.1熟悉Ansible的基本用法相關知識8.1.5編寫清單文件將變量添加到清單文件[sales]host1http_port=80maxRequestsPerChild=808host2http_port=303maxRequestsPerChild=909在清單中定義別名server_hmansible_port=5555ansible_host=0任務8.1熟悉Ansible的基本用法相關知識8.1.6配置SSH連接管理主機密鑰檢查配置Linux主機SSH免密碼訪問設置遠程用戶設置SSH連接的行為參數some_hostansible_port=2222ansible_user=managerali_hostansible_ssh_private_key_file=/home/example/.ssh/ali.pemfreebsd_hostansible_python_interpreter=/usr/local/bin/python任務8.1熟悉Ansible的基本用法相關知識8.1.7Ansible的模塊模塊是Ansible執行特定任務的離散代碼塊。模塊一般比較小,具有良好的定義,容易實現,方便共享。模塊可以接收參數。Ansible執行模塊通常返回一個JSON格式的數據。大部分模塊具有冪等性。查看模塊和獲取模塊幫助主要使用ansible-doc命令。任務8.1熟悉Ansible的基本用法相關知識8.1.8使用Ansible即席命令即席命令的用法ansible[模式]-m[模塊]-a"[模塊選項]"即席命令的執行過程(1)加載Ansible配置文件。(2)加載對應的模塊文件。(3)通過Aansible將模塊生成對應的臨時.py文件,并將該文件傳輸至遠程主機。(4)在遠程主機上給該臨時文件賦予執行權限。(5)在遠程主機上執行該臨時.py文件并返回結果。(6)在遠程主機上刪除臨時.py文件,并調用sleep(0)函數退出。任務8.1熟悉Ansible的基本用法相關知識8.1.9命令執行模塊mand:僅支持簡單的Linux命令。ansible.builtin.shell:通過/bin/bash執行,支持各種Shell操作。ansible.builtin.script:運行腳本。ansible.builtin.raw:不依賴Python執行。任務8.1熟悉Ansible的基本用法任務實現任務8.1.1使用Ansible在目標主機上執行Shell腳本(1)編寫清單文件。[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任務8.1熟悉Ansible的基本用法任務實現任務8.1.1使用Ansible在目標主機上執行Shell腳本(3)編寫要執行的Shell腳本文件。#!/bin/bash#獲取主機名host_name=`hostname`mem_total=$(free-m|awk'NR==2{print$2}')mem_used=$(free-m|awk'NR==2{print$3}')#計算內存使用率mem_percent=$[($mem_used*100)/$mem_total]echo"$host_name主機內存使用率:$mem_percent%"(4)使用即席命令通過ansible.builtin.script模塊在目標主機上運行該腳本。ansiblecentossrvs-mscript-a'mem_usage.sh'任務8.1熟悉Ansible的基本用法任務實現任務8.1.2使用Ansible提權操作目標主機(1)編寫清單文件。[ubuntusrvs]0ansible_user=glyansible_password=abc123(2)通過--become命令行選項指示進行提權操作。ansibleubuntusrvs--become-mansible.builtin.shell-a"cat/etc/shadow"--ask-become-pass(3)修改清單文件,為0主機增加提權密碼設置。[ubuntusrvs]0ansible_user=glyansible_password=abc123ansible_become_password=Abc123(4)通過--become命令行選項指示進行提權操作。ansibleubuntusrvs--become-mansible.builtin.shell-a"cat/etc/shadow"任務8.2基于Playbook實現自動化任務任務8.1熟悉Ansible的基本用法任務8.3使用Ansible角色組織Playbook任務8.4部署Zabbix監控平臺任務8.2基于Playbook實現自動化任務任務說明01OPTION02OPTION03OPTION了解Playbook的基本語法掌握運行Playbook的基本方法掌握處理程序、變量、控制結構在Playbook中的用法04OPTION05OPTION掌握Ansible內容加密的方法能夠編寫Playbook完成系統自動化運維任務任務8.2基于Playbook實現自動化任務相關知識8.2.1Playbook的基本語法Playbook示例----name:更新Web服務器 #第1個Playhosts:webservers #受管節點
remote_user:roottasks: #要執行的任務集
-name:使Apache保持最新版本
ansible.builtin.yum:name:httpdstate:latest #如果不是最新的可用版本,將更新包
-name:通過模板文件定制Apache配置文件
ansible.builtin.template:src:/srv/httpd.j2dest:/etc/httpd.conf任務8.2基于Playbook實現自動化任務相關知識8.2.1Playbook的基本語法Playbook示例-name:更新數據庫服務器 #第2個Playhosts:databases #受管節點
remote_user:roottasks: #要執行的任務集
-name:使postgresql保持最新版本
ansible.builtin.yum:name:postgresqlstate:latest-name:啟動postgresqlansible.builtin.service:name:postgresqlstate:started任務8.2基于Playbook實現自動化任務相關知識8.2.1Playbook的基本語法目標定義每個Play至少定義一個目標,用于定義所屬任務的目標及其附屬信息。使用hosts參數指定的目標主機來自清單文件,使用模式表示。任務定義每個Play至少包含一項任務定義。Play中tasks關鍵字用于定義任務集。每個任務指定要運行的Ansible模塊。使用塊對任務進行分組在任務中使用塊關鍵字block創建任務的邏輯分組。塊中的所有任務都繼承了塊級別應用的指令。任務8.2基于Playbook實現自動化任務相關知識8.2.2運行Playbookansible-playbook命令的基本用法ansible-playbook[選項]Playbook[Playbook...]回顯模塊運行返回的消息tasks:-name:對CentOS服務器執行Ping測試
ansible.builtin.ping:register:check #注冊變量
-name:回顯返回的消息
ansible.builtin.debug:var:check #顯示該注冊變量的值任務8.2基于Playbook實現自動化任務相關知識8.2.2運行Playbook處理失敗的任務ignore_errors:設置遇到任務失敗是否終止,默認值為no。ignore_unreachable:設置是否忽略“unreachable”(無法訪問)的主機錯誤。force_handlers:設置任務失敗后是否強制調用處理程序。failed_when:設置符合條件時,不管命令執行成功與否,都會強制該任務失敗任務8.2基于Playbook實現自動化任務相關知識8.2.3在Playbook中使用處理程序-name:驗證Apache安裝
hosts:webserverstasks:…-name:更改Apache配置文件
ansible.builtin.template:src:/srv/httpd.j2dest:/etc/httpd.confnotify:-Restartapache#此任務執行完畢會通知執行名為“Restartapache”的處理程序…handlers: #處理程序集
-name:Restartapache #處理程序名稱,與notify的值相同
ansible.builtin.service:name:httpdstate:restarted任務8.2基于Playbook實現自動化任務相關知識8.2.4在Playbook中定義和使用變量在Playbook中定義變量在包含的文件中定義變量引用變量注冊變量特殊的事實變量特殊的魔術變量變量的作用域
全局:由配置文件、環境變量和命令行參數設置。
Play:每個Paly及其包含結構、vars條目、角色默認值和變量。主機:與主機直接關聯的變量。Ansible規定22種變量優先級任務8.2基于Playbook實現自動化任務相關知識8.2.5在Playbook中使用控制結構條件語句條件語句使用when關鍵字定義。用于條件判斷的變量可以是事實數據、注冊變量、Playbook或清單文件中定義的變量。循環語句定義循環語句的關鍵字有loop、with_<lookup>和until。將條件語句與循環語句結合使用時,Ansible會為每個條目單獨處理條件。任務8.2基于Playbook實現自動化任務相關知識8.2.6使用AnsibleVault加密內容使用ansible-vault命令加密和解密內容子命令說明encrypt_string變量名創建加密變量create文件名創建加密文件edit文件名編輯加密文件view文件名查看現有文件encrypt文件名加密現有文件decrypt文件名解密加密文件rekey文件名更改加密文件的密碼或保險庫ID任務8.2基于Playbook實現自動化任務相關知識8.2.6使用AnsibleVault加密內容密碼的管理和使用創建加密內容時將其通過--vault-id選項傳遞給ansible-vault命令。將其存儲在文件或第三方工具中。運行使用該保險庫ID加密內容的Playbook時,將其通過--vault-id選項傳遞給ansible-playbook命令。任務8.2基于Playbook實現自動化任務任務實現任務8.2.1使用Playbook配置系統時鐘同步編寫清單文件all:children:centossrvs:hosts:0:1:任務8.2基于Playbook實現自動化任務任務實現任務8.2.1使用Playbook配置系統時鐘同步編寫Playbook-name:為系統設置時鐘同步
hosts:centossrvs#定義變量
vars:ntp_srv:server#NTP服務器地址使用阿里云的
#定義任務
tasks:-name:設置時區
community.general.timezone:name:Asia/Shanghai-name:安裝Chronyansible.builtin.yum:name:chronystate:present任務8.2基于Playbook實現自動化任務任務實現任務8.2.1使用Playbook配置系統時鐘同步編寫Playbook-name:修改時鐘同步源
ansible.builtin.lineinfile:dest:/etc/chrony.confregexp:''line:'{{ntp_srv}}'notify:-restartchrony#通知重啟Chrony#定義處理程序
handlers:-name:restartchronyansible.builtin.service:name:chronydstate:restartedenabled:yes#開機自動啟動任務8.2基于Playbook實現自動化任務任務實現任務8.2.1使用Playbook配置系統時鐘同步運行Playbook完成配置root@autowks:/autoom/08comp#ansible-playbook-intp_hostsntp.ymlPLAY[為系統設置時鐘同步]*************TASK[GatheringFacts]**************ok:[1]ok:[0]TASK[設置時區]***********************changed:[1]changed:[0]TASK[安裝Chrony]**************ok:[1]ok:[0]TASK[修改時鐘同步源]*********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任務8.2基于Playbook實現自動化任務任務實現任務8.2.2使用Playbook批量添加用戶賬戶加密用戶賬戶文件(1)編寫名為user_pwd.yml的用戶賬戶文件。newusers:-name:tester1pwd:abc123-name:tester2pwd:def456(2)使用ansible-vault命令對該文件進行加密,根據提示輸入密碼。root@autowks:/autoom/08comp#ansible-vaultencryptuser_pwd.ymlNewVaultpassword:ConfirmNewVaultpassword:Encryptionsuccessful任務8.2基于Playbook實現自動化任務任務實現任務8.2.2使用Playbook批量添加用戶賬戶編寫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}}"#循環語句讀取用戶列表任務8.2基于Playbook實現自動化任務任務實現任務8.2.2使用Playbook批量添加用戶賬戶運行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***************************************任務8.2基于Playbook實現自動化任務任務8.1熟悉Ansible的基本用法任務8.3使用Ansible角色組織Playbook任務8.4部署Zabbix監控平臺任務8.3使用Ansible角色組織Playbook任務說明01OPTION02OPTION03OPTION了解Ansible角色的基本知識掌握手動創建Ansible角色的方法和步驟掌握使用AnsibleGalaxy公共角色的方法和步驟任務8.3使用Ansible角色組織Playbook相關知識8.3.1理解Ansible角色使用角色的好處使用角色可以對內容分組,便于與其他用戶共享代碼。通過角色實現系統運維業務的模塊化。角色使較大型的項目更易于實現。團隊成員可以并行開發不同的角色,協同完成運維任務。可以直接從其他來源(如AnsibleGalaxy)獲取現成的角色并加以利用。任務8.3使用Ansible角色組織Playbook相關知識8.3.1理解Ansible角色角色的目錄結構site.yml #角色的整體編排文件webservers.yml #受管節點信息fooservers.ymlroles/ #所有角色的根目錄
common/ #此目錄名為角色名稱,其子目錄分類存放角色所需內容
tasks/ #角色執行的任務列表
handlers/ #可在此角色內部或外部使用的處理程序
library/ #可在此角色中使用的模塊
files/ #角色任務引用的靜態文件,由copy或script等模塊調用
templates/ #角色任務引用的Jinja2模板文件,由template模塊調用
vars/ #角色的其他變量,通常用于角色內部,優先級較高
defaults/ #角色的默認變量,在所有可用變量中具有最低優先級
meta/ #角色的元數據,如作者、許可證等,以及可選的角色依賴項
webservers/ #另一個名為webservers的角色
tasks/defaults/meta/任務8.3使用Ansible角色組織Playbook相關知識8.3.1理解Ansible角色存儲和查找角色首先從同級目錄的名為roles的目錄中查找與角色所在目錄同名的目錄。然后從Ansible環境變量ANSIBLE_ROLES_PATH和配置文件中由roles_path選項指定的角色路徑中查找角色。如果使用集合,則Ansible優先從集合中查找角色。可以在調用角色時明確指定角色路徑。任務8.3使用Ansible角色組織Playbook相關知識8.3.1理解Ansible角色使用角色在Play級別使用角色-hosts:webserversroles:-common-webservers任務8.3使用Ansible角色組織Playbook相關知識8.3.1理解Ansible角色使用角色在任務級別使用角色動態包含。在任務部分使用include_role關鍵字指定角色以實現內容的動態重用。靜態導入。在任務部分使用import_role關鍵字指定角色以實現內容的靜態重用。動態包含的示例-hosts:webserverstasks:-name:Printamessageansible.builtin.debug:msg:"thistaskrunsbeforetheexamplerole"-name:Includetheexampleroleinclude_role:name:example-name:Printamessageansible.builtin.debug:msg:"thistaskrunsaftertheexamplerole"任務8.3使用Ansible角色組織Playbook相關知識8.3.1理解Ansible角色手動創建Ansible角色的步驟(1)創建項目目錄。(2)在項目目錄下創建roles目錄。(3)在roles目錄中創建以角色命名的角色目錄。(4)在角色目錄中根據需要分別創建files、handlers、tasks、templates、vars等標準化目錄。(5)在標準化目錄中創建角色內容文件。(6)在項目目錄下創建Playbook文件用于調用角色。(7)測試并運行Playbook文件,基于角色完成運維任務。任務8.3使用Ansible角色組織Playbook相關知識8.3.2使用AnsibleGalaxyAnsibleGalaxy簡介AnsibleGalaxy首頁任務8.3使用Ansible角色組織Playbook相關知識8.3.2使用AnsibleGalaxyAnsibleGalaxy簡介AnsibleGalaxy角色示例任務8.3使用Ansible角色組織Playbook相關知識8.3.2使用AnsibleGalaxy操作AnsibleGalaxy的角色ansible-galaxyrolesearch:在AnsibleGalaxy中搜索角色。
ansible-galaxyroleinfo:查看指定的AnsibleGalaxy角色的詳細信息。
ansible-galaxyroleinstall:在本地從AnsibleGalaxy安裝指定的角色。
ansible-galaxyrolelist:列出本地已安裝的AnsibleGalaxy角色。
ansible-galaxyroleremove:刪除本地安裝的角色。
ansible-galaxyroleinit:初始化具有基本結構的角色框架。任務8.3使用Ansible角色組織Playbook相關知識8.3.2使用AnsibleGalaxy操作AnsibleGalaxy的集合ansible-galaxycollectiondownload:從AnsibleGalaxy下載集合及其依賴項。
ansible-galaxycollectioninstall:在本地從AnsibleGalaxy安裝指定的集合。
ansible-galaxycollectionlist:列出本地已安裝的AnsibleGalaxy集合。
ansible-galaxycollectioninit:初始化具有基本結構的集合框架。任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡HAProxy+Nginx部署方案主機名IP地址Ansible角色SSH配置centossrv-a0nginx互信centossrv-b1nginx互信ubuntusrv-a0haproxy密碼認證任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡編寫主機清單文件[nginx]01[haproxy]0ansible_user=glyansible_password=abc123ansible_become_password=abc123[all:vars]frontend_port=80backend_port=8010任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡編寫nginx角色文件(1)創建roles目錄,該目錄與Playbook同級。mkdir-proles/nginx(2)在角色目錄中分別創建所需的標準化目錄。mkdir-proles/nginx/{handlers,tasks,vars}(3)在vars目錄下創建變量文件main.yml。web_port:'{{backend_port}}'任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡編寫nginx角色文件(4)在tasks目錄下創建任務文件main.yml。-name:通過yum安裝nginxansible.builtin.yum:name:nginxstate:latest-name:設置防火墻端口規則,開放HTTP端口
ansible.posix.firewalld:zone:publicport:"{{web_port}}/tcp"#端口和協議
permanent:yes#持久生效
immediate:yes#即時生效
state:enabled#啟用規則
ignore_errors:yes任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡編寫nginx角色文件(4)在tasks目錄下創建任務文件main.yml。-name:設置SELinux規則,放行非標準的HTTP端口
ansible.builtin.shell:semanageport-a-thttp_port_t-ptcp{{web_port}}ignore_errors:yes-name:創建測試網頁文件index.htmlansible.builtin.shell:echo"hello{{ansible_facts['hostname']}}">/usr/share/nginx/html/index.html-name:修改nginx配置文件,設置指定的HTTP端口
ansible.builtin.shell:sed-ri"s/80default_server/{{web_port}}default_server/g"/etc/nginx/nginx.confnotify:restartnginx-name:啟動nginx服務并設置開機自動啟動
ansible.builtin.service:name:nginxstate:startedenabled:yes任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡編寫nginx角色文件(5)在handlers目錄下創建處理程序文件main.yml。-name:restartnginx#處理程序名稱需要與任務中的notify值保持一致
ansible.builtin.service:name:nginxstate:restarted任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡編寫haproxy角色文件(1)創建roles目錄,該目錄與Playbook同級。mkdir-proles/haproxy(2)在角色目錄中分別創建所需的標準化目錄。mkdir-proles/haproxy/{defaults,handlers,tasks,templates}(3)在defaults目錄下創建默認變量文件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任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡編寫haproxy角色文件(4)在templates目錄下創建模板文件haproxy.cfg.j2。globaldaemonmaxconn25600defaultsmodehttptimeoutconnect{{haproxy_connect_timeout}}mstimeoutclient{{haproxy_client_timeout}}mstimeoutserver{{haproxy_server_timeout}}ms#前端設置frontendhttp-inbind{{haproxy_frontend_bind_address}}:{{frontend_port}}mode{{haproxy_frontend_mode}}default_backendservers任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡編寫haproxy角色文件(4)在templates目錄下創建模板文件haproxy.cfg.j2。#后端設置backendserversmode{{haproxy_backend_mode}}balance{{haproxy_backend_balance_method}}optionforwardfor{%forhostingroups['nginx']%}server{{hostvars[host]['ansible_facts']['hostname']}}{{host}}:{{backend_port}}check{%endfor%}任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡編寫haproxy角色文件(5)在tasks目錄下創建任務文件main.yml。-name:通過yum安裝haproxyansible.builtin.yum:name:haproxystate:presentwhen:ansible_os_family=='RedHat'-name:通過apt安裝haproxyansible.builtin.apt:name:haproxystate:presentwhen:ansible_os_family=='Debian'-name:復制haproxy配置文件
ansible.builtin.template:src:haproxy.cfg.j2dest:/etc/haproxy/haproxy.cfgmode:0644validate:haproxy-f%s-c-qnotify:restarthaproxy任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡編寫haproxy角色文件(5)在tasks目錄下創建任務文件main.yml。-name:啟動haproxy服務并設置開機自動啟動
ansible.builtin.service:name:haproxystate:startedenabled:yes(6)在handlers目錄下創建處理程序文件main.yml。任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡編寫Playbook文件-name:部署nginx角色
hosts:nginxroles:-nginx #指定角色名稱-name:部署haproxy角色
hosts:haproxybecome:yes #兼顧Ubuntu未啟用root賬戶
roles:-haproxy #指定角色名稱任務8.3使用Ansible角色組織Playbook任務實現任務8.3.1通過角色部署Web負載平衡運行Playbook進行部署root@autowks:/autoom/08comp/weblb#ansible-playbook-iweblb_hostsweblb.ymlPLAY[部署nginx角色]***********************TASK[GatheringFacts]**************************************ok:[1]ok:[0]TASK[nginx:通過yum安裝nginx]*********************ok:[1]ok:[0]TASK[nginx:設置防火墻端口規則,開放HTTP端口]**********************ok:[0]ok:[1]TASK[nginx:設置SELinux規則,放行非標準的HTTP端口]*********ok:[0]ok:[1]TASK[nginx:創建測試網頁文件index.html]**********************************changed:[0]changed:[1]┈┈┈任務8.3使用Ansible角色組織Playbook任務實現任務8.3.2通過AnsibleGalaxy部署角色(1)查找角色角色文件ansible-galaxyrolesearchredis(2)瀏覽查找結果ansible-galaxyroleinfogeerlingguy.redis(3)安裝geerlingguy.redis角色ansible-galaxyroleinstallgeerlingguy.redis(4)列出當前已安裝的角色ansible-galaxyrolelist(5)查看geerlingguy.redis角色的目錄結構tree/root/.ansible/roles/geerlingguy.redis任務8.3使用Ansible角色組織Playbook任務實現任務8.3.2通過AnsibleGalaxy部署角色(6)編寫名為redis.yml的Playbook文件,調用geerlingguy.redis角色-name:安裝redishosts:0become:Trueroles:-geerlingguy.redis(7)編寫名為redis_hosts的主機清單文件0ansible_user=glyansible_password=abc123ansible_become_password=abc123(8)執行該Playbook,完成Redis數據庫服務器的部署ansible-playbook-iredis_hostsredis.yml
(9)登錄0服務器進行驗證任務8.2基于Playbook實現自動化任務任務8.1熟悉Ansible的基本用法任務8.3使用Ansible角色組織Playbook任務8.4部署Zabbix監控平臺任務8.4部署Zabbix監控平臺任務說明01OPTION02OPTION03OPTION了解Zabbix監控平臺的主要特性了解Zabbix監控平臺的基本架構結合Ansible部署Zabbix監控平臺任務8.4部署Zabbix監控平臺相關知識8.4.1Zabbix的主要特性Zabbix是一個高度集成的統一監控平臺,提供全面的監控解決方案。Zabbix可以監控各種IT對象。Zabbix使用“開箱即用”的模板實現監控。Zabbix能夠從眾多來源收集指標。Zabbix支持數據收集,可用性和性能檢查等具體功能。Zabbix支持主動和被動兩種監控模式。任務8.4部署Zabbix監控平臺相關知識8.4.2Zabbix的基本架構任務8.4部署Zabbix監控平臺任務實現任務8.4.1以容器形式安裝Zabbix服務器安裝Docker引擎(1)安裝相應的軟件倉庫。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版本,驗證是否成功安裝。任務8.4部署Zabbix監控平臺任務實現任務8.4.1以容器形式安裝Zabbix服務器以容器形式安裝Zabbix服務器(1)創建Zabbix組件容器專用的橋接網絡。dockernetworkcreate--subnet/16--ip-range/20zabbix-net(2)創建并啟動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任務8.4部署Zabbix監控平臺任務實現任務8.4.1以容器形式安裝Zabbix服務器以容器形式安裝Zabbix服務器(3)創建并啟動ZabbixJava網關容器。dockerrun--namezabbix-java-gateway-t\--network=zabbix-net\--restartunless-stopped\-dzabbix/zabbix-java-gateway:alpine-5.4-latest(4)創建并啟動Zabbix服務器容器,并將其關聯到已創建的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任務8.4部署Zabbix監控平臺任務實現任務8.4.1以容器形式安裝Zabbix服務器以容器形式安裝Zabbix服務器(5)創建并啟動ZabbixWeb容器,并將其關聯到已創建的MySQL和Zabbix服務器容器。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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨產呼吸技巧專項訓練
- 2025運城師范高等專科學校輔導員考試試題及答案
- 2025西安歐亞學院輔導員考試試題及答案
- 2025遼寧民族師范高等專科學校輔導員考試試題及答案
- 2025蘇州城市學院輔導員考試試題及答案
- 2025福建衛生職業技術學院輔導員考試試題及答案
- 四川綿陽中山長虹電器有限公司招聘筆試題庫2025
- 室內設計概論
- 數鴨子大班音樂活動
- 橋梁工程師考試試卷及答案2025年
- 慈善專項捐贈協議書
- 2025年高考數學二輪熱點題型歸納與演練(上海專用)專題06數列(九大題型)(原卷版+解析)
- 2025中國鐵路南寧局集團有限公司招聘高校畢業生32人四(本科及以上學歷)筆試參考題庫附帶答案詳解
- 國開政治經濟學形考任務1-4試題及答案
- 第1章 整式的乘法(單元測試)(原卷)2024-2025學年湘教版七年級數學下冊
- 2025貴州中考:歷史必考知識點
- 《高中數學知識競賽》課件
- 2025-2030年中國城市燃氣行業發展分析及發展戰略研究報告
- 人民醫院關于印發對口支援工作管理辦法(暫行)
- 施工現場環境保護措施試題及答案
- 2025年下半年浙江嘉興市水務投資集團限公司招聘92人易考易錯模擬試題(共500題)試卷后附參考答案
評論
0/150
提交評論