首先以student用户身份并使用student作为密码登录workstation.
登录workstation
[kiosk@foundation0 ~]$ ssh student@workstation
Warning: Permanently added 'workstation,172.25.250.9' (ECDSA) to the list of known hosts.
Activate the web console with: systemctl enable --now cockpit.socket
在workstation 上,运行 lab data-secret start 命令。此脚本确保wordstaion上已安装ansible,并创建供此练习使用的工作目录。此目录包含指向作为受管主机的servera.lab.example.com 的清单文件,该受管主机是devserver组的成员。
[student@workstation ~]$ lab data-secret start
Setting up workstation for lab exercise work:
· Verifying Ansible installation.............................. SUCCESS
· Creating working directory.................................. SUCCESS
· Downloading secret.yml file................................. SUCCESS
. Creating inventory directory................................ SUCCESS
. Creating Ansible configuration file......................... SUCCESS
. Creating host file.......................................... SUCCESS
1、在workstation 上,以student用户身份更改到/home/studnet/data-secret 工作目录。
[student@workstation ~]$ cd ~/data-secret
2、编辑提供的加密文件 secret.yml 的内容。该文件可以使用 redhat 作为密码进行密码解密。取消注释username 和 pwhash 变量条目。
[student@workstation data-secret]$ ansible-vault edit secret.yml
Vault password: redhat
3、创建一个名为 /home/student/data-secret/create_users.yml 的playbook,他将使用 /home/student/data-secret.yml 加密文件中定义的变量。
[student@workstation data-secret]$ vim create_users.yml
添加:
---
- name: create user accounts for all our servers
hosts: devservers
become: True
remote_user: devops
vars_files:
- secret.yml
tasks:
- name: Creating user from secret.yml
user:
name: "{{ username }}"
password: "{{ pwhash }}"
4、使用ansible-playbook --syntax-check 命令,验证create_users.yml playbook 的语法。使用--ask-vault-pass 选项,从而提示输入用于解密secret.yml 的vault 密码。先解决所有语法错误,再继续。
[student@workstation data-secret]$ ansible-playbook --syntax-check --ask-vault-pass create_users.yml
Vault password: redhat
playbook: create_users.yml
5、创建名为vault-pass 的密码文件,以用于playbook 执行而不必要求输入密码。该文件必须包含纯文本 redhat 作为vault 密码。将文件的权限更改位0600.
[student@workstation data-secret]$ echo 'redhat' > vault-pass
[student@workstation data-secret]$ chmod 0600 vault-pass
6、使用 vault-pass 执行 Ansible Playbbok ,以利用secret.yml Ansible Vault加密文件中存储为变量的密码在远程系统上创建ansibleuser1 用户。
[student@workstation data-secret]$ ansible-playbook --vault-password-file=vault-pass create_users.yml
PLAY [create user accounts for all our servers] ********************************
TASK [Gathering Facts] *********************************************************
ok: [servera.lab.example.com]
TASK [Creating user from secret.yml] *******************************************
changed: [servera.lab.example.com]
PLAY RECAP *********************************************************************
servera.lab.example.com : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
7、验证该playbook 是否正确运行。用户ansibleuser1 应该存在,并且在 servera.lab.example.com 上有正确的密码。通过使用 ssh 以该用户身份登录 servera.lab.example.com. 来对此进行测试。ansibleuser1 的密码是 redhat 。为了确保SSH 仅尝试通过密码而不是SSH 密钥进行省份验证,请在登陆时使用-o PrferredAuthentications-password选项。
成功登录后,从 servera 注销。
[student@workstation data-secret]$ ssh -o PreferredAuthentications=password ansibleuser1@servera.lab.example.com
ansibleuser1@servera.lab.example.com's password: redhat
Activate the web console with: systemctl enable --now cockpit.socket
[ansibleuser1@servera ~]$ exit
logout
Connection to servera.lab.example.com closed.
完成
在workstation上,运行 lab data-variables finish 脚本俩清理本实验中创建的资源.
[student@workstation ~]$ lab data-secret finish
Cleaning up the lab on workstation:
. Undoing the playbook tasks.................................. SUCCESS