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

Ansible中的变量及加密

目录

一、变量的设定

二、变量的使用方式

1、在playbook中直接定义变量

2、在文件中定义变量 

3、设定主机变量和清单变量

4、目录设定变量

5、用命令覆盖变量

6、使用数组设定变量

7、注册变量

 8、事实变量

9、魔法变量 

三、JINJA2模板 

四、加密控制

1、创建加密文件

2、查看加密文件 

3、编辑加密文件 

4、加密现有文件 

5、更改加密文件密码

6、解密文件

7、执行加密文件


一、变量的设定

1、变量的命名规则:
(1)只能包含数字,下划线,字母;
(2)只能用下划线或字母开头;
(3)ansible内置的关键字不能作为变量名。
2、变量的级别:

3、变量优先级:
全局 > play > 主机

全局从命令行或配置文件中设定的
playplay和相关结构中设定
主机由清单,事实收集或注册的任务

二、变量的使用方式

  • 这里使用循环定义的方式,使用loopitem实现循环执行

1、在playbook中直接定义变量

vim test.yml- name: test varhosts: allvars:TEST: hello aletasks:- name: filedebug:msg: "{{ TEST }}"ansible-playbook test.yml

2、在文件中定义变量 

vim file.ymlTEST: hello alevim test.yml- name: test varhosts: allvars_files:- ./file.ymltasks:- name: filedebug:msg: "{{ TEST }}"

3、设定主机变量和清单变量

[test1]
192.168.67.112[test2]
192.168.67.113[test1:vars]
TEST=hello yyl[test2:vars]
TEST=hello alevim test.yml- name: test varhosts: allvars:tasks:- name: filedebug:msg: "{{ TEST }}"

4、目录设定变量

group_vars清单变量,目录中的文件名称与主机清单名称一致
host_vars主机变量,目录中的文件名称与主机名称一致

 group_vars和host_vars之前注释inventory   内定义的

mkdir group_vars
cd group_vars/vim test1
TEST: hello yyl
vim test2
TEST: hello alevim test.yml- name: test varhosts: allvars:tasks:- name: filedebug:msg: "{{ TEST }}"

 host_vars:

mkdir host_vars
cd host_vars/vim 192.168.67.112
TEST: hello yyl
vim 192.168.67.113
TEST: hello ale- name: test varhosts: allvars:tasks:- name: filedebug:msg: "{{ TEST }}"

5、用命令覆盖变量

ansible-playbook test.yml -e "TEST=hahahaha"

6、使用数组设定变量

vim user_var.yml- name: test varhosts: allvars:USER1:name: user1id: 123USER2:name: user2id: 456tasks:- name:user:name: "{{USER1.name}}"uid: "{{USER1.id}}"state: present- name:user:name: "{{USER2.name}}"uid: "{{USER2.id}}"state: present

7、注册变量

register:把模块输出注册到指定字符串中    要输出单独参数时,指定输出变量

vim reg.yml- name: test registerhosts: alltasks:- name: hostname commandshell:hostnameregister: info- name: show messagesshell:echo "{{info['stdout']}}"

 

 8、事实变量

事实变量是ansible在受控主机中自动检测出的变量,事实变量中还有与主机相关的信息;
当需要使用主机相关信息时不需要采集赋值,直接调用即可;
因为变量信息为系统信息所以不能随意设定仅为采集信息,故被成为事实变量。 

vim 1.yml- name: test registerhosts: alltasks:- name: show messagesdebug:msg: "{{ansible_facts['architecture']}}"

gather_facts: no ##在playbook中关闭事实变量收集

9、魔法变量 

和事实变量类似,都是真实存在的变量,和ansible有关;直接执行以下变量即可。

 ##ansible软件的内部信息

ansible localhost -m debug -a "var=hostvars"

 

##当前受管主机所在组

ansible all -m debug -a "var=group_names" 

##列出清单中所有的组和主机

ansible localhost -m debug -a "var=groups"

##包含清单中配置的当前授管主机的名称

ansible localhost -m debug -a "var=inventory_hostname"

三、JINJA2模板 

       Jinja2是Python下一个被广泛应用的模版引擎 他的设计思想来源于Django的模板引擎, 并扩展了其语法和一系列强大的功能。 其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能 。  

j2模板书写规则

