users_vault.yml 腳本為 user4host.yml,dev, test 產生的群組及帳號不同於 prod:
ceuser@deyu:~/ansible_pb$ vi user4hosts.yml
ceuser@deyu:~/ansible_pb$ cat user4hosts.yml
---
- name: Create users with Valut
hosts: dev test prod
vars_files: pwlist.yml
tasks:
- block:
- name: Ensure group "devgrp" exists
ansible.builtin.group:
name: devgrp
state: present
- name: Add users
ansible.builtin.user:
name: "{{ item }}"
groups: devgrp
password: "{{ devpw | password_hash('sha512') }}"
loop:
- peter
- linda
when: '"dev" in group_names or "test" in group_names'
- block:
- name: Ensure group "prodgrp" exists
ansible.builtin.group:
name: prodgrp
state: present
- name: Add user 'rita'
ansible.builtin.user:
name: rita
groups: prodgrp
password: "{{ prodpw | password_hash('sha512') }}"
when: '"prod" in group_names'
--ask-vault-pass 輸入密碼解密 pwlist.yml。
ceuser@deyu:~/ansible_pb$ ansible-playbook user4hosts.yml --ask-vault-pass Vault password: PLAY [Create users with Valut] ************************************************* TASK [Gathering Facts] ********************************************************* ok: [kvm11] ok: [kvm14] ok: [kvm12] ok: [kvm13] TASK [Ensure group "devgrp" exists] ******************************************** skipping: [kvm13] skipping: [kvm14] changed: [kvm11] changed: [kvm12] TASK [Add users] *************************************************************** [DEPRECATION WARNING]: Encryption using the Python crypt module is deprecated. The Python crypt module is deprecated and will be removed from Python 3.13. Install the passlib library for continued encryption functionality. This feature will be removed in version 2.17. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. skipping: [kvm13] => (item=peter) skipping: [kvm13] => (item=linda) skipping: [kvm13] skipping: [kvm14] => (item=peter) skipping: [kvm14] => (item=linda) skipping: [kvm14] changed: [kvm11] => (item=peter) changed: [kvm12] => (item=peter) changed: [kvm11] => (item=linda) changed: [kvm12] => (item=linda) TASK [Ensure group "prodgrp" exists] ******************************************* skipping: [kvm11] skipping: [kvm12] changed: [kvm13] changed: [kvm14] TASK [Add user 'rita'] ********************************************************* skipping: [kvm11] skipping: [kvm12] changed: [kvm14] changed: [kvm13] PLAY RECAP ********************************************************************* kvm11 : ok=3 changed=2 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 kvm12 : ok=3 changed=2 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 kvm13 : ok=3 changed=2 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 kvm14 : ok=3 changed=2 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
--vault-password-file 指定金鑰檔解密 pwlist.yml。
ceuser@deyu:~/ansible_pb$ ansible-playbook user4hosts.yml --vault-password-file=password.txt PLAY [Create users with Valut] ************************************************* TASK [Gathering Facts] ********************************************************* ok: [kvm11] ok: [kvm14] ok: [kvm13] ok: [kvm12] TASK [Ensure group "devgrp" exists] ******************************************** skipping: [kvm13] skipping: [kvm14] ok: [kvm11] ok: [kvm12] TASK [Add users] *************************************************************** [DEPRECATION WARNING]: Encryption using the Python crypt module is deprecated. The Python crypt module is deprecated and will be removed from Python 3.13. Install the passlib library for continued encryption functionality. This feature will be removed in version 2.17. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. skipping: [kvm13] => (item=peter) skipping: [kvm13] => (item=linda) skipping: [kvm13] skipping: [kvm14] => (item=peter) skipping: [kvm14] => (item=linda) skipping: [kvm14] changed: [kvm12] => (item=peter) changed: [kvm11] => (item=peter) changed: [kvm12] => (item=linda) changed: [kvm11] => (item=linda) TASK [Ensure group "prodgrp" exists] ******************************************* skipping: [kvm11] skipping: [kvm12] ok: [kvm13] ok: [kvm14] TASK [Add user 'rita'] ********************************************************* skipping: [kvm11] skipping: [kvm12] changed: [kvm13] changed: [kvm14] PLAY RECAP ********************************************************************* kvm11 : ok=3 changed=1 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 kvm12 : ok=3 changed=1 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 kvm13 : ok=3 changed=1 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 kvm14 : ok=3 changed=1 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0