当前位置: 首页 > news >正文

Ansible中playbook的变量

变量

  • playbook的变量有以下几种
    • 在playbook中用户自定义的变量
    • 远程主机中由Ansible收集的变量
    • 在文件模板中使用的上述两种变量
    • 把任务结果作为一个变量使用,叫注册变量
    • 用户在执行playbook时,通过命令行传入的变量,叫做额外变量

在playbook中用户自定义的变量

playbook中定义变量

  • 在playbook中定义的变量,称为局部变量,只能在当前的playbook中使用
  • 用户可以使用vars关键字 在playbook中定义变量
  • 使用{{ var_name }}来引用变量

把变量放在单独的文件中

  • 可以把变量放在单独的文件中,然后在playbook中使用vars_files关键字引入变量文件
  • 变量文件的后缀名可以是.yml或者.yaml
  • 使用文件中变量的方法与 在playbook中定义变量的方法相同

定义和使用复杂变量

  • 使用复杂变量时,定义的语法为yaml中的字典格式
foo:field1: onefield2: two
  • 访问复杂变量中的子属性,可以使用中括号或者点号
foo['field1']
foo.field2

yaml的陷阱

  • 变量引用时,如果提示语法错误,可以在引用变量的{}外加上""引号

远程主机系统变量(Facts)

  • Ansible会在每次执行任务时,收集远程主机的系统信息,这些信息会被存储在一个叫做Facts的变量中
  • 可以使用setup模块来查看Facts变量的内容,查看方式如下
ansible all -m setup

使用Facts变量

  • 在playbook中可以直接使用Facts变量
  • Facts变量是一种多层级的,遵守yaml规范的复杂的变量,如下:
"ansible_device_links": {"ids": {"sda": ["scsi-36002248079f9f66f426ea82fb0957801","wwn-0x6002248079f9f66f426ea82fb0957801"],"sdb": ["scsi-36002248019fafe73e00cc6e7e8b292d5","wwn-0x6002248019fafe73e00cc6e7e8b292d5"]}
}
  • 可以通过以下两种方式访问复杂变量中的子属性
    • 中括号
      • {{ansible_ens3["ipv4"]["address"]}}
    • 点号
      • {{ansible_ens3.ipv4.address}}

关闭Facts变量

  • 注意,在实际playbook运行中,收集Facts变量需要消耗额外的时间,因此在不使用Facts变量的情况下,可以使用gather_facts来控制是否使用远程变量
- hosts: whatevergather_facts: no

文件模板中使用的变量

template中变量的定义

  • 在playbook中定义的变量
  • Facts变量
  • inventory中定义的host和group变量

template中变量的使用

  • 使用Jinja2语言书写模板文件
  • 需要了解{{}}用来引用变量即可

注册变量

  • 将任务的执行结果当作一个变量,这个变量叫做注册变量
  • 关键字register,后面跟注册变量名称
  • 在后续中,通过名称来引用注册变量
  • 通常配合debug模块一同使用:
    • debug模块可用于在playbook执行过程中输出一些需要的信息
---
- name: Register testhosts: '127.0.0.1'tasks:- name: Register testansible.builtin.shell: lsregister: aaaignore_errors: true- shell: echo "{{aaa.stdout_lines}}" > /tmp/reg.log- debug: msg="{{aaa.stdout_lines}}"

命令行传递参数

  • 用户在执行时传入变量的值:“额外变量”或者叫“命令行变量”

定义命令行变量

  • 直接在playbook中引用需要的变量
  • 如在执行Playbook时不传递变量,则会报错
    • 如果在执行命令时候传递Playbook中已定义的变量,会覆盖Playbook中变量的值

使用命令行变量

  • 直接传递
    • ansible-playbook test.yml --extra-vars "host=web"
  • JSON格式参数传递
    • ansible-playbook test.yml --extra-vars "{'host':'web'}"
  • 将变量参数放在文件中
    • ansible-playbook test.yml --extra-vars "@vars.json"

相关文章:

Ansible中playbook的变量

变量 playbook的变量有以下几种 在playbook中用户自定义的变量远程主机中由Ansible收集的变量在文件模板中使用的上述两种变量把任务结果作为一个变量使用,叫注册变量用户在执行playbook时,通过命令行传入的变量,叫做额外变量 在playbook中…...

亚信安全正式接入DeepSeek

亚信安全致力于“数据驱动、AI原生”战略,早在2024年5月,推出了“信立方”安全大模型、安全MaaS平台和一系列安全智能体,为网络安全运营、网络安全检测提供AI技术能力。自2024年12月DeepSeek-V3发布以来,亚信安全人工智能实验室利…...

相似性图相关性重构网络用于无监督跨模态哈希

《Similarity Graph-correlation Reconstruction Network for unsupervised cross-modal hashing》 摘要1. 引言2. 相关工作2.1. 监督跨模态哈希方法2.2. 无监督跨模态哈希方法 3. 方法论3.1 问题定义3.2 特征提取3.3 模态内关系图构建3.4. 局部关系图重置3.5. 跨模态关系图构建…...

【Bug】属性 PackageVersion 应在所有目标框架中具有单个值,但却具有以下值

