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 二、…...
NPC逆变器开环仿真模型:适用于基础研究及多电平模型辨识算法验证,载波层叠调制与多种负载适应性探究
NPC逆变器开环MATLAB仿真模型 开环!开环!开环! 适合基础研究 载波层叠调制、电阻负载 根据情况可以添加阻感负载、LCL滤波等 适合不同多电平模型辨识算法验证、故障诊断等工作!最近在搞多电平逆变器的算法验证,发现开环…...
3分钟快速定位Windows热键冲突:Hotkey Detective终极指南
3分钟快速定位Windows热键冲突:Hotkey Detective终极指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否…...
Cosmos-Reason1-7B惊艳推理展示:从问题输入到结构化思考再到答案生成
Cosmos-Reason1-7B惊艳推理展示:从问题输入到结构化思考再到答案生成 获取更多AI镜像 想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域࿰…...
胡桃讲编程・蓝屏急救进阶:磁盘修复 + 引导修复 + 网络修复,排除法根治顽固蓝屏
(微星 GL62M 7REX 地下程序员实操版 | 上期指令无效必看)哈喽各位自学开发、被蓝屏折磨到头疼的小伙伴们,我是胡桃~上一期咱们讲了三种高频蓝屏触发场景,还有系统修复的基础命令,不少朋友留言说:…...
终极内存管理指南:如何用Mem Reduct让你的电脑运行如飞 [特殊字符]
终极内存管理指南:如何用Mem Reduct让你的电脑运行如飞 🚀 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/me…...
振动力学实战:如何用MATLAB模拟无阻尼多自由度系统的受迫振动(附完整代码)
振动力学实战:MATLAB频域分析全流程与工程避坑指南 当一座斜拉桥在特定风速下出现异常振动,或是精密仪器因环境微振动导致测量失准,背后往往隐藏着多自由度系统的动力学奥秘。作为机械与土木工程师,掌握无阻尼多自由度系统的频域分…...
Windows 11/10下Genymotion与VirtualBox的‘网络适配器战争’:彻底解决启动报错与VirtualBox Host-Only Network #N泛滥问题
Windows 11/10下Genymotion与VirtualBox的网络适配器冲突全解析 每次启动Genymotion虚拟机时,你是否注意到系统里又悄悄多出一个带编号的VirtualBox Host-Only Network适配器?这背后隐藏着Windows网络管理机制与虚拟化软件之间一场看不见的"军备竞…...
从机翼到机身:聊聊固定翼无人机气动力的那些事儿(附Python简易计算脚本)
从机翼到机身:聊聊固定翼无人机气动力的那些事儿(附Python简易计算脚本) 当你第一次把亲手组装的固定翼无人机送上天空时,是否遇到过这些状况:明明油门给足了却爬升乏力,转弯时总感觉机身不听使唤ÿ…...
高效AI教材生成工具,低查重率优势,轻松搞定教材编写!
编写教材难题与AI工具解决方案 编写教材,如何实现精准匹配多样化需求?不同学段学生的认知能力差异明显,内容深浅不宜失衡;课堂教学与自主学习等场景的需求各异,教材的呈现形式也需灵活调整;而各地区的教学…...
Filament Shield 策略生成器:自动化权限策略开发完全指南
Filament Shield 策略生成器:自动化权限策略开发完全指南 【免费下载链接】filament-shield The easiest and most intuitive way to add access management to your Filament Panel; Resources, Pages & Widgets through spatie/laravel-permission 项目地址…...
