1. 管理机密
- 目标:使用ansible vault加密敏感变量,并运行vault加密变量文件的playbook
- ansible vault :ansible可能需要访问密码或者api密钥等敏感数据,以便配置主机。
- 加密解密工具:ansible-vault命令
注:ansible vault不实施自有的加密函数,而使用外部python工具集
1.1 创建加密文件
方法:
ansible-vault create filename
需要输入密码
创建加密文件同时将密码保存,密码文件中必须先写入密码
1.2 查看加密文件
方法:
ansible-vault view filename
1.3 编辑现有的加密文件
原理:将文件解密为一个临时文件,并编辑;保存时,复制内容并删除临时文件
注:edit命令始终重写文件,因此只有在更改文件时使用,查看尽量使用view
1.4 加密现有的文件
方法:
ansible-vault encrypt filename #filename参数可以是多个
可以使用--output=filename将加密文件保存为新的名称,使用此参数时输入文件只能是一个
1.5 解密现有的文件
方法:
ansible-vault decrypt filename
1.6 更改加密文件密码
方法:
ansible-vault rekey filename
'可以一次更新多个文件密码'
使用vault密码文件时,最好使用--net-vault-password-file
playbook和ansible vault
运行加密的playbook,没有密码则报错
交互式提供密码
注:2.4版本之前的ansible,使用--ask-vault-pass提供交互式密码
也可以将密码存在文件中(注意使用文件系统权限对文件进行保护)
2. 管理事实
事实包括:
主机名称、内核版本、网络借口、IP地址等
2.1 描述ansible事实
查看主机信息
ansible-playbook fact.yml
再将事实替换为动态的值
ansible事实作为变量注入
使用setup模块显示所有事实信息
ansible server1.huayu.com -m setup
关闭事实收集,开提升执行速度
[root@workstation~]#cat user.yml
运行
2.2 创建自定义事实
可以使用INI格式或者JSON格式
INI格式
JSON格式
自定义格式不能使用ymal格式,使用最为接近的json最好
[root@workstation~]#mkdir /etc/ansible/facts.d
vim custom.fact #必须以.fact结尾
ansible localhost -m setup
注:自定义事实的使用方式和默认事实相同
使用魔法变量
常用的有四个:
- hostvars #包含受管主机的变量,可以用于获取另一台受管主机的变量的值
- group_names #列出当前受管主机所属的所有组
- groups #列出清单中的所有组和主机
- inventory_hostname#包含清单中配置的当前受管主机的主机名称
用途之一:使用debug模块报告特定主机的hostvars的值
运行
[root@workstationdata-facts]#ansible-playbook playbook.yml