06 管理机密、事实和循环

本文介绍了如何使用Ansible Vault管理机密,包括创建、查看、解密和编辑加密文件,以及在playbook中使用vault。同时,文章还讨论了Ansible的事实管理,包括事实的收集、自定义创建和关闭,以及魔法变量的使用。最后,文章讲解了如何在Ansible中编写循环和条件任务,展示了不同类型的循环操作。
摘要由CSDN通过智能技术生成

管理机密、事实和循环


1. 管理机密

1.1 ansible vault

ansible可能需要访问密码或apl密钥等敏感数据,以便能配置受管主机,通常,此信息可能以纯文本形式存储于清单变量或其他ansible文件中,但,任何有权访问ansible文件的用户都能访问到,存在安全风险

ansible提供得ansible vault可以解密加密任何由ansible使用得结构化数据文件。若要使用ansible-vault,可通过ansible-vault的命令行工具创建、编辑、加密、解密和查看文件

1.1.1 创建加密的文件

使用ansible-vault create filename创建一个新的加密文件,输入密码,默认编辑器是vi打开文件

[root@my ansible]# ansible-vault create group_vars/apache
New Vault password: 
Confirm New Vault password: 

1.1.2 查看加密的文件

使用ansbile-vault view filename查看加密的文件,而不必打开它编辑

[root@my ansible]# cat group_vars/apache 
$ANSIBLE_VAULT;1.1;AES256
33396234613132373566303135306537363139366334343463383065363061336362633333663436
3762353739663035323539613466643239326661633566620a353464626663623133366562636239
63623636346131383162326236666563373933363033613461383032646330303834303434613664
3863386262383932350a343130623164633132376632393563396461613739366630626633376637
36396633666166376537316237613862643666343861363132626566303233353430643862303961
3265636561646264343838626133353239376665613632356364
[root@my ansible]# ansible-vault view group_vars/apache 
Vault password: 
ansible_user=root
ansible_password=1

1.1.3 解密已经加密的文件

使用ansbile-vault decrypt filename命令,永久解密

[root@my ansible]# ansible-vault decrypt group_vars/apache 
Vault password: 
Decryption successful
[root@my ansible]# cat group_vars/apache 
ansible_user=root
ansible_password=1

1.1.4 文件已经存在现在进行加密

使用ansible-vault encrypt filename

[root@my ansible]# ansible-vault encrypt group_vars/apache 
New Vault password: 
Confirm New Vault password: 
Encryption successful

1.1.5 编辑已经加密的文件

使用ansible-vaule edit filename

[root@my ansible]# ansible-vault edit group_vars/apache 
Vault password:  //这里输入密码
//输入密码后自动进入vi编辑器
ansible_user=root
ansible_password=1

1.1.6 已经加密的文件重新加密

使用ansible-vault rekey filename,修改新的密码需要输入旧的密码

[root@my ansible]# ansible-vault rekey group_vars/apache 
Vault password: 
New Vault password: 
Confirm New Vault password: 
Rekey successful

1.2 playbook和ansible vault

要运行可访问通过ansible vault加密的文件的playbook,需要向ansible-playbook命令提供加密文件,如果不提供密码,playbook将返回错误

[root@my ansible]# ansible-playbook group_vars/apache  //没有提供密码
ERROR! Attempting to decrypt but no vault secrets found

要为playbook提供vault密码,可使用–vault-id选项,列如

//这是自己手动输入密码
[root@my ansible]# ansible-playbook --vault-id @prompt playbook/test.yml 
Vault password (default): 
ERROR! variable files must contain either a dictionary of variables, or a list of dictionaries. Got: user:yi (<class 'ansible.parsing.yaml.objects.AnsibleUnicode'>)

此外,也可使用–vault-password-file=文件名

[root@my ansible]# ls -a
.  ..  ansible.cfg  group_vars  hosts  host_vars  inventory  playbook  roles
[root@my ansible]# vim .mima //设置一个存放密码的隐藏文件名
[root@my ansible]# cat .mima 
1
[root@my ansible]# ansible-vault view --vault-password-file=.mima group_vars/apache 
ansible_user=root
ansible_password=1
[root@my ~]# openssl rand -base64 20 //这是随机生成一个密码
2mSBfy2utJiEIhIGVJMLrVSg008=

//解密
[root@my ansible]# ansible-vault decrypt --vault-password-file=.mima group_vars/apache 
Decryption successful
[root@my ansible]# cat group_vars/apache 
ansible_user=root
ansible_password=1
//对一个已经存在的文件加密
[root@my ansible]# ansible-vault encrypt --vault-password-file=.mima group_vars/apache 
Encryption successful
//重新设置密码又不想输入新的密码
[root@my ansible]# vim .xinmima
[root@my ansible]# cat .xinmima 
1
[root@my ansible
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值