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

