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
> 主机
全局 | 从命令行或配置文件中设定的 |
play | 在play 和相关结构中设定 |
主机 | 由清单,事实收集或注册的任务 |
二、变量的使用方式
- 这里使用循环定义的方式,使用
loop
和item
实现循环执行
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加速...
点击文末阅读原文, 免费报名【抖音背后的体验增长实战揭秘】专场 随着全行业视频化的演进,营销、知识、商业和空间的交互体验正在被重塑。这种变化不仅仅是一种抽象的趋势,更是关系到用户留存和业务增长的关键因素。面对这样的挑战࿰…...
【书籍篇】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)本质是分段多项式实函数,在实数范围内有: S:[a,b]→R ,在区间 [a,b] 上包含 k 个子区间[ti−1,ti],且有: 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代码,填写程序中的空(1) ~(5),将解答写入答题纸的对应栏内。 【说明】 以下C代码实现一个简单乐器系统,音乐类(Music)可以使用…...

javaEE -15( 13000字 JavaScript入门 - 2)
一:JavaScript(WebAPI) JS 分成三个大的部分 ECMAScript: 基础语法部分DOM API: 操作页面结构BOM API: 操作浏览器 WebAPI 就包含了 DOM BOM,这个是 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电脑,从macos转像windows不容易啊,因为键盘快捷键经常弄错,这篇文章就是修改Typora中字体显示的问题。 正文内容 我发现在windows中,字体非常的难看,微软雅黑也太丑了…...

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

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

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...