文章目录 问题问题代码原因解决处理Bug的具体步骤 问题 严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) NU1105 无法读取“x”的项目信息: 属性 PackageVersion 应在所有目标框架中具有单个值,但却具有以下值: 1.0.0, 1.0.5 x (net8.0-android), x (net8.…...

C++ Primer 类型转换

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

【CS61A 2024秋】Python入门课,全过程记录P7(Week13 Macros至完结)【完结撒花!】

文章目录 关于新的问题更好的解决方案Week13Mon Macros阅读材料Lab 11: Programs as Data, MacrosQ1: WWSD: QuasiquoteQ2: If ProgramQ3: Exponential PowersQ4: Repeat Wed SQL阅读材料Disc 11: MacrosQ1: Mystery MacroQ2: Multiple AssignmentQ3: Switch Optional Contest:…...

SSH隧道+Nginx:绿色通道详解(SSH Tunnel+nginx: Green Channel Detailed Explanation)

SSH隧道Nginx:内网资源访问的绿色通道 问题背景 模拟生产环境,使用两层Nginx做反向代理,请求公网IP来访问内网服务器的网站。通过ssh隧道反向代理来实现,重点分析一下nginx反代的基础配置。 实验环境 1、启动内网服务器的tomca…...

LabVIEW用户界面设计原则

在LabVIEW开发中,用户界面(UI)设计不仅仅是为了美观,它直接关系到用户的操作效率和体验。一个直观、简洁、易于使用的界面能够大大提升软件的可用性,尤其是在复杂的实验或工业应用中。设计良好的UI能够减少操作错误&am…...

Datawhale 数学建模导论二 2025年2月

第6章 数据处理与拟合模型 本章主要涉及到的知识点有: 数据与大数据Python数据预处理常见的统计分析模型随机过程与随机模拟数据可视化 本章内容涉及到基础的概率论与数理统计理论,如果对这部分内容不熟悉,可以参考相关概率论与数理统计的…...

SQL CASE表达式的用法

SQL CASE表达式的用法 一、CASE表达式的基础语法简单CASE表达式搜索CASE表达式 二、简单CASE表达式的应用示例三、搜索CASE表达式的应用示例四、CASE表达式在聚合函数中的应用五、嵌套CASE表达式的应用 今天在也无力用到了CASE表达式,于是有了这篇博客,C…...

趣味魔法项目 LinuxPDF —— 在 PDF 中启动一个 Linux 操作系统

最近,一位开源爱好者开发了一个LinuxPDF 项目(ading2210/linuxpdf: Linux running inside a PDF file via a RISC-V emulator),它的核心功能是在一个 PDF 文件中启动并运行 Linux 操作系统。它通过巧妙地使用 PDF 文件格式中的 Ja…...

win32汇编环境,窗口程序使用跟踪条(滑块)控件示例一

;运行效果 ;win32汇编环境,窗口程序使用跟踪条(滑块)控件示例一 ;生成2条横的跟踪条,分别设置不同的数值范围,设置不同的进度副度的例子 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>…...

mars3d接入到uniapp的时候ios上所有地图的瓦片都无法加载解决方案

用的是【Mars3d】官网的uniapp的仓库,安卓没有问题,但是ios的不行 相关链接 mars3d-uni-app: uni-app技术栈下的Mars3D项目模板 解决方案:感觉所有图片请求全被拦截了 uniapp的ios内核不允许跨域,需要先把瓦片下载后转base64&…...

使用 Notepad++ 编辑显示 MarkDown

Notepad 是一款免费的开源文本编辑器,专为 Windows 用户设计。它是替代记事本(Notepad)的最佳选择之一,因为它功能强大且轻量级。Notepad 支持多种编程语言和文件格式,并可以通过插件扩展其功能。 Notepad 是一款功能…...

wordpress主题制作

工具/原料 <P><BR>使用divcss语言编写的html静态页面一个</P> <P>Macromedia Dreamweaver软件<BR></P> WordPress主题结构分析 1 1、index.php首页模板&#xff08;最基本&#xff09; ---- 1、header.php头部 ---- 2、sidebar.php侧边…...

MybatisPlus常用增删改查

记录下MybatisPlus的简单的增删改查 接口概述 Service和Mapper区别 Mapper简化了单表的sql操作步骤&#xff08;CRUD&#xff09;&#xff0c;而Serivce则是对Mapper的功能增强。 Service虽然加入了数据库的操作&#xff0c;但还是以业务功能为主&#xff0c;而更加复杂的SQL…...

Citus的TPCC、TPCH性能测试

Citus的TPCC、TPCH性能测试 文章目录 Citus的TPCC、TPCH性能测试测试的目的适用范围测试环境架构信息硬件配置操作系统软件版本 测试结果TPCC测试测试结果TPCH测试测试结果 一、环境部署1.1、安装BenchmarkSQL1.2、PostgreSQL安装1.3、nmon部署1.4、TPC-H测试的生成数据工具安装…...

蓝桥杯---颜色分类(leetcode第75题)题解

文章目录 1.问题重述2.思路分析3.代码分析 1.问题重述 颜色分类&#xff0c;实际上就是赋予了三种颜色不同的数值&#xff0c;0,1,2分别代表的就是一个类型的颜色&#xff0c;我们题目说的是对于颜色进行分类&#xff0c;实际上就是对于0,1,2进行分类&#xff0c;我们把很多数…...

C语言基础13:循环结构 for和while

循环结构 什么是循环结构 代码在满足某种条件的前提下&#xff0c;重复执行&#xff0c;就叫做循环结构。 循环的分类 无限循环&#xff1a;其实就是死循环&#xff0c;程序设计中尽量避免无限循环&#xff0c;如果非要使用&#xff0c;那么这个循环一定要在可控范围内。有…...

六西格玛设计培训如何破解风电设备制造质量与成本困局

2023年&#xff0c;中国风电行业装机容量突破4.3亿千瓦&#xff0c;稳居全球第一&#xff0c;但高速扩张背后暗藏隐忧&#xff1a; 质量痛点&#xff1a;叶片开裂、齿轮箱故障等缺陷频发&#xff0c;运维成本占项目全生命周期成本超30%&#xff1b;成本压力&#xff1a;原材料…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

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…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...