Linux自动化运维(Shell与Ansible)(微课版) 课件 8-1-变量概述_第1页
Linux自动化运维(Shell与Ansible)(微课版) 课件 8-1-变量概述_第2页
Linux自动化运维(Shell与Ansible)(微课版) 课件 8-1-变量概述_第3页
Linux自动化运维(Shell与Ansible)(微课版) 课件 8-1-变量概述_第4页
Linux自动化运维(Shell与Ansible)(微课版) 课件 8-1-变量概述_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

Linux自动化运维项目8:变量与事实

学习目标【知识目标】了解Ansible变量的定义和引用基本概念。了解vars和vars_files

关键字的用法。了解事实变量和注册变量基本概念。了解主机和主机组变量、特殊变量基本概念。【技能目标】掌握Ansible变量的定义和调用方法。掌握事实变量的使用方法,能够使用Ansible事实引用受管主机的数据。掌握注册变量的使用方法,能够使用register关键字捕获任务的输出。掌握groups、group_names、inventory_hostname、hostvars

特殊变量的调用方法。【素质目标】培养读者诚信、务实、严谨的职业素养,培养其正确的职业道德观念和职业操守,使其实事求是、严谨治学,以诚信为基础,做一个优秀的职业人员。培养读者系统分析与解决问题的能力,使其能够掌握相关知识点并完成项目任务。变量与事实任务1:变量概述目录/Contents010203定义和引用变量在文件中引用变量布尔值变量04

列表变量05

