题目描述
按照下方所述,创建一个 Ansible 库来存储用户密码:
- 库名称为
/home/greg/ansible/locker.yml
- 库中含有两个变量,名称如下:
pw_developer
, 值为Imadev
;pw_manager
, 值为Imamgr
.
- 用于加密和解密该库的密码为
whenyouwishuponastar
; - 密码存储在文件
/home/greg/ansible/secret.txt
中。
详细解析
在我们编写的一些 palybook 中可能会包含用户名或密码等敏感信息,为了能够安全的存储和使用这些敏感信息,我们就需要这样的 playbook 进行加密,这就是本题要考察的一个应用背景。
本题的核心就是用一个写有密码的密码文件来加密一个 Ansible playbook.
首先,按照题目要求,我们先创建并编辑如下 playbook:
vim /home/greg/ansible/locker.yml
之后,按照题目要求,在上面创建的 playbook 中写入如下内容:
pw_developer: Imadev pw_manager: Imamgr
接着,使用 echo
命令将题目指定的密码写入指定的密码文件中:
echo whenyouwishuponastar > /home/greg/ansible/secret.txt
之后的操作涉及对 Ansible playbook 的加密,需要用到 ansible-vault
命令。
在加密前,我们可以先用 cat
命令看一下 locker.yml
这个 playbook 中的内容是否是明文:
[greg@control ~]$ cat /home/greg/ansible/locker.yml pw_developer: Imadev pw_manager: Imamgr
使用密码文件 secret.txt
加密 locker.yml
这个 playbook 的命令如下:
ansible-vault encrypt --vault-id=/home/greg/ansible/secret.txt /home/greg/ansible/locker.yml
上述命令执行成功之后会返回 Encryption successful
的提示信息。此时再使用 cat
命令查看 locker.yml
这个 playbook 就会发现已经是密文了:
[greg@control ~]$ cat /home/greg/ansible/locker.yml $ANSIBLE_VAULT;1.1;AES256 38373262626432613430616230636232386536303937333131613462343633623130333531373137 3030633335343532613432656332323236313662333033610a653933363435303661656537383061 37356231333034616362386332613665303863613934336138616634326235653264396332363334 6565653436343437390a663536656363366538646331356438616666626232323739376665346563 66386134353737623134613938666566636133343535373831383032613461363132653761356364 6531663934333231346136313732383435613036303034623232
如果想查看 locker.yml
的明文信息,需要执行 ansible-vault view
命令并输入前面设置的加密密码 whenyouwishuponastar
:
[greg@control ~]$ ansible-vault view /home/greg/ansible/locker.yml Vault password: pw_developer: Imadev pw_manager: Imamgr
ansible-vault view
命令只是“临时解密”并显示出来被加密的 playbook 中的明文信息,被加密的 playbook 并没有被解密并还原成明文。