Ansible常用变量【上】

news2024/11/25 0:46:29

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


在Ansible中会用到很多的变量,Ansible常用变量包括以下几种:

1. 自定义变量——在playbook中用户自定义的变量;

2. 系统变量——用户无须自定义,Ansible会在执行playbook之前去远程主机上搜集远程节点系统信息的变量;

在模版文件中,可以直接使用上述两种变量

3. 注册变量——把任务的运行结果作为一个变量来使用;

4. 额外变量——为了使playbook更灵活,通用性更强,允许用户在执行playook时传入变量的值,这时候就需要用到“额外变量”。

1. 自定义变量

用户可以在playbook中通过vars关键字自定义变量,使用时用{{}}引用起来即可,具体的使用场景有多种。

1.1 在playbook中定义&使用变量

在playbook中,使用vars定义一个简单变量,然后在task中引用该变量即可。

举例:创建playbook文件test.yaml定义和引用自定义变量

[root@test101 ansible-test]# cat test.yaml 
---
- name: Test playbook with custom variables
  hosts: all
  gather_facts: no      #关闭Facts,不收集系统信息
  vars:
    custom_message: "Hello, SRE"   #定义变量
  tasks:
    - name: Display custom message
      debug:
        msg: "{{ custom_message }}"  #引用变量,注意这里冒号后面以{开头的时候,{}必须加上引号,否则执行会报错
[root@test101 ansible-test]#

执行yaml文件效果:

1.2 把变量放在单独文件中

当变量较多的时候,或变量需要在多个playbook中重复使用的时候,可以把变量放到一个单独的文件中,通过关键字“var_files”把文件中定义的变量引用到playbook中。使用变量的方法和在本文件中定义变量的使用方法相同。

举例:

1)创建变量文件

[root@test101 ansible-test]# cat vars/custom_message.yaml 
custom_message: "Hello, SRE"
[root@test101 ansible-test]# 
[root@test101 ansible-test]#

2)修改test.yaml中引用变量的方法

[root@test101 ansible-test]# cat vars/custom_message.yaml 
custom_message: "Hello, SRE"
[root@test101 ansible-test]# 
[root@test101 ansible-test]# cat test.yaml 
---
- name: Test playbook with custom variables
  hosts: all
  gather_facts: no
  vars_files:       #引用变量文件
    - vars/custom_message.yaml    变量文件,这里是相对路径
  tasks:
    - name: Display custom message
      debug:
        msg: "{{ custom_message }}"
[root@test101 ansible-test]# 
[root@test101 ansible-test]#

执行test.yaml效果:

1.3 定义和使用复杂变量

在有些场景中,需要使用的变量不是简单的数字或者字符串,而是比较复杂的变量。比如下面的例子

举例:创建test.yaml文件定义和引用复杂变量

---
- name: Ansible playbook with variable and usage
  hosts: all
  gather_facts: no

  vars:            #定义复杂变量
    user_info:
      Name: SRE
      Age: 25
      TEL: 88888888

  tasks:
    - name: Display user information
      debug:
        msg: "Name: {{ user_info.Name }}, Age: {{ user_info.Age }}, TEL: {{ user_info.TEL }}"      #使用点号引用变量
        #msg: "Name: {{ user_info['Name'] }}, Age: {{ user_info['Age'] }}, TEL: {{ user_info['TEL'] }}"  #使用中括号引用变量

执行test.yaml效果:

2. 远程主机系统变量(Facts)

ansible会通过模块“setup”来搜集主机的系统信息,这些搜集到的信息叫做Facts。每个playbook在执行前都会默认执行setup模块,所以这些Facts信息可以直接以变量的形式使用。

查看有哪些Facts变量可以调用setup模块查看:

# ansible all -m setup -u root
或
# ansible all -m setup

2.1 引用Facts变量

系统变量可以直接引用,不需要定义,只是在引用多层变量的时候,注意一下引用的格式方法。如下面的例子:

