Linux自动化运维(Shell与Ansible)(微课版) 课件 7-3-Play基本格式_第1页
Linux自动化运维(Shell与Ansible)(微课版) 课件 7-3-Play基本格式_第2页
Linux自动化运维(Shell与Ansible)(微课版) 课件 7-3-Play基本格式_第3页
Linux自动化运维(Shell与Ansible)(微课版) 课件 7-3-Play基本格式_第4页
Linux自动化运维(Shell与Ansible)(微课版) 课件 7-3-Play基本格式_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AnsiblePlaybook基本语法任务3:Playbook基本格式目录/Contents010203编写并运行Playbook提高输出的详细程度语法验证01编写并运行PlaybookPlaybook简介AnsiblePlaybook是一种用YAML格式编写的自动化代码文件,它可以在无须人工干预或有限人工干预的前提下,通过预先编写的代码来执行复杂的IT操作。Playbook可以对一组或一类共同构成Ansible清单文件的主机进行操作,常用于IT基础设施的自动化场景,涵盖基础架构、网络设备、安全合规、应用部署等,可实现可扩展、高效、一致的自动化操作。Playbook可以称为剧本,通常包含一个或多个play。play则是Playbook中的一个场景,用于描述一组相关任务,并指定要在哪些主机上执行任务。每个play有一个或多个任务(task,即在目标主机上执行的特定任务),每个任务执行一个具有特定参数的模块,在Playbook中,可以使用变量、条件语句、循环语句等,还可以包含其他文件,以实现更灵活和复杂的自动化任务和部署场景。运行Playbook下面是简单的Playbook示例:----name:PLAY-1Deployingapachehttpdwebserviceshosts:tasks:-name:P1Task-1InstallthelatestversionofApacheyum:name:httpdstate:latest-name::P1Task-2InstallthelatestversionofApachedebug:msg:-“SuccessInstallApacheWebServerInfo”-name:PLAY-2Deployingnginxwebserviceshosts:tasks:-name::P2Task-1InstallthelatestversionofNginxyum:name:nginxstate:latest第1个Playbook起始符Play1模块名模块名模块名Task1Task2Task1Play2在示例中,Playbook开头的一行由3个短横线(---)组成,3个短横线是一种常用的分隔符,可将Playbook分成多个独立的部分。在这个示例中,有一个Playbook,Playbook包含两个play。在其他场景中,Playbook末尾可能使用3个圆点(...)作为文档结束标记,但在实践中通常会省略。在Playbook示例中,---后的行以短横线开头,然后列出play列表中第一个play。每个play都以短横线和空格开头,表示该play是Playbook中的一个项目。每个play有3个相同缩进的键:name、hosts和tasks。运行Playbookplay中的第二个键是hosts属性,它用于指定运行play中的任务的主机,hosts属性将主机或主机名称作为值,如清单文件中受管主机或组的名称。play中的最后一个键是tasks属性,其值用于指定要为该play运行的任务的列表。Playbook示例中第一个play只有一项任务,该任务使用特定参数运行yum模块以安装httpd软件包。play的第一个键是name属性,它将一个任意字符串作为标签与该play关联。name键虽然是可选的,但建议使用,因为它标识了play的用途,特别是当Playbook包含多个play时,使用name属性可以帮助用户更好地了解每个play的功能和作用。-name:Deployingwebserviceshosts:tasks:-name:InstallthelatestversionofApacheyum:name:httpdstate:latest运行PlaybookPlaybook是以YAML格式编写的文本文件,如需表达更为复杂的配置和自动化任务,可使用映射和列表组合的数据结构。#服务器配置-server1:os:openEuler22services:-apache-mysql-sshusers:-username:huaweihome_dir:/home/huaweigroups:-admin-developersssh_keys:-ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAAB-username:janehome_dir:/home/janegroups:-adminssh_keys:-ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAAC在示例中,每个服务器都以其名称作为字典键,并以操作系统、服务和用户列表作为字典值,每个用户又以其用户名作为字典键,并以主目录、组和SSH密钥列表作为字典值。Playbook中play和任务列出的顺序很重要,因为Ansible会按照相同的顺序运行任务。在编写Playbook时,需要仔细考虑任务列表的顺序,以确保所有任务都按照正确的顺序运行,并且Playbook能够实现预期的效果。运行Playbookansible-playbook命令可用于运行playbook。该命令在控制节点上执行,要运行的Playbook的名称则作为参数传递,基本格式如下:在运行Playbook时,将输出所执行的play和任务。输出中也会报告执行的每一项任务的结果,以下示例显示了一个简单的Playbook内容,以及其运行结果:ansible-playbook[options]playbook.yml[rhce@control~]$catset-firewall.yml----name:Configurefirewalldruleshosts:tasks:-name:Redirectport443to8443withRichRuleansible.posix.firewalld:rich_rule:rulefamily=ipv4forward-portport=443protocol=tcpto-port=8443zone:publicpermanent:trueimmediate:truestate:enabled运行Playbook[rhce@control~]$ansible-playbookset-firewall.ymlPLAY[Configurefirewalldrules]*******************************************************TASK[GatheringFacts]*****************************************************************ok:[]TASK[Redirectport443to8443withRichRule]****************************************ok:[]PLAYRECAP*****************************************************************************

