Ansible常用变量【上】

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


在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 variableshosts: allgather_facts: no      #关闭Facts,不收集系统信息vars:custom_message: "Hello, SRE"   #定义变量tasks:- name: Display custom messagedebug: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 variableshosts: allgather_facts: novars_files:       #引用变量文件- vars/custom_message.yaml    变量文件,这里是相对路径tasks:- name: Display custom messagedebug:msg: "{{ custom_message }}"
[root@test101 ansible-test]# 
[root@test101 ansible-test]#

执行test.yaml效果:

1.3 定义和使用复杂变量

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

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

---
- name: Ansible playbook with variable and usagehosts: allgather_facts: novars:            #定义复杂变量user_info:Name: SREAge: 25TEL: 88888888tasks:- name: Display user informationdebug: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 variableshosts: alltasks:- name: Display facts messagedebug:#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.mzph.cn/news/836293.shtml

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

相关文章

springboot整合rabbitmq的不同工作模式理解

前提是已经安装并启动了rabbitmq,并且项目已经引入rabbitmq,完成了配置。 不同模式所需参数不同,生产者可以根据参数不同使用重载的convertAndSend方法。而消费者均是直接监听某个队列。 不同的交换机是实现不同工作模式的关键组件.每种交换…

权限及权限操作

1.命令行解释器 Linux将命令行解释器称为外壳程序shell 命令行解释器的作用就是将用户输入的指令转换为操作系统能够直接执行的指令。同时将操作系统的反馈转换为用户能看懂的反馈,解决了用户和操作系统沟通成本的问题。与此同时,命令行解释器还能够拦…

java项目之校园失物招领系统(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园失物招领系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 校园失物招领系统的主要…

修改mysql locahost或者127.0.0.1弱密码问题

一、登录有问题的数据库 sudo mysql -uroot -pxxx -hkde-offline1 -P13306 二、查询user表 这将显示与 root 用户关联的主机、用户名以及加密后的认证字符串(密码)。请注意,authentication_string 列中存储的是经过哈希加密后的密码,而不是原始密码。 MySQL [mysql…

机器学习(五) ----------决策树算法

目录 1 核心思想 2 决策树算法主要步骤 3 决策树算法的分类 3.1 ID3算法(Iterative Dichotomiser 3): 3.1.1 基本步骤 3.1.2 原理 信息增益 3.1.3 注意事项 3.2 C4.5算法: 3.2.1. 信息增益率 计算公式 3.2.2. 构建决策…

这个问题无人能解,菜鸟勿进

前言 2024-5-12 21:53:46 这是陈旧已久的草稿 2021-06-23 23:25:12 发布一下 一、问题 1.描述: 在我的世界中建个红石电路 2.需求: 五个灯A、B、C、D、E、F 五个开关a、b、c、d、e、f、总开关 3.要求: 总开关使所有灯关 开关a可以控制灯A…

鸿蒙内核源码分析(Shell编辑篇) | 两个任务,三个阶段

系列篇从内核视角用一句话概括shell的底层实现为:两个任务,三个阶段。其本质是独立进程,因而划到进程管理模块。每次创建shell进程都会再创建两个任务。 客户端任务(ShellEntry): 负责接受来自终端(控制台)敲入的一个个字符&…

C++音视频开发面试题

下面是音视频开发面试题精选: 1、纹理抗锯齿有哪些算法?各有哪些利弊?2、使用 OpenGL PBO 为什么能提高效率?3、iOS 如何使用分段转码,如何设置分片大小?4、VideoToolbox 中是不是不存在平面格式&#xff…

【图解计算机网络】http1.1,http2.0,http3.0

http1.1,http2.0,http3.0 http1.1长连接管道传输缺点 http2.0头部压缩二进制格式并发传输服务端推送缺点 http3.0无队头阻塞快速建立连接连接迁移 http1.1 长连接 在http1.0的时候,一次http请求就要建立一次TCP连接,这一次的htt…

LeetCode 654.最大二叉树

LeetCode 654.最大二叉树 1、题目 题目链接:654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地…

11、关系运算符、逻辑运算符(讲解 和 的区别)、赋值表达式、三目表达式、运算符优先级(超详细版本)+结合性的分析

这里写目录标题 一、关系运算符(比较运算符)二、⭐逻辑运算符1、 && 和 &2、|| 或 |3、!4、^ 三、赋值运算符四、三目运算符(条件运算符)五、运算符优先级 在讲之前先明确几个概念: 1、单目运算…

【人工智能基础】GAN与WGAN实验

一、GAN网络概述 GAN:生成对抗网络。GAN网络中存在两个网络:G(Generator,生成网络)和D(Discriminator,判别网络)。 Generator接收一个随机的噪声z,通过这个噪声生成图片…

阿里开源编程大模型 CodeQwen1.5:64K92编程语言,Code和SQL编程,评测接近GPT-4-Turbo

前言 阿里巴巴最近发布的CodeQwen1.5模型标志着其在编程语言模型领域的一次重大突破。这款开源模型不仅支持高达92种编程语言和64K的上下文长度,而且在多项性能评测中显示出接近或超过当前行业领导者GPT-4-Turbo的能力。 Huggingface模型下载:https://h…

Boost库的使用

1 下载与安装 1.1 下载 网址:Boost C Libraries 进入后选择自己需要的版本安装即可 1.2 安装 1.2.1 解压 1.2.2 编译安装 双击bootstrap.bat 这一步完成后会生成一个b2.exe文件 双击b2.exe文件运行(此步需要花费较长的时间) 之后再stag…

双向链表(双向带头循环)的增删查改的实现(简单易懂)

一:双向链表的概念 每个节点除开存有数据,还有一个指针指向前一个节点,一个指针指向后一个节点,尾节点和哨兵位互相指向,从而形成一个循环。 二:双向链表的实现第一点: 本文采用三个文件进行实…

GIS数据—1984-2020中国1km人造夜间灯光观测数据

夜间灯光观测数据(Nighttime Light,NTL)是评估人类活动边界的常用手段,目前,该数据已经广泛应用于城市范围、不透水面、基础设施建设等一系列过程。今天,小编要带来的是长时间序列中国区域边界的夜间灯光观测数据。 数…

springcloud -nacos实战

一、nacos 功能简介 1.1.什么是Nacos? 官方简介:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。 Nacos的关键特性包括: 服务发现和服务健康监测动态配置服务动态DNS服务服务及其元数…

VMware配置Kali linux + 物理机连接Xshell

VMware 配置 kali linux 首先需要先安装VMware Workstation 我是在Windows 安装的 VMware Workstation Pro 17 虚拟化,产品密钥。。这里不做多说了 下载kali linux 这里我下载的是kali-linux-2024.1 Note:这里选Virtual Machines,建议不要…

景源畅信:抖音小店的商品怎么同步到橱窗?

在数字营销的海洋中,抖音小店与橱窗的同步操作无疑是商家们关注的焦点。这不仅能增加商品的曝光度,还能提高交易的可能性。那么,如何将抖音小店的商品同步到橱窗呢? 一、核心步骤解析 要实现商品从抖音小店同步到橱窗,你需要确保…

【Linux 网络】网络编程套接字 -- 详解

⚪ 预备知识 1、理解源 IP 地址和目的 IP 地址 举例理解:(唐僧西天取经) 在 IP 数据包头部中 有两个 IP 地址, 分别叫做源 IP 地址 和目的 IP 地址。 如果我们的台式机或者笔记本没有 IP 地址就无法上网,而因为…