我是Ansible的初学者,我需要在远程服务器上运行一些基本任务。
过程如下:
su -
成为root 所以,我写我的剧本如下:
---
- hosts: qualif
vars:
- ansible_user: osadmin
- ansible_password: H1g2.D6#
tasks:
- name: Copy stuff from here to over there
copy:
src: /home/osadmin/file.txt
dest: /home/osadmin/file-changed.txt
owner: osadmin
group: osadmin
mode: 0777
此外,我在vars / main.yml中有以下内容:
ansible_user: osadmin
ansible_password: password1
ansible_become_password: password2
[ some other values ]
但是,在运行任务时,Ansible /主机会向我返回以下内容:
“错误的sudo密码”
然后,我更改了任务,以使不再成为sudo并在osadmin无法访问的某个位置复制文件,而只是将文件复制到/home/osadmin
上。因此,从理论上讲,无需为简单的复制就变得sudo。
现在的问题是,不仅它会一直说“错误的sudo密码”,而且如果我删除它,Ansible也会要求它。
然后我决定运行命令并在末尾添加-vvv
,它向我显示了以下内容:
为用户建立SSH连接:osadmin
SSH:EXEC sshpass -d10 ssh -C -o ControlMaster = auto -o ControlPersist = 60s -o User = osadmin -o ConnectTimeout = 10 -o ControlPath = / home / osadmin / .ansible / cp / b9489e2193 -tt HOST -ADDRESS'/ bin / sh -c'“'”'sudo -H -S -n -u
root / bin / sh -c'“'”'“”“”“”“”“”“回显BECOME-SUCCESS-ewujwywrqhcqfdrkaglvrouhmuiefwlj; / usr / bin / python /home/osadmin/.ansible/tmp/ansible-tmp-1550076004.1888492-11284794413477/AnsiballZ_setup.py'“'”'“”“”“”“”“” && sleep 0'“' “”
(1,b'sudo:需要密码\ r \ n',b'与主机地址的共享连接已关闭。\ r \ n')
如您所见,它以某种方式使用root,而我从未告诉过他。
有人知道为什么Ansible会继续尝试做sudo吗,我该如何禁用它?
提前谢谢
答案 0 :(得分:1)
“ su”和“ sudo”之间有区别。如果您具有“ su”访问权限,则意味着您可以以root用户身份登录(可能不是,但看起来像)。使用ansible_ssh_user=root
,ansible_password=password2
。
如果这不起作用,请尝试在服务器上配置sudo。您应该能够运行sudo whoami
并获得答案root
。之后,您的代码应运行。
另一件事:您使用的“复制”模块不正确。它使用src
作为本地计算机(运行ansible的计算机)上的路径,以及dst
作为远程计算机的路径。