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