运行 Ansible 剧本中的角色时如何成为远程计算机的用户
How to become a user at remote machine when running a role in Ansible playbook
我知道这已在其他问题中讨论过,我尝试了各种选择,但似乎没有解决我的问题。
我开始学习 Ansible 并尝试 运行 剧本。我有一个角色,其中有任务。我想 运行 作为用户 john 在远程机器上的整个剧本。剧本以复制任务开始。一切正常,直到我开始使用 become 和 become_user。我尝试 运行通过在主要 playbbok 中指定来扮演用户 john 的角色:
---
- hosts: target-machine.com
roles:
- role: installSoftware
become: yes
become_user: john
然后在执行剧本时,我运行以下内容:
ansible-playbook -s major.yml -K
提示我输入
SUDO password:
我输入远程目标机器上用户john的密码。一旦启动 运行ning 剧本,它就挂在需要用户为 john 的任务上并抱怨:
fatal: [target.com]: FAILED! => {"failed": true, "msg": "Failed to get information on remote file (/home/john/software.zip): MODULE FAILURE"}
我还尝试了以下方法:
---
- hosts: target-machine.com
become: yes
become_user: john
roles:
- role: installSoftware
以便 运行 用户 john 的整个剧本。它再次询问我 SUDO 密码,然后在 5 分钟后抱怨:
fatal: [openam.ansible-target.com]: FAILED! => {"changed": false, "failed": true, "module_stderr": "", "module_stdout": "\r\nSorry, try again .\r\n[sudo via ansible, key=kchjtpjorgnvaksspqvgwzzkgtjnxsyv] password: \r\nsudo: 1 incorrect password attempt\r\n", "msg": "MODULE FAILURE"}
虽然我输入的密码是正确的。在 SO 上,建议增加我在 ansible.cfg 文件中所做的 SSH 超时:
[ssh_connection]
ssh_args = -o ServerAliveInterval=60 -o ControlMaster=auto -o ControlPersist=1m
我只想在目标机器上运行镜像:
su john
Enter Password:
john$
如有任何帮助,我们将不胜感激。谢谢。
默认情况下,become
使用 sudo
,而不是 su
。因此,Ansible 提示您输入的密码是 您以 身份登录的用户的密码,而不是您要更改为的用户的密码。您可以将此 by setting become_method
更改为 su
.
如果您希望始终 运行 作为不同用户在该主机上执行所有任务,您可能想要设置 ansible_user
。有关详细信息,请参阅 the inventory documentation。
我知道这已在其他问题中讨论过,我尝试了各种选择,但似乎没有解决我的问题。
我开始学习 Ansible 并尝试 运行 剧本。我有一个角色,其中有任务。我想 运行 作为用户 john 在远程机器上的整个剧本。剧本以复制任务开始。一切正常,直到我开始使用 become 和 become_user。我尝试 运行通过在主要 playbbok 中指定来扮演用户 john 的角色:
---
- hosts: target-machine.com
roles:
- role: installSoftware
become: yes
become_user: john
然后在执行剧本时,我运行以下内容:
ansible-playbook -s major.yml -K
提示我输入
SUDO password:
我输入远程目标机器上用户john的密码。一旦启动 运行ning 剧本,它就挂在需要用户为 john 的任务上并抱怨:
fatal: [target.com]: FAILED! => {"failed": true, "msg": "Failed to get information on remote file (/home/john/software.zip): MODULE FAILURE"}
我还尝试了以下方法:
---
- hosts: target-machine.com
become: yes
become_user: john
roles:
- role: installSoftware
以便 运行 用户 john 的整个剧本。它再次询问我 SUDO 密码,然后在 5 分钟后抱怨:
fatal: [openam.ansible-target.com]: FAILED! => {"changed": false, "failed": true, "module_stderr": "", "module_stdout": "\r\nSorry, try again .\r\n[sudo via ansible, key=kchjtpjorgnvaksspqvgwzzkgtjnxsyv] password: \r\nsudo: 1 incorrect password attempt\r\n", "msg": "MODULE FAILURE"}
虽然我输入的密码是正确的。在 SO 上,建议增加我在 ansible.cfg 文件中所做的 SSH 超时:
[ssh_connection]
ssh_args = -o ServerAliveInterval=60 -o ControlMaster=auto -o ControlPersist=1m
我只想在目标机器上运行镜像:
su john
Enter Password:
john$
如有任何帮助,我们将不胜感激。谢谢。
默认情况下,become
使用 sudo
,而不是 su
。因此,Ansible 提示您输入的密码是 您以 身份登录的用户的密码,而不是您要更改为的用户的密码。您可以将此 by setting become_method
更改为 su
.
如果您希望始终 运行 作为不同用户在该主机上执行所有任务,您可能想要设置 ansible_user
。有关详细信息,请参阅 the inventory documentation。