版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux操作系统AnsiblePlaybook基本语法目录/Contents010203YAML基本格式Playbook基本格式执行Playbook01YAML基本格式在Ansible中,YAML常用于编写Playbook、清单文件、变量、角色等,它可使Playbook和清单文件更加易于阅读和理解,能帮助用户轻松地部署和维护复杂的自动化任务。01除了在Ansible中使用之外,YAML还用于Kubernetes资源部署、GitHub源码控制中的跟踪和审计变更等。02YAML拥有Perl、C、XML、HTML和其他编程语言的特性。YAML也是JSON的超集,所以JSON文件在YAML中有效。YAML使用Python风格的缩进来表示嵌套,不能使用制表符,推荐使用空格来代替。03YAML简介YAML是一种轻量级的数据序列化语言,其语法类似Python,使用缩进和换行来表示结构层次关系,不需要使用标签或者属性来标记数据。相对于XML和JSON等格式,YAML格式更加紧凑和简洁。YAML基本语法在YAML文件中,3个短横线(---)表示文档分隔符,用于将一个文件分成多个YAML文档。每个文档以单个短横线(-)开头,表示一个序列(列表),或以键值对的形式表示一个映射(字典)。使用3个短横线可以将多个文档组合到一个文件中,每个文档之间用3个短横线分隔。例如,以下是一个包含两个文档的YAML文件示例:---name:Johnage:30---name:Janeage:25在YAML文件中使用3个短横线并不是必需的,特别是在只有一个YAML文档的情况下。但是,如果需要在同一个文件中包含多个YAML文档,使用3个短横线可以使它们更易于管理和处理。使用YAML格式编写文件时,可以使用映射和列表这两种结构来组织数据。映射数据结构映射是一种用于表示键值对的数据结构,类似于字典或哈希表。通常使用冒号(:)来将键和值分隔开,其中每个键必须唯一,冒号和值之间的空格也是必需的。例如,下面是一个简单的YAML映射示例:name:JohnSmithage:30email:john@在这个示例中,name是键,对应的值是字符串JohnSmith;age是键,对应的值是整数30;email是键,对应的值是字符john@。映射数据结构在YAML文件中使用映射时,可以通过缩进来表示层次结构,YAML对缩进的空格数量没有严格的要求,但有两个基本规则。同一层级的元素(键值对或子映射)必须使用相同数量的空格进行缩进,以表示它们处于相同的层次结构级别。子映射的缩进必须大于其父映射,以明确表示层次结构关系。映射也可以嵌套,以表示更复杂的数据结构,例如:person:name:JohnSmithage:30contact:email:john@phone:555-123456在这个示例中,person和contact是顶级映射的键,它们有相同的缩进级别。而name、age、email和phone是每个映射的键对应的值,它们相对于各自映射键进行缩进。列表数据结构列表由一组项目组成,每个项目可以是任何YAML数据结构,包括映射或列表。列表使用短横线(-)来标记每个项目,并使用缩进来表示层次结构。例如,下面是一个简单的YAML列表示例:-JohnSmith-JaneDoe-BobJohnson在这个示例中,定义了一个包含3个项目的列表,分别是JohnSmith、JaneDoe和BobJohnson。与映射不同,列表包含一组按照特定顺序排列的值,它可以包含任意数量的所需项目。在YAML文件中使用列表时,使用短横线和空格来开始一个新的项目,并使用缩进来表示层次结构。例如,下面是一个包含列表的YAML文件示例:fruits:-apple-orange-banana在这个示例中,定义了一个名为fruits的映射,它包含一个名为fruits的列表。列表中包含3个项目,即apple、orange和banana。项目使用短横线和空格来标记,并使用缩进来表示层次结构。YAML文件的数据结构可以是映射或列表。映射用于关联键值对,列表用于包含项目。它们可以嵌套和组合使用,以创建复杂的数据结构。02Playbook基本格式Playbook基本格式AnsiblePlaybook是一种用YAML格式编写的自动化代码文件,它可以在无须人工干预或有限人工干预的前提下,通过预先编写的代码来执行复杂的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。Playbook基本格式play中的第二个键是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:latestPlaybook基本格式Playbook是以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能够实现预期的效果。03执行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运行时,Ansible会在屏幕上显示每个play和task的名称,并在play启动时自动通过setup模块执行GatheringFacts,以收集目标主机信息。在包含多个play的Playbook中,为每个任务指定名称可更直观地监控执行进度;任务完成后若对主机做出改动,状态会被标记为changed。Playbook中的任务具有幂等性:无论运行多少次,都只在必要时执行更改,确保系统始终与预期状态保持一致。运行Playbookansible-playbook命令的默认输出不提供详细的任务执行信息。ansible-playbook-v命令提供了额外的信息,共有4个级别。Playbook执行的输出详细程度选项如表所示:序号选项描述1-v默认级别,显示基本的任务执行信息2-vv显示任务执行结果和任务配置3-vvv显示关于与受管主机连接的信息4-vvvv显示SSH通信的所有详细信息、调试信息和错误消息。增加了连接插件相关的额外详细程度选项,可显示包括受管主机上执行脚本的用户以及所执行的脚本等信息在使用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错
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 行车梁隔热施工方案(3篇)
- 超级电视营销方案策划(3篇)
- 道路水篦子施工方案(3篇)
- 铁观音出口营销方案(3篇)
- 降低污染施工方案(3篇)
- 餐厅国庆活动营销方案(3篇)
- 26年银发粪嵌塞频发解决方案课件
- 溺水儿童急救的志愿者培训
- 腰痛的老年护理策略
- 老年人营养与社交功能维护
- 2026年东莞市卫生健康系统事业单位人员招聘考试备考试题及答案详解
- 2026新疆哈密市公安局社会招聘警务辅助人员220人备考题库及答案详解(有一套)
- 《公共机构碳排放核算指南》(jst303-2026)培训课件
- 2026年1月浙江省高考(首考)思想政治试题(含答案)
- 天燃气工程监理细则
- 2026年能源集成托管运营协议
- 2026年大学后勤集团办公室文秘招聘笔试写作题
- 钱梁实秋优秀课件
- RB/T 019-2019实验动物设施性能及环境参数验证程序指南
- 《钢结构工程施工员培训教材》
- GB/T 18993.1-2020冷热水用氯化聚氯乙烯(PVC-C)管道系统第1部分:总则
评论
0/150
提交评论