Ansible中的变量与加密

变量命名

只能包含数字,下划线,字母
只能用下划线或字母开头

变量级别

全局:从命令行或配置文件中设定的
play:在play和相关结构中设定的
主机:由清单,事实或注册的任务
变量优先级:狭窄范围与广域范围
变量设定和使用方式
在playbook中直接定义变量
编写playbook
vim user.yml

在这里插入图片描述
在文件中定义变量
定义变量
vim userlist
在这里插入图片描述
vim user.yml
在这里插入图片描述
设定主机变量和清单变量
在定义主机变量和清单变量时使用
vim inventory
在这里插入图片描述
vim user.yml
在这里插入图片描述

## 目录设定变量

mkdir group_vars
mkdir host_vars
vim group_vars/list2
在这里插入图片描述
vim user.yml
在这里插入图片描述
vim host_vars/172.25.2.254
在这里插入图片描述
vim user.yml
在这里插入图片描述
如果多个文件都存在统一个变量会按照读取顺序,最后读取的变量会覆盖前边的

## 使用命令覆盖变量

vim user.yml
在这里插入图片描述
ansible-playbook user.yml
在这里插入图片描述

ansible-playbook user.yml -e “user=linux”

在这里插入图片描述

使用数组设置变量

vim user_var.yml
在这里插入图片描述

vim user.yml
在这里插入图片描述

注册变量
register把模块输出注册到指定字符中
vim hostname.yml
在这里插入图片描述

vim showrc.yml
在这里插入图片描述

运行,这是playbook执行信息

在这里插入图片描述

将这些信息用变量表示 (ignore_errors=yes表示前边的play运行失败后边的也可以运行,默认为no)
在这里插入图片描述

运行
在这里插入图片描述

删除nod1中的/mnt/file运行
ansible nod1.westos.com -m file -a ‘path=/mnt/file state=absent’
ansible-playbook file.yml
可以看到虽然已经运行失败但还是运行了下去
在这里插入图片描述

事实变量
事实变量是ansible在受控主机中自动检测出的变量
事实变量中含有与主机相关的信息
当需要使用主机相关信息时不需要采集赋值,直接调用即可,因为变量信息为系统信息所以不能随意设定仅为采集信息,故而被成为事实变量
例如查看ip
vim ip.yml
在这里插入图片描述

playbook练习
采集nod1.westos.com 受控主机的ip,主机名,内存,并保存到/mnt/host中
vim vhost.yml
在这里插入图片描述

运行并查看

在这里插入图片描述

模板变量
hostvars:ansible软件的内部信息

在这里插入图片描述

group_names:当前受管主机所在组

在这里插入图片描述

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

在这里插入图片描述

inventory_hostname:包含清单中配置的当前受管主机的名称

JINJA2模板

Jinja2是Python下一个被广泛应用的模板引擎
他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能,其中最显著的一个是增加了沙箱执行功能和可选的自动转译功能
J2模板书写规则
例如写一个地址解析
for循环
vim user.yml

在这里插入图片描述

vim users.j2

在这里插入图片描述

vim user.yml

在这里插入图片描述

运行并查看

在这里插入图片描述

练习
采集所有受控主机的ip和主机名并保存到受控主机的/mnt/host

vim host.j2
在这里插入图片描述

vim host.yml
在这里插入图片描述

运行并查看

在这里插入图片描述

if判断
编写实验playbook

vim user_messages.yml
在这里插入图片描述

vim user_messages.j2

在这里插入图片描述

vim user_messages.yml

在这里插入图片描述

运行并查看
在这里插入图片描述

Ansible中的加密控制
创建建立文件

ansible-vault create westos

在这里插入图片描述

查看

在这里插入图片描述

使用ansible查看并输入密码
ansible-vault view westos

在这里插入图片描述

文件包含密码
vim westos-vault

在这里插入图片描述

ansible-vault create --vault-password-file=westos-vault westos
查看(使用westos-vault中写入的字符串作为密码)
ansible-vault view --vault-password-file=westos-vault westos

在这里插入图片描述

加密现有文件
vim westos.yml

在这里插入图片描述

ansible-vault encrypt westos.yml

在这里插入图片描述

查看

在这里插入图片描述

使用ansible输入密码查看

在这里插入图片描述

编辑加密文件(注意缩进)
ansible-vault edit westos.yml

在这里插入图片描述

使用ansible查看

在这里插入图片描述

文件密码编辑
ansible-vault edit --vault-password-file=westos-vault westos
在这里插入图片描述

使用ansible查看
在这里插入图片描述

解密文件
ansible-vault decrypt westos

在这里插入图片描述

解密加密文件变成另外一个文件,原文件不变
ansible-vault decrypt westos.yml --output=linux.yml

在这里插入图片描述

更改密码
ansible-vault rekey westos.yml
在这里插入图片描述

文件更改密码
ansible-vault rekey westos.yml --new-vault-password-file=key1(需要编辑key1文件写入密码)
在这里插入图片描述

加密文件运行
文件加密后只用playbook命令无法运行

在这里插入图片描述
ansible-playbook westos,yml --ask-vault-pass
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42958401/article/details/108647364