Linux自动化运维(Shell与Ansible)(微课版) 课件 9-1-循环语句_第1页
Linux自动化运维(Shell与Ansible)(微课版) 课件 9-1-循环语句_第2页
Linux自动化运维(Shell与Ansible)(微课版) 课件 9-1-循环语句_第3页
Linux自动化运维(Shell与Ansible)(微课版) 课件 9-1-循环语句_第4页
Linux自动化运维(Shell与Ansible)(微课版) 课件 9-1-循环语句_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

Linux自动化运维项目9:自动化任务控制

学习目标【知识目标】了解loop循环语句和when条件语句基本概念。了解处理程序基本概念。了解任务失败条件判断基本结构。了解任务分组和任务标记基本概念。【技能目标】掌握循环语句基本语法,能够使用loop关键字完成循环任务。掌握条件语句基本语法,能够使用when关键字完成条件任务。掌握处理程序基本语法,能够使用handlers关键字完成任务处理。掌握任务失败条件判断,能够完成失败任务的控制处理。掌握任务分组方法,能够使用block、rescue、always关键字完成任务控制。【素质目标】培养读者的团队合作精神、协同创新能力,使其能够在团队中积极合作、有效沟通。培养读者的独立思考能力和逻辑思维能力,使其能够运用逻辑思维解决复杂问题。自动化任务控制任务1:循环语句目录/Contents0102简单的列表循环字典循环01简单的列表循环简单的列表循环循环语句是一种用于重复执行某个任务或操作的结构,它允许使用者在任务中对一组对象进行迭代操作,以便在每个迭代周期中执行相同的任务。对于需要重复执行相同操作的场景,循环语句可以大大提高工作效率。Ansible支持多种类型的循环语句,涉及loop、with_×和until等关键字,在Ansible2.4及之前的版本中,with_×关键字是用于循环迭代的通用关键字,可以与不同的插件结合使用,以便在任务中迭代不同的对象。在Ansible2.5及之后的版本中,with_×关键字被loop关键字所取代。在较新版本的Ansible中,推荐使用loop关键字进行循环迭代,并结合loop_control和loop_var关键字以及lookup、query插件来实现复杂的循环需求。简单的列表循环loop关键字用于执行循环语句的基本语法如下:其中,module_name用于指定要执行的模块名称,module_parameter用于指定模块的参数名,{{item}}表示对列表中的每个元素进行迭代,并将其作为参数传递给模块。loop关键字指定要迭代的数据结构,可以是列表或字典等数据结构。-name:Executetaskwithaloop<module_name>:<module_parameter>:"{{item}}"loop:-value1-value2简单的列表循环loop循环语句是一种用于重复执行任务的控制结构,它允许对一个列表或数组进行迭代,并在每次迭代中执行一组任务。循环的变量可以在变量文件中定义,或者在vars关键字部分中定义,然后在任务中引用列表变量的名称。-name:Loopingoveralistofitemshosts:allvars:packages:-nginx-mysql-redistasks:-name:Createdirectoryfile:path:"/tmp/{{item}}"state:directoryloop:-dir1-dir2-name:Createfilecopy:content:"Thisis{{item}}file"dest:"/tmp/{{item}}/file.txt"loop:-dir1-dir2-name:Installpackagesyum:name:"{{item}}"state:presentloop:"{{packages}}"在示例中,loop关键字用于迭代一个包含两个目录名称的字符串列表,并将列表中每个元素作为item变量的值传递给3个任务。第1个任务使用file模块创建一个目录,并使用item变量构建目录路径。第2个任务使用copy模块在每个目录中创建一个文件,并使用item变量构建文件路径和内容。第3个任务使用yum模块安装软件包,vars关键字定义了一个列表变量packages,它是一个包含3个软件包名称的列表,在任务中使用loop循环语句在所有主机上依次安装这3个软件包。简单的列表循环由于service模块不支持变量列表,如果需要启动10个模块,普通的编写方式需要10个任务,但使用loop循环语句后就可以提供自动化任务。vars:web_services:-nginx-httpdtasks:-name:NginxandHttpdarerunningservice:name:"{{item}}"state:startedloop:"{{web_services}}"loop循环语句和item密切相关,loop关键字用于迭代一个列表,并将列表中的每个元素作为item变量的值传递给任务。在每次循环迭代中,item变量都会被设置为列表中的当前元素。在以下示例中,变量web_services含有需要处于运行状态的服务的列表。02字典循环字典循环在循环任务中,可使用loop关键字遍历字典并访问其键和值,每次循环迭代都会将一个包含key和value的字典作为item变量的值传递给任务。在下面的任务中,loop循环语句会使用item.key和item.value分别引用字典中的键和值,以输出每个键值对。上述示例中的user_data字典变量,使用dict2items

过滤器将其转换为适用于循环的列表结构。loop循环语句会将以下两个键值对分别作为user_data变量的值传递给任务。----name:Loopthroughdictionaryvariablehosts:localhostvars:user_data:username:devgroupname:wheeltasks:-name:Iteratingoveralistofhashesbykeyandvaluedebug:msg:"{{item.key}}is{{item.value}}"loop:"{{user_data|dict2items}}"字典循环在较新版本的Ansible中,loop关键字与loop_control

关键字结合可以更精细地控制循环行为,比如自定义循环变量名标签、循环迭代之间的暂停时间等。loop循环语句会将以下两个键值对分别作为user_data变量的值传递给任务。[{"key":"username","value":"dev},{"key":"groupname","value":"wheel"}]----name:Loopthroughdictionaryvariablehosts:localhosttasks:-name:printdictionaryvariablebyloopdebug:msg:"Filenameis/etc/{{file_name}},Filemodeis{{mode}}“loop:-{file_name:'passwd',mode:'0644'}-{file_name:'shadow',mode:'0600'}loop_control:loop_var:file_itemvars:file_name:"{{file_item.file_name}}"mode:"{{file_item.mode}}"在示例中,loop用于遍历一个包含两个字典的列表,每个字典表示一个文件的信息(文件名和文件模式)。{file_name:'passwd',mode:'0644'}和{file_name:'shadow',

温馨提示

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

评论

0/150

提交评论