我正在尝试从 Ansible playbook更改非 root Linux 用户的密码。为此,我尝试关注此链接
按照说明,我可以通过在终端中键入以下代码来成功更改非 root 用户的密码。
$ echo -e "your_current_pass\nlinuxpassword\nlinuxpassword" | passwd
Changing password for testuser.
(current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
之后,我尝试使用下面的 Ansible 剧本自动化代码,
---
- hosts: all
gather_facts: no
tasks:
- name: "Check if user exists"
register: user1_exists
raw: getent passwd {{ ansible_user }}
ignore_errors: true
- name: "Change {{ ansible_user }} password"
raw: echo -e "my_current_pass\nmy_new_pass\nmy_new_pass" | passwd
when: user1_exists|success
我在这里使用 Ansible 的原始模块,因为我的大多数机器都没有安装 Python。我也无权在剧本superuser (sudo)
中使用。become: True
还在这里使用基于密码的身份验证在目标机器上运行 Ansible playbook。不是基于 ssh 的身份验证。
但是,当我执行剧本时,我收到了这个错误,
TASK [change user1 password] ***************************************************
fatal: [192.168.0.57]: FAILED! => {"changed": true, "failed": true, "rc": 10,
"stderr": "Shared connection to 192.168.0.57 closed.\r\n", "stdout": "Changing
password for testuser.\r\n(current) UNIX password: passwd: Authentication
token manipulation error\r\npasswd: password unchanged\r\n", "stdout_lines":
["Changing password for testuser.", "(current) UNIX password: passwd:
Authentication token manipulation error", "passwd: password unchanged"]}
谁能告诉我我在这里犯的错误?