RHCE8 练习题:创建用户账户

  • http://materials.example.com/cd/exam_rhce8/user_list.yml 下载要创建的用户的列表,并将它保存到 /home/student/ansible 目录
  • 在本次考试中使用在其他位置创建的密码库 /home/student/ansible/locker.yml 创建名为 /home/student/ansible/users.yml 的playbook ,从而按以下所述创建用户账户:
  • 职位描述为 developer 的用户应当:
    • 在 dev 和 test 主机组中的受管节点上创建
    • 从 pw_developer 变量分配密码
    • 是补充组 student 的成员
  • 职位描述为 manager 的用户应当:
    • 在 prod 主机组中的受管节点上创建
    • 从pw_manager 变量分配密码
    • 是补充组 opsmgr 的成员
  • 密码采用 SHA512 hash格式
  • 您的 playbook 应能够在本次考试中使用在其他位置创建的库密码文件 /home/student/ansible/secret.txt 正常运行

Answer:

wget http://materials.example.com/cd/exam_rhce8/user_list.yml
vim /home/student/ansible/users.yml
---
- name: create users
  hosts: dev,test,prod
  vars_files:
    - /home/student/ansible/locker.yml
    - /home/student/ansible/user_list.yml
  tasks:
    - name: create user and student group
      group:
        name: student
      loop: "{{ users }}"
      when: item.job == "developer" and (inventory_hostname in groups.dev or inventory_hostname in groups.test)
    - name: create user and pass
      user:
        name: "{{ item.name }}"
        password: "{{ pw_developer | password_hash('sha512') }}"
        groups: student
      loop: "{{ users }}"
      when: item.job == "developer" and (inventory_hostname in groups.dev or inventory_hostname in groups.test)

    - name: create opsmgr group
      group:
        name: opsmgr
      loop: "{{ users }}"
      when: item.job == "manager" and inventory_hostname in groups.prod
    - name: create user and password
      user:
        name: "{{ item.name }}"
        password: "{{ pw_manager | password_hash('sha512') }}"
        groups: opsmgr
      loop: "{{ users }}"
      when: item.job == "manager" and inventory_hostname in groups.prod
ansible-playbook users.yml --vault-password-file=secret.txt

验证

ansible  all -a 'tail -3 /etc/passwd'

file