模块用户不接受 ansible-vault 生成的加密密码?

module user doesn't accept encrypt password generated by ansible-vault?

最近我使用 'user' 模块创建用户,密码在 vars/main.yml

中提供
- name: Create pamuser
  user:
    name: pamuser
    password: "{{ pamuser_pass }}"
    groups: wheel
    append: yes
  tags: pamuser

曾经 运行 剧本,它给了我这个警告

TASK [prerequisite : Create pamuser] *****************************************************************************
[WARNING]: The input password appears not to have been hashed. The 'password' argument must be encrypted for this
module to work properly.

然后我使用 ansible-vault encrypt_string 命令仅加密特定变量 "pamuser_pass" 通过将明文替换为 ansible-vault 给我的保险库密码

/vars/main.yml

中的内容
---
# vars file for prerequisite role
pamuser_pass: !vault |
              $ANSIBLE_VAULT;1.1;AES256
              65643265346231613137396339303834396663383466636631646337303235306137386534396266
              3364333534616238396465626436376561323762303139620a376630643131323133336164373237
              64663332363233303032636638306566303034393137636533373332383334333439663930613232
              3737

然后我删除当前的 pamuser 并使用命令

重新运行 剧本
ansible-playbook playbook.yaml --tags "pamuser" --ask-pass -K --ask-vault-pass

连同运行ning进程,仍然显示警告

[WARNING]: The input password appears not to have been hashed. The 'password' argument must be encrypted for this
    module to work properly.

使用 id pamuser 结果看起来不错,但是一旦使用 ssh pamuser@example.com 登录,然后输入常规密码,密码就不起作用了。我无法使用那个 pamuser 登录。

有什么我遗漏的吗?

您应该遵循所提到的推荐方法之一 here 提供哈希值。这不是 ansible 中的一般保险库加密。这是特定于用户模块的。以下是来自文档:

How do I generate encrypted passwords for the user module? Ansible ad-hoc command is the easiest option:

    ansible all -i localhost, -m debug -a "msg={{ 'mypassword' | password_hash('sha512',
  'mysecretsalt') }}"

The mkpasswd utility that is available on most Linux systems is also a great option:

mkpasswd --method=sha-512