Ansible:为用户模块生成加密密码

时间:2020-03-21 11:42:10  来源:igfitidea点击:

用户模块可用于创建用户帐户和设置密码。

问题

如何使用用户模块为Linux帐户设置密码?
这是我花了一段时间才弄清楚的事情。
幸运的是,在'ansible-doc'中有对Ansible FAQ的引用。

解决方案:哈希过滤器

答案来自Ansible FAQ。
为了获得带有随机盐的sha512密码哈希,我们可以使用以下代码:

{{ 'password' | password_hash('sha512') }}

让我们将纯文本密码存储在Ansible保管库中:

$ansible-vault view my_vault.yml
Vault password: 
my_password: myPlaintextPassword

我们使用库文件'my_vault.yml'的剧本看起来像这样:

--
- name: Create New Users
  hosts: all
  become: true
  gather_facts: false
  vars_files:

- my_vault.yml
  tasks:

- name: Create Users

user:

name: "{{ item }}"

password: "{{ my_password | password_hash('sha512') }}"

shell: /bin/bash

loop:

- alice

- vincent

请注意,虽然剧本可以胜任,但并不是幂等的。
每次运行剧本时都会生成密码哈希,并且'/etc/shadow'文件将被更新。

要使剧本具有幂等性,请设置'update_password:on_create'。
这只会为新创建的用户设置密码。

--
- name: Create New Users
  hosts: all
  become: true
  gather_facts: false
  vars_files:

- my_vault.yml
  tasks:

- name: Create Users

user:

name: "{{ item }}"

password: "{{ my_password | password_hash('sha512') }}"

shell: /bin/bash

update_password: on_create

loop:

- alice

- vincent