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

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.dtcms.com/a/361673.html

相关文章:

  • 【Android】使用Handler做多个线程之间的通信
  • Java面试宝典:Redis高并发高可用(集群)
  • 函数,数组与正则表达式
  • Kafka 架构原理
  • 销售事业十年规划,并附上一套能帮助销售成长的「软件工具组合」
  • 【git 基础】detached HEAD state的出现和解决
  • C++11模板优化大揭秘:让你的代码更简洁、更安全、更高效
  • javaScript变量命名规则
  • 【汇客项目】:在启动过程中报错 本来安装的是node-sass 被卸载后安装的sass ,代码中一部分出现问题
  • 【深度学习基础】深度学习中的数据增强技术:从理论到实践的解析
  • 【ARMv7】开篇:掌握ARMv7架构Soc开发技能
  • Deepoc具身智能运动控制板:赋能机器感知与决策
  • (MySQL)分布式锁
  • CCNP考试通过后多久有证书,哪里可以查询下载电子证书。
  • 重新理解图神经网络训练:数据、Batch、权重与大图
  • 深入理解零拷贝:本地IO与网络IO的性能优化利器
  • wpf之StackPanel
  • 一、Git与Gitee常见问题解答
  • 2025年数字化转型关键证书分析与选择指南
  • Spark和Spring整合处理离线数据
  • 在idea当中git的基础使用
  • Ansible变量与机密管理总结
  • 人工智能学习:什么是NLP自然语言处理
  • 【自记录】Ubuntu20.04下Python自编译
  • 全栈智算系列直播 | 智算中心对网络的需求与应对策略(上)
  • 基于FPGA的多协议视频传输IP方案
  • 【系统架构师设计(8)】需求分析之 SysML系统建模语言:从软件工程到系统工程的跨越
  • 硬件开发_基于Zigee组网的果园养殖监控系统
  • 简单高效的“色差斑块”匀色、水体修补、地物修复技巧
  • 51.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--登录注册扩展