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

36. Ansible变量+管理机密

Ansible变量+管理机密

ansible的变量分为:普通变量(在 Playbook 中定义),主机变量(在 Inventory 中定义), 注册变量register(从任务输出中捕获值,不管任务成功失败都会捕获),事实变量(系统自动收集的信息),内置变量(内置变量是由 Ansible 自身提供的,用于提供关于执行环境、清单结构和 playbook 执行过程的信息。)

定义变量规则:由字母/数字/下划线组成,变量需要以字母开头,ansible内置的关键字不能作为变量名。

ansible中,可以将变量简化为三个范围Global范围(高):从命令行和ansible配置设置的变量play范围(中):在play和相关结构中设置的变量Host范围(低):inventory、facts或register的变量,在主机组和个别主机上设置的变量三个范围的变量优先级由高到低,如果变量重复定义,则以优先级高的为准


一.普通变量

1.普通变量一般在playbook中直接定义

[student@master ansible]$ vim t.yml
---
- name: thosts: node1vars:aa: 123bb: 456cc: 789dd:d1: 224tasks:- name: tedebug:msg: "{{ aa,bb,cc,dd.d1}}"

在这里插入图片描述


2.通过文件定义变量

[student@master ansible]$ vim a.yml
aa: 23232323
bb: 44444444
[student@master ansible]$ vim t.yml
---
- name: thosts: node1vars_files: a.ymltasks:- name: tedebug:msg: "{{ aa,bb}}"

在这里插入图片描述


3.注册变量(register)

注册变量(Registered Variables)是 Ansible 中一种特殊类型的变量,用于捕获任务的执行结果。它们允许将一个任务的输出保存到变量中,然后在后续的任务中使用这些结果。

[student@master ansible]$ vim t.yml
---
- name: thosts: node1tasks:- name:shell:cmd: cat /webdev/index.htmlregister: aa- name: dedebug:var: aa

在这里插入图片描述

---
- name: thosts: node1tasks:- name:shell:cmd: cat /webdev/index.htmlregister: aa- name: dedebug:var: aa.stdout

在这里插入图片描述


4.set_fact定义变量

Ansible 事实变量(Facts)是自动收集的关于远程系统的信息,包括硬件配置、网络设置、操作系统详情等。这些信息在任务执行前自动收集,可以在Playbook中直接使用

通过ansible node1 -m setup 可以查询node1主机所有的事实变量

由于内容过多可以将其导入到文件内查看

- name: thosts: node1tasks:- name: t3debug:msg: the ip is {{ ansible_default_ipv4.address }} fqdn is {{ ansible_fqdn}}

在这里插入图片描述


5.通过命令传入变量

不在playbook里面指定变量,而是通过ansible-playbook t.yml -e 指定变量

---
- name: thosts: node1tasks:- name: t1debug:msg: I am {{ a1 }}

在这里插入图片描述


6.主机变量

主机变量是 Ansible 中用于为特定主机定义自定义配置和属性的机制。它们允许为库存中的单个主机设置特定的值,这些值可以在 Playbook 中使用

[student@master ansible]$ vim inventory

主机

[test01]
node1  name1=node1[test02]
node2[web]
node3
node4[test05]
node5[webtest:children]
web
---
- name: thosts: node1tasks:- name: t1debug:msg: I am {{ name1 }}

在这里插入图片描述

主机组

[test01]
node1[test01:vars]
name1=hhh
name2=hahaha[test02]
node2[web]
node3
node4[test05]
node5[webtest:children]
web
---
- name: thosts: node1tasks:- name: t1debug:msg: I am {{ name1 }}- name: t2debug:msg: I am {{ name2 }}

在这里插入图片描述

还可以在/etc/ansible目录下创建group_vars和host_vars目录下定义变量

[student@master ansible]$ mkdir host_vars
[student@master ansible]$ vim node1
aa:node1
---
- name: thosts: node1tasks:- name: t1debug:msg: I am {{ aa }}

在这里插入图片描述

再创建一个node1.yml文件

aa: node111111

查看

在这里插入图片描述

发现是node1的值,删除node1文件再次查看

在这里插入图片描述

由此可得node1文件名以主机命名,还可以命名为node1.yml,如果node1与node1.yml同时存在,则node1的优先级更高

7.内置变量

Ansible提供了许多内置变量,这些变量可以在playbook中直接使用,而无需预先定义。它们通常用于获取关于当前执行的主机、库存、组等信息

常用变量