[root@test101 ansible-test]# cat test.yaml 
---
- name: Test playbook with facts variables
  hosts: all
  tasks:
    - name: Display facts message
      debug:
        #msg: "{{ ansible_nodename }}"    #1. 引用简单的单层变量

        #msg: "{{ ansible_ens32.device  }}"    #2. 两种方式引用双层变量
        #msg: "{{ ansible_ens32['device'] }}"

        #msg: "{{ ansible_ens32.ipv4.address }}"    #3. 两种方式引用复杂的多层变量
        msg: "{{ ansible_ens32['ipv4']['address'] }}"
[root@test101 ansible-test]#

执行test.yaml效果:

2.2 关闭Facts

收集Facts信息会消耗额外的时间,如果不需要Facts信息,则可以在playbook中,通过关键字“gather_facts”来控制是否收集远程系统的信息。

如果不搜集系统信息,则facts变量就不能在该playbook中使用了。

如:关闭Facts见1.1中的例子。

未完待续...

感谢您的喜爱与分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1666574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

函数重载和函数模板

c语言中函数名字不可重复,但是可以写代码实现 普通的函数重载 这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同和返回值没有关系(因为就像我想调用Add(1,2),Add重载的几个函数仅仅返回值不同,编辑器就不知道去找哪一个,就有歧义了) 情况1-数组 int ave(int*pa,i…

用 Supabase CLI 进行本地开发环境搭建

文章目录 (零)前言(一)Supabase CLI(1.1)安装 Scoop(1.2)用 Scoop 安装 Supabase CLI (二)本地项目环境(2.1)初始化项目(2…

【全开源】微凌客洗护小程序FastAdmin+Uniapp(源码搭建/上线/运营/售后/维护更新)

一款基于FastAdminUniapp开发的洗护小程序系统,适用于线上下单到店核销的业务场景,拥有会员卡、优惠券、充值提现、商户管理等功能,提供Uniapp后台无加密源代码。 线上线下融合:微凌客洗护小程序适用于线上下单到店核销的业务场景…

nacos命名空间的配置

给微服务配置namespace 给微服务配置namespace只能通过修改配置来实现。 例如,修改order-service的application.yml文件: spring:cloud:nacos:server-addr: localhost:8848discovery:cluster-name: HZnamespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f…

C语言数据结构 - 选择题集合(二叉树)

一生负气成今日 四海无人对夕阳 目录 树的专辑 树的专辑 1.有n个元素的完全二叉树的深度是( ) A.nlogn B.nlogn1 C.logn D.logn1 答案:D 解析: 设完全二叉树的节点数为 N,高度为 h ,高度为 h 时空的结点…

python零基础知识 - 定义列表的三种方式,循环列表索引值

这一小节,我们将从零基础的角度看一下,python都有哪些定义列表的方式,并且循环这个列表的时候,怎么循环,怎么循环他的索引值,怎么拿到的就是元素值。 说完循环,我们会说一说关键的break和contin…

分布式存储故障导致数据库无法启动故障处理---惜分飞

国内xx医院使用了国外医疗行业龙头的pacs系统,由于是一个历史库,存放在分布式存储中,由于存储同时多个节点故障,导致数据库多个文件异常,数据库无法启动,三方维护人员尝试通通过rman归档进行应用日志,结果发现日志有损坏报ORA-00354 ORA-00353,无法记录恢复,希望我们给予支持 M…

AI智能分析高精度烟火算法EasyCVR视频方案助力打造森林防火建设

一、背景 随着夏季的来临,高温、干燥的天气条件使得火灾隐患显著增加,特别是对于广袤的森林地区来说,一旦发生火灾,后果将不堪设想。在这样的背景下,视频汇聚系统EasyCVR视频融合云平台AI智能分析在森林防火中发挥着至…

人脸消费给传统食堂带来的变化

消费的技术基础是脸部识别,脸部识别是基于人的容貌特征信息进行认证的生物特征识别技术,其突出的特征是以非接触方式进行识别,避免个人信息的泄露。 面部识别和指纹识别、掌纹识别、视网膜识别、骨骼识别、心率识别等都是人体生物特征识别技术…

自然资源-城镇开发边界内详细规划编制技术指南解读

自然资源-城镇开发边界内详细规划编制技术指南解读

护眼台灯和普通台灯差别很大吗?专业护眼灯品牌有哪些?

随着科技的不断演进,台灯的设计也日益脱胎换骨,从曾经的笨重造型转变为如今轻盈雅致的外观。它们的功能同样经历了多样化的革新,变得更加人性化和便捷。作为学习、阅读和办公环境中不可或缺的照明工具,台灯所提供的光线舒适度至关…

redis抖动问题导致延迟或者断开的处理方案

目录: 1、使用背景2、redis重试机制3、redis重连机制4、其他一些解决redis抖动问题方案 1、使用背景 客户反馈文件偶现打不开,报错现象是session not exist,最终定位是redis抖动导致的延迟/断开的现象,最终研发团方案是加入redis…

电脑nvidia驱动和合适版本的duda--自用 回忆版

参考文献:http://t.csdnimg.cn/ecDuG 内容很多抄的这个,主要害怕链接失效 一、Ubuntu 18.04 安装NVIDIA显卡驱动 1、查看本机显卡能够配置的驱动信息 ubuntu-drivers devices所以可以看出,推荐 nvidia-driver-530 - distro non-free 2、安…

HTML/CSS2

1.前置说明 HTML/CSS1 2.img元素 格式&#xff1a; <img src"图片地址" alt"占位文字" width"图片宽度" height"图片高度">其中alt是当图片加载失败时显示的文字 而且不同内核的浏览器显示出来的占位文字的效果也是不尽相同…

【linux软件基础知识】如何使用 run_list 字段将任务放入就绪队列中

在给定的代码片段中,struct task_struct 表示内核中任务或进程的进程控制块 (PCB)。 run_list 字段的类型为 struct list_head,这表明它是链表实现的一部分。 run_list字段在Linux内核中常用来表示任务在调度队列中的位置,例如就绪队列或各种优先级队列。 init_task是一个…

Elasticsearch入门基础和集群部署

Elasticsearch入门基础和集群部署 简介基础概念索引&#xff08;Index&#xff09;类型&#xff08;Type&#xff09;&#xff08;逐步弃用&#xff09;文档&#xff08;Document&#xff09;字段&#xff08;Field&#xff09;映射&#xff08;Mapping&#xff09;分片&#x…

人工智能能否解决科学问题:Wolfram的视角

引言 在当今AI技术飞速发展的背景下&#xff0c;它在科学研究领域的应用正逐渐深入。从AlphaFold 3的推出到日益复杂的计算模型&#xff0c;AI似乎在向科学家的角色靠拢。然而&#xff0c;美国计算机科学家Stephen Wolfram在一系列讲座和文章中提出了反思&#xff1a;AI真的能…

网站localhost和127.0.0.1可以访问,本地ip不可访问解决方案

部署了一个网站, 使用localhost和127.0.0.1加端口号可以访问, 但是使用本机的ip地址加端口号却不行. 原因可能有多种. 可能的原因: 1 首先要确认是否localhost对应的端口是通的(直接网址访问), 以及你无法访问的那个本机ip是否正确(使用ping测试)&#xff1b; 2 检查本机的防火…

uniapp开发小程序使用vue的v-html解析富文本图片过大过宽显示超过屏幕解决办法

如果没有设置的话&#xff0c;就会导致图片溢出&#xff0c;过宽显示或者错位显示&#xff0c;显示效果非常的丑陋&#xff1a; 修改后显示的效果&#xff1a; 网上比较low的解决办法&#xff1a;网上各种解决方法核心思想就是在数据层把数据模板上的img数据加上style样式&…

【STM32 |新建一个工程】基于标准库(库函数)新建工程

目录 STM32开发方式 库函数文件夹 建工程步骤 库函数工程建立 建立工程总结 STM32开发方式 目前stm32的开发方式主要有基于寄存器的方式、基于标准库的方式&#xff08;库函数的方式&#xff09;、基于HAL库的方式基于库函数的方式是使用ST官方提供的封装好的函数&…