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

下载本文档

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

文档简介

变量与事实任务3:事实变量目录/Contents01事实变量简介02setup模块03set_fact模块01事实变量简介事实变量简介在Ansible中,事实信息是指与主机系统相关的数据,包括操作系统版本、内核版本、内存、CPU、网络地址、主机名、文件系统等。事实信息是Ansible在执行任务时自动收集的,不需要额外配置,它可以帮助用户获取目标主机的环境信息、IT基础设施状态,或者作为条件和参数用于后续任务中,以便根据目标主机的系统信息执行不同的任务。Ansible事实变量就是存储事实信息的数据结构,通过ansible_facts变量或带有ansible_前缀的顶级变量引用具体的事实信息。事实变量简介常见的事实变量如表所示:序号事实变量名描述1ansible_distribution目标主机的操作系统发行版名称,如Ubuntu、CentOS等2ansible_distribution_version目标主机的操作系统版本号,如7、8、9、18.04等3ansible_fqdn目标主机的完全限定域名4ansible_hostname目标主机的主机名5ansible_default_ipv4目标主机默认IPv4地址6ansible_memtotal_mb目标主机的内存容量,单位为MB7ansible_processor_vcpus目标主机的处理器虚拟核心数量8ansible_architecture目标主机的系统架构,如x86_64等9ansible_date_time目标主机的日期和时间信息,包括当前时间、日期、时区等10ansible_mounts目标主机当前系统挂载的文件系统信息,包括挂载点、文件系统类型、设备名称、容量、使用情况等信息11ansible_interfaces目标主机网络接口信息12ansible_devices目标主机上的设备信息,包括硬盘、分区、磁盘容量等调用事实变量Ansible使用ansible_facts变量存储事实信息。ansible_facts使用基于Python字典类型的数据结构存储数据,字典是一种无序的键值对集合,字典变量中的键是代表系统信息的字符串,而值是与键相关联的系统信息数据。默认情况下,常见的Ansible事实信息可以作为顶级变量访问,这些变量以ansible_开头。比如可以使用ansible_distribution变量获取远程主机的操作系统发行版名称,使用ansible_facts['default_ipv4']['address']变量获取远程主机的默认IPv4地址。这些变量可以在AnsiblePlaybook中直接使用。调用事实变量在示例中,第1个任务使用debug模块输出所有事实信息;第2个任务使用debug模块输出ansible_facts['default_ipv4']['address']事实信息,即输出远程主机的操作系统发行版名称;第3个任务使用debug模块输出ansible_all_ipv4_addresses变量,将INJECT_FACTS_AS_VARS的值设置为false,不需要在ansible_default_ipv4['address']前面添加ansible_facts,即可输出默认的IPv4地址。----name:Printfactsmessagehosts:webtasks:-name:Printallavailablefactsdebug:var:ansible_facts-name:Printsystemfactsbeginwiththeansibleprefixdebug:var:ansible_facts['ansible_distribution’]-name:PrintsystemfactswithINJECT_FACTS_AS_VARSdisableddebug:var:ansible_default_ipv4['address’]vars:INJECT_FACTS_AS_VARS:false调用事实变量默认情况下,Ansible会在每个play开始时收集事实信息,也可以通过在Playbook中设置gather_facts来禁用事实信息收集。收集主机的事实信息可能会占用一定的时间和资源,因此在执行大规模自动化任务或需要快速执行任务的情况下,可以通过将gather_facts设置为false来禁用事实信息收集,从而提高Ansible的执行效率。-name:Exampleplaybookhosts:allgather_facts:falsetasks:-name:Exampletaskshell:echo"Hello,world!"需要注意的是,如果某些任务需要调用事实信息才能正确运行,禁用事实信息收集可能会导致这些任务无法正常执行。在这种情况下,可以手动指定所需的事实信息,或者在任务中使用delegate_to或local_action将任务委托给另一个主机或本地执行。02setup模块setup模块setup模块是用于收集主机事实信息的内置模块。此模块可在Playbook中通过任务自动调用,也可以通过/usr/bin/ansible直接执行。当使用setup模块时,可以使用filter参数来指定要收集的系统信息的子集,filter参数可接收一个字符串列表,其中每个字符串都是一个要收集的系统信息的名称或模式。setup模块示例如表所示:序号示例描述1ansibleall-mansible.builtin.setup-a'filter=ansible_eth[0-2]'在所有主机上执行setup模块,收集主机的事实信息,并只显示与过滤器ansible_eth[0-2]匹配的网络接口(eth0、eth1、eth2)的信息2ansibleall-mansible.builtin.setup-a'gather_subset=network,virtual'在所有主机上执行setup模块,只收集与网络和虚拟化有关的事实信息4ansibleall-mansible.builtin.setup-a'gather_subset=!all'只收集默认的最小事实集5ansibleall-msetup-a"filter=*ipv4*只返回包含ipv4的事实信息,比如过滤器匹配了ansible_default_ipv4和ansible_all_ipv4_addresses两个键,因此会返回包含这两个键的所有事实信息6ansibleall-msetup-a"filter=*mem*"只返回包含mem的事实信息,输出结果是每个主机的ansible_facts字典的所有键中包含mem字符串的事实信息,例如内存容量和使用情况等03set_fact模块set_fact模块set_fact模块的主要作用是在Playbook运行过程中设置或修改变量,这些变量可以根据实际需求进行调整,并在Playbook的其他任务中使用,从而实现更灵活的任务控制与参数传递。set_fact模块的基本语法如下:其中,variable_name表示要设置或修改的变量名,variable_value表示要设置或修改的变量值,可以是字符串、数字或其他合法的YAML数据。-name:Setvariablevalueset_fact:variable_name:variable_valueset_fact模块set_fact设置变量示例:-name:Printsetfactvarhosts:localhostvars:my_variable:"original_value"tasks:-name:Setanewvariableset_fact:new_variable:"new_value"-name:Modifyanexistingvariableset_fact:my_variable:"modified_value"-name:Printthevariablesdebug:msg:|Thisis{{my_variable}}Thisisother{{new_variable}}在上述示例中,首先定义了一个名为

温馨提示

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

评论

0/150

提交评论