变量名类别描述
inventory_hostname内置魔法变量当前任务所运行的主机在库存中定义的主机名
inventory_hostname_short内置魔法变量主机名的简短形式(不带域名部分)
groups内置魔法变量包含库存中所有组和组内主机的列表的字典
group_names内置魔法变量当前主机所属的所有组的列表
hostvars内置魔法变量包含所有主机变量的字典,可用于获取其他主机的变量
ansible_play_hosts内置魔法变量当前play中所有活动的主机列表
ansible_play_batch内置魔法变量当前批处理中的主机列表(如果使用了串行策略)
ansible_version内置魔法变量Ansible的版本信息
inventory_dir内置魔法变量返回的是库存文件所在目录的路径

8.with_items叠加变量

在 Ansible 中,with_items 是一个常用的循环结构,用于对列表中的每个项执行任务。当需要将变量与循环项结合使用时(即"叠加变量"),有几种不同的方法可以实现

---
- name: thosts: node1tasks:- name: aaashell:cmd: echo {{ item }}with_items:- k1- k2- k3register: h1- name: de1debug:var: h1.results[0].stdout- name: de2debug:var: h1.results[1].stdout- name: de3debug:var: h1.results[2].stdout

在这里插入图片描述

---
- name: thosts: node1tasks:- name: aaashell:cmd: echo {{ item }}with_items:- k1- k2- k3register: h1- name: de1debug:msg: "{{h1}}"- name: de2debug:msg: "{{h1}}"- name: de3debug:msg: "{{h1}}"

管理机密

Ansible Vault 可以将任何结构化数据文件(变量文件、Playbook 本身等)进行加密,使其内容变为密文。只有在执行时提供正确的密码,Ansible 才会将其解密并使用。加密后的文件可以安全地存入版本控制系统(如 Git),与团队共享,而无需担心机密泄露

1.使用ansible-vault create命令创建加密文件

[student@master ansible]$ ansible-vault create xyh.yml
---
- name: xyhhosts: node1tasks:- name: create user1user:name: user1state: present

在这里插入图片描述

剧本运行xyh.yml,发现执行失败

可以使用选项–vault-id @prompt或者–ask-vault-pass

[student@master ansible]$ ansible-playbook xyh.yml --ask-vault-pass

在这里插入图片描述

查看加密的文件

[student@master ansible]$ ansible-vault view xyh.yml

在这里插入图片描述

编辑加密文件

[student@master ansible]$ ansible-vault edit xyh.yml

加密文件

[student@master ansible]$ ansible-vault encrypt t1t2.yml

在这里插入图片描述

解密文件

[student@master ansible]$ ansible-vault decrypt t1t2.yml

在这里插入图片描述

[student@master ansible]$ ansible-vault rekey xyh.yml

更改密码

[student@master ansible]$ ansible-vault rekey xyh.yml

在这里插入图片描述

http://www.xdnf.cn/news/19737.html

相关文章:

  • leetcode-python-1796字符串中第二大的数字
  • Python OpenCV图像处理与深度学习:Python OpenCV对象检测入门-Haar级联分类器与人脸检测
  • SpringCloud框架组件梳理
  • SQL Server从入门到项目实践(超值版)读书笔记 25
  • go语言面试之Goroutine 数量控制, GC回收 和任务调度
  • JimuReport 积木报表 v2.1.3 版本发布,免费开源的可视化报表和大屏
  • 2025 金融行业证书怎么选?从能力适配到职业方向的理性梳理
  • 别让你的 AI 对话烂在聊天记录里!
  • 马健涛事件折射出中国音乐产业转型期的深层矛盾,最终解决之道在于完善我国音乐版权鉴定的技术标准
  • Linux系统之----客户端服务器设计(共享内存)
  • 一文通透!为什么 DBSCAN 能检测任意形状的簇 ?
  • 【开题答辩全过程】以 校园帮帮团跑腿系统的设计与实现为例,包含答辩的问题和答案
  • Redis持久化:RDB与AOF,五分钟快速掌握
  • React 第七十一节 Router中generatePath的使用详解及注意事项
  • 1. 从零开始搭建微服务架构1.0(登录模块)
  • 首屏优化讲解
  • springboot:数据校验
  • 【光照】Unity中的[光照模型]概念辨析
  • nginx关于root
  • AI使用指南:9月开学季,自动生成教学PPT
  • 基于 GEE 探索太湖区域 2010—2020 年增强型植被指数 EVI 时空变化
  • dify安装和配置
  • JS循环机制
  • 【ARMv7】开篇:掌握ARMv7架构Soc开发技能
  • 二叉树核心操作知识点整理
  • More Effective C++ 条款22:考虑以操作符复合形式(op=)取代其独身形式(op)
  • JAVA后端开发——forEach 与方法引用(::)详解
  • CoreShop微信小程序商城框架开启多租户-添加一个WPF客户端以便进行上传产品信息和图片(6)
  • 在本地使用 Docker 创建一个易受攻击的云环境
  • leetcode46.全排列