我在 RHEL 7 上使用 Ansible 2.9.27 自动化基础设施时遇到一个问题,特别是在我的任务中使用加密密码时。
当利用模块password
的选项ansible.builtin.user
提供加密密码时,剧本运行正常,但 Ansible 会显示一条消息
[WARNING]: The input password appears not to have been hashed.
我使用 Jinja 中的过滤器生成加密密码password_hash
。下面是我使用的代码示例:
- name: Create user with encrypted password
ansible.builtin.user:
name: user
password: "{{ mypw | password_hash('sha512', mypw_salt) }}"
我将变量存储在单独的文件中。尽管遵循了正确的语法和指导原则,但我还是无法解决这个问题。
我是否遗漏了什么?
答案1
在 RHEL 7.9、Ansible 2.9.27、Python 2.7.5 的设置中,我无法产生问题。一个最小示例剧本
---
- hosts: localhost
become: true
gather_facts: false
vars:
PASSWORD: TEST
tasks:
- name: Configure or update user
user:
name: "TestUser"
password: "{{ PASSWORD | password_hash('sha512', 'salt') }}"
结果输出为
TASK [Configure or update user] ******
changed: [localhost]
其他示例
只是一张便条......
当利用
password
模块选项ansible.builtin.user
提供加密密码时,剧本运行良好,但 Ansible 显示……
---
- hosts: localhost
become: true
gather_facts: false
vars:
PASSWORD: TEST
tasks:
- name: Configure or update user
user:
name: "TestUser"
password: "{{ PASSWORD }}"
将导致输出
TASK [Configure or update user] ******
[WARNING]: The input password appears not to have been hashed. ...
这是一条警告消息,而不是错误。这意味着您应该提供经过哈希处理的密码。此外,如果没有事先解密,就无法提供加密密码(字符串)。请参阅user
模块 – 管理用户账户 - 参数password
如果提供,则将用户密码设置为提供的加密哈希(Linux)或纯文本密码(macOS)。
请注意哈希算法和加密算法之间的根本区别。