版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司万圣节活动策划方案
- 以陪伴为话题的作文15篇
- 政教处星级金色少年评价实施方案
- 驾照满分学习心得体会7篇
- 感恩主题演讲稿集合9篇
- 精彩的乒乓球比赛作文400字合集7篇
- 《员工不确定性容忍度对创新行为的影响研究》
- 《喷油嘴喷孔流道磨料流光整特性仿真与试验研究》
- DB51T 2169-2016 标准菌株的保存与使用指南
- 2023年学期中山市西区聚星学校教师招聘考试真题
- 关于大数据的职业生涯规划书课件
- 电子化文件与信息管理制度
- 心理健康讲座(课件)-小学生心理健康
- 顶管工程安全措施和操作规程
- 高标准农田农田水利工程施工方案
- PDCA循环培训课件
- MOOC 中级会计学-中南财经政法大学 中国大学慕课答案
- 中国饮食文化智慧树知到期末考试答案2024年
- 《电力勘测设计企业安全生产标准化实施规范》
- 第五单元《京腔昆韵》-欣赏 ☆姹紫嫣红 课件- 2023-2024学年人音版初中音乐八年级下册
- 国家粮食和物资储备局招聘考试试题及答案
评论
0/150
提交评论