Ansible:[警告]:输入的密码似乎尚未经过哈希处理

Ansible:[警告]:输入的密码似乎尚未经过哈希处理

我在 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)。

请注意哈希算法和加密算法之间的根本区别

相关内容