Ansible的变量(vars,register,set_fact)
环境
- 控制节点:Ubuntu 22.04
- Ansible 2.10.8
- 管理节点:CentOS 8
概述
vars:Ansible关键字,用在play、role、block、task上register:Ansible关键字,用在task上。注意它是一个返回值,可能需要用到其stdoutset_fact:即ansible.builtin.set_fact,是Ansible的module
创建文件 test1.yml 如下:
---
- hosts: alltasks:- name: task1vars:var1: "aaa"debug:msg: "var1 = {{ var1 }}"- name: task2block:- name: part1shell: echo "bbb"register: var2- name: part2debug:msg: "var2 = {{ var2.stdout }}"- name: task3block:- name: part1set_fact:var3: "ccc"- name: part2debug:msg: "var3 = {{ var3 }}"
运行结果如下:
➜ temp1113 ansible-playbook test1.ymlPLAY [all] *****************************************************************************************TASK [Gathering Facts] *****************************************************************************
ok: [192.168.1.55]TASK [task1] ***************************************************************************************
ok: [192.168.1.55] => {"msg": "var1 = aaa"
}TASK [part1] ***************************************************************************************
changed: [192.168.1.55]TASK [part2] ***************************************************************************************
ok: [192.168.1.55] => {"msg": "var2 = bbb"
}TASK [part1] ***************************************************************************************
ok: [192.168.1.55]TASK [part2] ***************************************************************************************
ok: [192.168.1.55] => {"msg": "var3 = ccc"
}PLAY RECAP *****************************************************************************************
192.168.1.55 : ok=6 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
可见,三者都可以当作变量来使用。
注意: set_fact 定义的变量,并没有真正出现在 ansible_facts 中,只是效果相同。想要验证的话,可以打印出 ansible_facts :
debug:#msg: "{{ ansible_facts['hostname'] }}" # 只打印某一项msg: "{{ ansible_facts }}"
区别
作用域
vars 定义的变量,只在当前作用域有效( vars 可应用于play、role、block、task)。
register 和 set_fact 定义的变量,在之后的task和play,仍然有效。
创建文件 test2.yml ,在 test1.yml 基础上追加一个task:
- name: task4debug:msg: "var2 = {{ var2.stdout }}, var1 = {{ var3 }}"
运行结果如下:
......
TASK [task4] ***************************************************************************************
ok: [192.168.1.55] => {"msg": "var2 = bbb, var1 = ccc"
}
......
创建文件 test3.yml ,在 test2.yml 基础上追加一个play:
- hosts: alltasks:- name: task5debug:msg: "var2 = {{ var2.stdout }}, var1 = {{ var3 }}"
运行结果如下:
......
PLAY [all] *****************************************************************************************TASK [Gathering Facts] *****************************************************************************
ok: [192.168.1.55]TASK [task5] ***************************************************************************************
ok: [192.168.1.55] => {"msg": "var2 = bbb, var1 = ccc"
}
......
可见, register 和 set_fact 所定义的变量,在之后的task和play仍然有效。
参考
https://docs.ansible.com/ansible/latest/reference_appendices/playbooks_keywords.html#playbook-keywordshttps://docs.ansible.com/ansible/latest/collections/ansible/builtin/set_fact_module.html
相关文章:
Ansible的变量(vars,register,set_fact)
环境 控制节点:Ubuntu 22.04Ansible 2.10.8管理节点:CentOS 8 概述 vars :Ansible关键字,用在play、role、block、task上register :Ansible关键字,用在task上。注意它是一个返回值,可能需要用…...
麒麟KYLINIOS软件仓库搭建03-软件仓库添加新版本的软件包
原文链接:麒麟KYLINIOS软件仓库搭建03-软件仓库添加新版本的软件包 hello,大家好啊,今天给大家带来麒麟桌面操作系统软件仓库搭建的文章03-软件仓库添加新版本的软件包,本篇文章主要给大家介绍了如何在麒麟桌面操作系统2203-x86版…...
监控系统是怎么组的(sentry)
搭建sentry监控平台,实现前后端异常监控。——从零开始搭建一个高颜值后台管理系统全栈框架(十六) - 掘金...
Java --- 直接内存
一、直接内存 1、不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 2、直接内存是在Java堆外的,直接向系统申请的内存区间。 3、来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存。 4、访问直接内存的…...
数据结构与算法之排序: Leetcode 21. 合并两个有序链表 (Typescript版)
合并两个有序链表 https://leetcode.cn/problems/merge-two-sorted-lists/ 描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 …...
AIGC:使用bert_vits2实现栩栩如生的个性化语音克隆
1 VITS2模型 1.1 摘要 单阶段文本到语音模型最近被积极研究,其结果优于两阶段管道系统。以往的单阶段模型虽然取得了较大的进展,但在间歇性非自然性、计算效率、对音素转换依赖性强等方面仍有改进的空间。本文提出VITS2,一种单阶段的文本到…...
2023年CKA考试真题及注意事项
2023年CKA考试真题及注意事项 注意事项考试题目原题解析1.RBAC2.节点维护3.K8S组件升级 1.28.0升级到1.28.14.Etcd备份与恢复5.NetworkPolicy6.Service7.Ingress8.指定节点部署9.检查Node节点健康状态10.一个Pod多个容器11.监控Pod度量指标12.监控Pod日志13.PersistentVolumeCl…...
云计算运维面试
一、Linux的启动过程 1.加电 2.加载bios设置 3.加载grub 4. 加载内核系统到内存中 5.加载配置文件 6.加载内核模块 7.完成相应初始化工作和启动相应服务 8.启动系统进程 9.出现登录界面 10.开机自启动完成 二、查看系统的版本和内核 1、 查看版本 cat /etc/redha…...
Qt实现TCP调试助手 - 简述如何在Qt中实现TCP多并发
简介 软件开发中,可能经常会用到TCP调试工具。本人使用QT开发了一款TCP调试工具,方便大家使用。本文章主要介绍下,该工具的功能,以及如何在Qt中实现TCP服务器的并发。 界面展示 安装界面 桌面图标。安装后会生成桌面图标&#…...
【Python OpenCV】OpenCV介绍
文章目录 前言一、OpenCV简介二、基本功能三、实际应用场景四、Python安装OpenCV总结 前言 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和图像处理库,它提供了丰富的工具和函数,用于处理图像和视频。由于…...
11-09 周四 CNN 卷积神经网络基础知识
11-09 周四 CNN 卷积神经网络 时间版本修改人描述2023年11月9日09:38:12V0.1宋全恒新建文档 简介 学习一下CNN,卷积神经网络。使用的视频课程。视觉相关的任务: 人脸识别 卷积网络与传统网络的区别: <img altimage-20231109094400591 s…...
Vue.js中的路由(router)和Vue Router的作用?
聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...
从开源项目聊鱼眼相机的“360全景拼接”
目录 概述 从360全景的背景讲起 跨过参数标定聊透视变化 拼接图片后处理 参考文献 概述 写这篇文章的原因完全源于开源项目(GitHub参阅参考文献1)。该项目涵盖了环视系统的较为全貌的制作过程,包含完整的标定、投影、拼接和实时运行流程。该篇文章主要是梳理全…...
网络安全——
文章目录 网络安全TCP/IP与网络安全网络安全构成要素加密技术基础 网络安全 TCP/IP与网络安全 起初,TCP/IP只用于一个相对封闭的环境,之后才发展为并无太多限制、可以从远程访问更多资源的形式。因此,“安全”这个概念并没有引起人们太多的…...
用excel 整理工作流程,以周为时间节点,自动统计进度
无论是处理自己还是团队的工作,我们都经常会遇到复杂的,凌乱的,需要多个环节才能完成的工作。 梳理工作流程 因为环节内容,每个环节处理不当都可能会导致我们整个工作目标实现受到影响,所以通过工作流程图,…...
Wireshark学习 与 TCP/IP协议分析
Wireshark简介和工具应用 如何开始抓包? 打开wireshark,显示如下网络连接。选择你正在使用的,(比如我正在使用无线网上网),双击 可以先看下自己的ip地址和网关ip地址(看抓包数据时候会用到&…...
Sequence(矩阵连乘+数论)
求Fn mod 1e97 Input 第一行是一个t代表有t组数据 接下来有t行每行有6个整数A,B,C,D,P,n 1<t<10 0<A,B,C,D<1e9 1<p,n<1e9 Output 输出一个答案Fn对1e97取余 Sample Input 2 1 1 1 1 1 5 1 1 1 1 10 4 Sample Output 9 10 思路: p/n上…...
集合工具类的常用方法--小总和
前言 集合工具类是Java中的一个重要工具类,在Java常用的集合框架中起到了重要的作用。集合工具类提供了一系列的方法,可以方便地处理Java中的集合对象,提高了开发的效率。 Collections类 Collections.sort(List<T> list) 对List集合进…...
一文了解游戏行业(数据分析)
一.概况 1.基本术语 游戏行业基础术语——持续更新ing... 2.产业链 包括游戏开发,发行和销售等环节 ①游戏开发 上游环节是游戏产业链的核心环节,包括游戏策划,美术设计,程序开发等,是决定游戏质量与内容的关键因…...
Flutter之Json序列化
前言 使用 json_annotation 框架实现json字符串序列化和反序列化 框架官方地址:json_serializable 一、引入依赖:在pubspec.yaml中添加 dependencies:json_annotation: ^4.8.1dev_dependencies:build_runner: ^2.3.3json_serializable: ^6.6.0 二、…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