字典变量01定义和引用变量定义和引用变量变量可以指在计算机存储器里存在值的被命名的存储空间。Ansible使用变量来管理不同主机之间的差异,变量可以是不同类型的值,比如字符串、数字、布尔值、列表、字典等。Ansible可以在命令行、Playbook、清单文件、角色中定义和引用变量,通常使用标准的YAML语法创建变量。通过使用变量,可以让自动化任务更加灵活,根据每个主机的不同情况自动化适应其配置。在Ansible中定义变量要满足基本的命名规则,并非所有的字符串都是有效的Ansible变量名,变量名只能由字母、数字、下画线组成,变量名不能以数字开头,Python关键字或Playbook关键字不是有效的变量名。而以下画线开头的变量名可以使用,但不能保证其私有性或安全性。Ansible有效和无效变量名示例如表所示:序号有效的变量名无效的变量名1foo*foo,Python关键字,比如async、lambda、for、when等2foo_envPlayboook关键字,比如become、vars、register等3foo_portfoo-port、fooport、foo.port4foo5、_foo5foo、12定义和引用变量使用标准的YAML语法定义一个简单的变量时,只需要使用冒号(:)将变量名和变量值分隔开,如下所示:在定义变量后,使用Jinja2语法来引用变量。Jinja2变量使用双花括号,比如表达式“Myampgoesto{{max_amp_value}}”表示引用变量的基本形式。在Playbook中引用变量时,需要使用{{}}标识变量名,如下所示:-name:Mytaskdebug:msg:Thevalueofmy_varis{{my_var}}my_var:some_value定义和引用变量在YAML文件中,如果在一个值的开头使用了{{my_var}}这样的表达式,它通常用于引用变量。由于YAML语法中使用花括号标识字典,所以解释器无法确定该表达式表示变量还是字典。为了避免这种歧义,需要将整个表达式放在引号中,以便解释器正确地解释整个表达式。如果没有引号,解释器就会解释失败并显示错误消息。-name:Mytaskdebug:msg:"{{my_var}}/18"在Ansible中,vars关键字用于在Playbook中定义变量,这些变量可以直接在任务中使用,使Playbook更加灵活和可配置。vars关键字的基本语法如下:vars:var1:value1var2:value2var3:value3定义和引用变量在下面的示例中,使用var关键字定义一个名为my_var的变量,它的值是字符串“Hello,World!”,在任务中使用debug模块和msg选项来输出这个变量的值。-name:Defineandprintavariablehosts:localhostvars:my_var:"Hello,World!"tasks:-debug:msg:"{{my_var}}"02在文件中引用变量在文件中引用变量在Ansible中,vars_files关键字用于在Playbook中引用存储变量的文件,这些文件可以是YAML格式或JSON格式的。vars_files关键字的基本语法如下:vars_files:-path/to/varfile1.yml-path/to/varfile2.yml其中,path/to/varfile1.yml和path/to/varfile2.yml是包含变量的YAML文件的路径。在文件中引用变量在上面的示例中,vars_files关键字用于从vars.yml文件中加载变量,这些变量可以在Playbook的任务中使用。#变量文件vars.yml---var1:value1var2:value2var3:value3#在Playbook中引用文件中的变量-name:Exampleplaybookhosts:web_serversvars_files:-vars.ymltasks:-name:Task1debug:msg:Var1is{{var1}},var2is{{var2}},var3is{{var3}}在Playbook中,使用vars_files关键字来加载vars.yml文件中定义的变量:03布尔值变量布尔值变量在Ansible中,布尔值变量可以用不同的形式来表示,包括true/false、1/0、yes/no、True/False等。在匹配有效字符串时,不区分字母大小写。ansible-lint是一个用于检查AnsiblePlaybook是否符合规范的工具,该工具更倾向于使用true/false作为布尔值,文档中的示例也采用这种方式,保持与ansible-lint默认设置的兼容性。常见的布尔值表示形式如表所示:序号布尔值布尔值表示1真值True、'true'、't'、'yes'、'y'、'on'、'1'、1、1.02假值False、'false'、'f'、'no'、'n'、'off'、'0'、0、0.004列表变量列表变量列表变量是一种常见的变量类型,是由变量名和多个值组合在一起的单个变量。列表变量可以通过定义一个包含多个值的项目化列表,或使用方括号[]包含多个值并用逗号分隔来创建。列表变量可以包含多种类型的值,比如字符串、数字、布尔值、其他列表等,常用于存储一组相关的值,比如IP地址列表、文件路径列表。在Playbook中,可以使用列表变量来定义任务的目标主机、执行特定模块的参数、应用特定配置文件的路径等。列表变量可以使用YAML格式的语法定义,示例如下:my_list:-value1-value2-value3列表变量在这个示例中,我们定义了一个名为my_list的列表变量,它包含3个字符串值value1、value2和value3。引用列表变量时,可以通过指定其索引来访问列表中的特定项。在列表中,第一个项的索引为0,第二个项的索引为1,以此类推。可以仅使用列表中的特定项来执行特定任务,而不必引用整个列表。在Playbook中引用列表变量my_list中的第二个值,示例如下:-name:Printthesecondvalueinmy_listdebug:msg:"Thesecondvalueofmy_varis{{my_list[1]}05字典变量字典变量字典是将数据存储在键值对中的一种数据结构,其中每个键值对表示一个特定的数据项。字典变量可以包含多种类型的值,比如字符串、数字、布尔值、列表、其他字典等。在使用字典变量时,可以使用键来访问特定的值,以便执行特定的任务或操作。在Ansible中,可以使用YAML语法定义字典变量,示例如下:my_dict:key1:value1key2:value2key3:value3在上述示例中,定义了一个名为my_dict的字典变量,它包含3个键值对,其中键是key1、key2和key3,值分别为value1、value2和value3。字典变量引用字典变量时,可以使用方括号或点号来访问该字典中的单个特定键值。在Playbook中引用字典变量my_dict中的key2键的值value2,示例如下:-name:Printthevalueofkey2inmy_dictdebug:msg:"Thethevalueofkey2inmy_dictis{{my_dict['key2']}-name:Printthevalueofkey2inmy_dictdebug:msg:"Thethevalueofkey2inmy_dictis{{my_dict.key2}上述两个示例都引用了相同的值value2。在Ansible中使用字典变量时,推荐使用方括号形式来访问特定的键值。字典变量在Ansible中,注册变量、事实变量、特殊变量存储的数据都是嵌套类型的数据结构。引用嵌套变量示例如下:-name:Printcompanyinformationhosts:localhostvars:web_servers:-name:webserver1ip:ports:-80-443-name:webserver2ip:ports:-80-443db_servers:-name:dbserver1ip:ports:-3306tasks:-name:Printweb_serverIPAddressdebug:msg:"Thisisweb_serverip{{web_servers[0].ip}}"-name:Printdb_serversIPAddressdebug:msg:"Thisisdb_serversip{{db_servers[0].name}}"在示例中,定义了两个列表,一个是web_servers,另一个是db_servers,每个列表中都包含一个或多个嵌套的变量。web_servers列表中的每个元素都是一个字典,包含名字、IP地址和端口信息。同样,db_servers列表中的每个元素也是一个字典,包

温馨提示

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

评论

0/150

提交评论