{# /etc/hosts line #}  ##注释说明文件用途
127.0.0.1 localhost  ##文件内容
{{ ansible_facts['all_ipv4_addresses'] }} {{ansible_facts['fqdn']}}  ##使用事实变量

j2模板的实现:

vim jinja.yml---
- name: testjinjahosts: server2tasks:- name: create filetemplate:src: ./test.j2  ##j2模板来源dest: /mnt/test  ##远程主机执行文件地址

for循环和 if 的用法:

for循环:

设定j2模板,变量要用{{ }}括起来

{% for NAME in users %}  ##for循环设定变量NAME,变量来源于变量文件
{{ loop.index }} {{ NAME  }}  ##变量用 {{ }} 括起来
{% endfor %}  ##for循环结束

if判断:

{% for NAME in users %}
{% if NAME in "linux"%}  ##in表示等于时
{{ loop.index0 }}  ##等于时只记数
{% endif %}
{% if NAME not in "linux"%}  ##not in表示不等于时
{{ loop.index0 }} {{ NAME }}  ##不等于时记数加变量
{% endif %}
{% endfor %}

练习:

使用j2模板 写hosts解析文件

vim hosts.yml- name: create hostshosts: alltasks:- name: create hosts filetemplate:src: ./hosts.j2dest: /mnt/hostsvim hosts.j2{% for HOST in groups['all'] %}
{{hostvars[HOST]['ansible_facts']['ens33']['ipv4']['address'] }} {{hostvars[HOST]['ansible_facts']['hostname']}}
{% endfor %}

四、加密控制

1、创建加密文件

ansible-vault create yyl
cat yyl

2、查看加密文件 

vim authyyl  123
ansible-vault view yyl
ansible-vault view --vault-password-file=authyyl  yyl

3、编辑加密文件 

ansible-vault edit --vault-password-file=authyyl yyl
ansible-vault view --vault-password-file=authyyl  yyl

4、加密现有文件 

ansible-vault encrypt yyl.yml

 5、更改加密文件密码

ansible-vault rekey yyl文件更改密码
vim authyyl  123456
ansible-vault rekey yyl --new-vault-password-file=authyyl
ansible-vault view yyl

 

6、解密文件

ansible-vault decrypt yyl
ansible-vault decrypt test.yml

7、执行加密文件

ansible-playbook test.yml --ask-vault-pass

相关文章:

Ansible中的变量及加密

目录 一、变量的设定 二、变量的使用方式 1、在playbook中直接定义变量 2、在文件中定义变量 3、设定主机变量和清单变量 4、目录设定变量 5、用命令覆盖变量 6、使用数组设定变量 7、注册变量 8、事实变量 9、魔法变量 三、JINJA2模板 四、加密控制 1、创建加…...

Java 性能优化之直接使用成员变量 VS 拷贝副本

背景 刷到一个大佬的 CSDN 博客,仔细看了一下性能优化专栏。联想到我们的日常开发工作,由于业务比较简单,很容就忽略性能问题。但是,性能优化的一下常见思路,也早有耳闻。看了一个 Java 性能优化的方法 「减少操作指令…...

「专题速递」数据驱动赋能、赛事直播优化、RTC技术、低延时传输引擎、多媒体处理框架、GPU加速...

点击文末阅读原文, 免费报名【抖音背后的体验增长实战揭秘】专场 随着全行业视频化的演进,营销、知识、商业和空间的交互体验正在被重塑。这种变化不仅仅是一种抽象的趋势,更是关系到用户留存和业务增长的关键因素。面对这样的挑战&#xff0…...

【书籍篇】Spring实战第4版 第1部分 Spring的核心

Spring实战第4版 第1部分 Spring的核心 一. 简化Java开发1. 四大关键策略2. spring容器2.1 bean工厂2.2 应用上下文 二. 装配Bean1. spring配置2. 混合配置 三. 高级装配1. profile配置2. 激活profile3. 条件化的Bean4. 处理自动装配的歧义性4.1 设置首选4.2 限定符4.3 自定义限…...

【AI视野·今日Sound 声学论文速览 第八期】Wed, 20 Sep 2023

AI视野今日CS.Sound 声学论文速览 Wed, 20 Sep 2023 Totally 1 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers Accelerating Diffusion-Based Text-to-Audio Generation with Consistency Distillation Authors Yatong Bai, Trung Dang, Dung Tran, K…...

【HSPICE仿真】输入网表文件(6)用户自定义分析输出(.measure)

.measure语句的基本用法 1. 语句顺序2. 测量参数类型3. Rise, Fall, Delay, and Power Measurements4. FIND 和 WHEN 函数5. Equation Evaluation/Arithmetic Expression6. AVG, EM_AVG, INTEG, MIN, MAX, PP, and RMS基本语法示例 7. 输出文件格式MEASFORMMEASOUTMEASFILEMEAS…...

安装Oracle 11g Error in invoking target报错

在redhat7.5上安装Oracle 11g,安装过程中到86%时出现Error in invoking target报错 原因是由于操作系统版本过高,导致lib链接报错 [oracleemrtest ~]$ cd O R A C L E H O M E / s y s m a n / l i b / [ o r a c l e e m r t e s t l i b ] ORACLE…...

AlarmManager闹钟管理者

AlarmManager是Android提供的一个全局定时器,利用系统闹钟定时发送广播。这样做的好处是:如果App提前注册闹钟的广播接收器,即使App退出了,只要定时到达,App就会被唤醒响应广播事件。 AlarmManager设置的PendingInten…...

Opencv实现的三次样条曲线(Cubic Spline)插值

1.样条曲线简介 样条曲线(Spline)本质是分段多项式实函数&#xff0c;在实数范围内有&#xff1a; S:[a,b]→R &#xff0c;在区间 [a,b] 上包含 k 个子区间[ti−1,ti]&#xff0c;且有&#xff1a; at0<t1<⋯<tk−1<tkb(1) 对应每一段区间 i 的存在多项式&…...

【ElasticSearch系列-03】ElasticSearch的高级句法查询Query DSL

ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【二】ElasticSearch的高级查询Quer…...

【C++ 系列文章 -- 程序员考试 201811 下午场 C++ 专题 】

1.1 C 题目六 阅读下列说明和C代码&#xff0c;填写程序中的空&#xff08;1&#xff09; &#xff5e;&#xff08;5&#xff09;&#xff0c;将解答写入答题纸的对应栏内。 【说明】 以下C代码实现一个简单乐器系统&#xff0c;音乐类&#xff08;Music&#xff09;可以使用…...

javaEE -15( 13000字 JavaScript入门 - 2)

一&#xff1a;JavaScript(WebAPI) JS 分成三个大的部分 ECMAScript: 基础语法部分DOM API: 操作页面结构BOM API: 操作浏览器 WebAPI 就包含了 DOM BOM&#xff0c;这个是 W3C 组织规定的. (和制定 ECMAScript 标准的大佬们不是一伙人). 前面学的 JS 基础语法主要学的是 …...

AWS SAP-C02教程11-解决方案

本章中,会根据一些常见场景的解决方案或者AWS的某一方面的总结,带你了解AWS各个组件之间的配合使用、如何在解决方案中选择组件以及如何避开其本身限制实现需求。 目录 1 处理高并发解决方案(Handing Extreme Rates)2 日志管理(AWS Managed Logs)3 部署解决方案(Deploy…...

ClickHouse Java多参UDF

一、环境版本 环境版本docker clickhouse22.3.10.22 docker pull clickhouse/clickhouse-server:22.3.10.22二、XML配置 2.1 配置文件 # 创建udf配置文件 vim /etc/clickhouse-server/demo_function.xml<functions><function><type>executable</type&…...

修改Typora默认微软雅黑字体

修改Typora字体 写在前面 我最近在折腾windows电脑&#xff0c;从macos转像windows不容易啊&#xff0c;因为键盘快捷键经常弄错&#xff0c;这篇文章就是修改Typora中字体显示的问题。 正文内容 我发现在windows中&#xff0c;字体非常的难看&#xff0c;微软雅黑也太丑了…...

ESP32网络开发实例-Web服务器显示LM35传感器数据

Web服务器显示LM35传感器数据 文章目录 Web服务器显示LM35传感器数据1、LM35介绍2、软件准备3、硬件准备4、代码实现4.1 LM35与ADS1115驱动4.2 Web服务器显示LM35传感器数据本文将介绍有关如何在ESP32的Web服务器中显示LM35 温度传感器数据。 1、LM35介绍 LM35 用于测量物体或…...

ATFX汇市:美联储11月利率决议再暂停加息,紧缩货币政策或已接近尾声

ATFX汇市&#xff1a;11月美联储利率决议结果在今日2:00公布&#xff0c;其中提到&#xff1a;美联储寻求以2%的速度实现最大的就业和通胀率&#xff0c;为了达成这些目标&#xff0c;美联储决定将联邦基金利率的目标区间维持在5.25%~5.5%&#xff1b;委员会将会考虑货币政策的…...

g.Grafana之Gauge的图形说明

直接上操作截图 1. 创建一个新的Dashboard 2.为Dashboard创建变量 【General】下的Name与Label的名称自定义 【Query options】 下的Group可以填写Zabbix内的所有组/.*/ , 然后通过Regex正则过滤需要的组名 3.设置Dashboard的图形 我使用文字来描述下这个图 1.我们在dash…...

MySQL笔记--Ubuntu安装MySQL并基于C++测试API

目录 1--安装MySQL 2--MySQL连接 3--代码案例 1--安装MySQL # 安装MySQL-Server sudo apt install mysql-server# 设置系统启动时自动开启 sudo systemctl start mysql # sudo systemctl enable mysql# 检查MySQL运行状态 sudo systemctl status mysql# 进入MySQL终端 sudo…...

与AI对话的艺术:如何优化Prompt以获得更好的响应反馈

前言 在当今数字化时代&#xff0c;人工智能系统已经成为我们生活的一部分。我们可以在智能助手、聊天机器人、搜索引擎等各种场合与AI进行对话。然而&#xff0c;要获得有益的回应&#xff0c;我们需要学会与AI进行有效的沟通&#xff0c;这就涉及到如何编写好的Prompt。 与…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...