我知道其他问题已经讨论过,我尝试了各种选择,但似乎没有解决我的问题。
我开始学习Ansible并尝试运行一本剧本。我有一个角色,里面有任务。我想在远程机器上以用户john的身份运行整个剧本。 Playbook以复制任务开始。在我开始使用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的密码。一旦它开始运行playbook,它就会挂起需要用户作为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$
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
默认情况下,string data = "2 5 8 7 6 7";
var numbers = data.Split(' ')
.Select(int.Parse).ToList();
// Or if you might have more spaces:
string data = "2 5 8 7 6 7";
var numbers = data.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries)
.Select(int.Parse).ToList();
使用become
,而非sudo
。因此,密码Ansible会提示您输入您以身份登录的用户的密码,而不是您要更改的用户的密码。您可以将此by setting su
更改为become_method
。
如果您希望始终以不同的用户身份在该主机上运行所有任务,则可能需要设置su
。有关详细信息,请参阅the inventory documentation。