:ok=2changed=0unreachable=0failed=0skipped=0rescued=0ignored=0在AnsiblePlaybook运行时,每个play和任务的名称都会在屏幕上显示。GatheringFacts任务是一项特殊的任务,setup模块通常在play启动时自动运行此任务以收集有关目标主机的信息。对于含有多个play和任务的Playbook,设置任务名称可以使监控Playbook的执行进度变得更加容易。在任务完成后,如果目标主机的状态发生了变化,Ansible会将任务的状态标记为changed,表示任务更改了主机上的某些设置,使其符合规格要求。通常情况下,AnsiblePLaybook中的任务是幂等的,幂等性是指无论任务运行多少次,系统的状态都保持一致,即任务的效果只会发生一次,再次运行任务不会对系统产生额外的影响。幂等性是Ansible的一个关键特性,它确保在重复运行Playbook时,每个任务只会在需要时执行,而且只会执行必要的操作来实现所需的状态,而不会执行多余的操作。02提高输出的详细程度提高输出的详细程度ansible-playbook命令的默认输出不提供详细的任务执行信息。ansible-playbook-v命令提供了额外的信息,共有4个级别。Playbook执行的输出详细程度选项如表所示:序号选项描述1-v默认级别,显示基本的任务执行信息2-vv显示任务执行结果和任务配置3-vvv显示关于与受管主机连接的信息4-vvvv显示SSH通信的所有详细信息、调试信息和错误消息。增加了连接插件相关的额外详细程度选项,可显示包括受管主机上执行脚本的用户以及所执行的脚本等信息03语法验证语法验证在使用ansible-playbook命令运行Playbook之前,可以使用--syntax-check选项对Playbook的语法进行验证,以确保其正确无误。在执行PLaybook之前,最好进行验证,以确保其语法正确无误。ansible-playbook命令提供了--syntax-check选项,可用于验证Playbook的语法。下面演示一个Playbook成功通过语法验证。[rhce@control~]$ansible-playbook--syntax-checkwebserver.ymlplaybook:webserver.yml语法验证syntax-check上述示例演示了一个Playbook语法验证失败而输出信息,包括JSON和YAML解析错误,同时指出了错误所在的文件、行数、列数和具体问题,具体问题是set-firewall.yml文件第7行第29列处的rich_rule错误。语法验证失败时,将报告语法错误。输出中也包含语法问题在Playbook中的大致位置。[rhce@control~]$ansible-playbook--syntax-checkset-firewall.ymlERROR!WewereunabletoreadeitherasJSONnorYAML,thesearetheerrorswegotfromeach:JSON:Expectingvalue:line1column1(char0)SyntaxErrorwhileloadingYAML.mappingvaluesarenotallowedinthiscontextTheerrorappearstobein'/home/rhce/ansible/set-firewall.yml':line7,column29,butmaybeelsewhereinthefiledependingontheexactsyntaxproblem.Theoffendinglineappearstobe:rich_rule:rulefamily=ipv4forward-portport=443protocol=tcpto-port=8443^hereThereappearstobeboth'k=v'shorthandsyntaxandYAMLinthistask.Onlyonesyntaxmaybeused.语法验证ansible-lintansible-lint是一款命令行工具,用于检查Playbook、角色和集合的代码规范。ansible-lint可以帮助用户升级他们的代码以适应较新的Ansible版本。建议使用最新版本的Ansible。[rhce@control~]$ansible-lintset-firewall.ymlWARNINGListing2violation(s)thatarefatalargs[module]:Unsupportedparametersfor(basic.py)module:rich_rule.Supportedparametersinclude:timeout,icmp_block_inversion,zone,icmp_block,interface,masquerade,rich_rule,service,offline,port,port_forward,immediate,permanent,source,target,state.(warning)set-firewall.yml:5Task/Han

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论