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

模块用户不接受ansible vault生成的加密密码?,ansible,ansible-vault,Ansible,Ansible Vault,最近,我使用“user”模块创建用户,并使用vars/main.yml中提供的密码 - name: Create pamuser user: name: pamuser password: "{{ pamuser_pass }}" groups: wheel append: yes tags: pamuser --- # vars file for prerequisite role pamuser_pass: !vault |

最近,我使用“user”模块创建用户,并使用vars/main.yml中提供的密码

- name: Create pamuser
  user:
    name: pamuser
    password: "{{ pamuser_pass }}"
    groups: wheel
    append: yes
  tags: pamuser
---
# vars file for prerequisite role
pamuser_pass: !vault |
              $ANSIBLE_VAULT;1.1;AES256
              65643265346231613137396339303834396663383466636631646337303235306137386534396266
              3364333534616238396465626436376561323762303139620a376630643131323133336164373237
              64663332363233303032636638306566303034393137636533373332383334333439663930613232
              3737
一旦运行一个剧本,它会给我这个警告

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_passby,将明文替换为ansible vault给我的vault密码

/vars/main.yml中的内容

- name: Create pamuser
  user:
    name: pamuser
    password: "{{ pamuser_pass }}"
    groups: wheel
    append: yes
  tags: pamuser
---
# vars file for prerequisite role
pamuser_pass: !vault |
              $ANSIBLE_VAULT;1.1;AES256
              65643265346231613137396339303834396663383466636631646337303235306137386534396266
              3364333534616238396465626436376561323762303139620a376630643131323133336164373237
              64663332363233303032636638306566303034393137636533373332383334333439663930613232
              3737
然后,我删除当前的pamuser并使用命令重新运行playbook

ansible-playbook playbook.yaml --tags "pamuser" --ask-pass -K --ask-vault-pass
随着进程的运行,它仍然显示警告

[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然后输入常规密码,密码不起作用。我不能用那个密码登录


有什么我没有注意到的吗?

您应该遵循上面提到的推荐方法之一 提供散列。这不是ansible中的一般vault加密。这是特定于用户模块的。以下为文件内容:

如何为用户模块生成加密密码?安西布尔 特别命令是最简单的选项:

在大多数计算机上可用的mkpasswd实用程序 Linux系统也是一个很好的选择:


我试过使用推荐的方法,但不起作用,你能告诉我吗

[user1@rhhost1 ~]$ ansible all -i localhost, -m debug -a "msg={{'hello' | password_hash('sha512','mysecretsalt')}}"
    localhost | SUCCESS => {
        "msg": "$6$mysecretsalt$tD6lGf9FdSWKyrGT7O/h8DvbPso3lPDhYYxjmL.tInFSxnAAkjzRfMCew/.tVPkJMrSKhToVL2KUzKB9FMGWZ1"
    }

[user1@rhhost1 ~]$ ansible rhhost2* -m user -a "name=user4 state=present home=/home/user4 shell=/bin/bash password=$6$mysecretsalt$tD6lGf9FdSWKyrGT7O/h8DvbPso3lPDhYYxjmL.tInFSxnAAkjzRfMCew/.tVPkJMrSKhToVL2KUzKB9FMGWZ1" -b -K
    BECOME password:
    [WARNING]: The input password appears not to have been hashed. The 'password' argument must be encrypted for this module to work
    properly.
    rhhost2.localnet.com | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/libexec/platform-python"
        },
        "changed": true,
        "comment": "",
        "create_home": true,
        "group": 1003,
        "home": "/home/user4",
        "name": "user4",
        "password": "NOT_LOGGING_PASSWORD",
        "shell": "/bin/bash",
        "state": "present",
        "system": false,
        "uid": 1003
    }

[user1@rhhost1 ~]$ ansible --version
    ansible 2.9.10
      config file = /etc/ansible/ansible.cfg
      configured module search path = ['/home/user1/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python3.6/site-packages/ansible
      executable location = /usr/bin/ansible
      python version = 3.6.8 (default, Apr 16 2020, 01:36:27) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]

对它起作用了。这是我的不好,因为我一开始没有看官方文章。还有一个问题,只有用户模块中的密码需要特殊方式吗?我们可以将ansible vault与其他模块一起使用吗?是的,ansible vault与其他模块一起使用,但有关更多信息,请始终参考模块的官方文档!如果答案有帮助,请接受它作为答案@如果你有新问题,请点击按钮提问。如果你有足够的声誉,问题就来了。或者,将其作为收藏夹,您将收到任何新答案的通知。