Ansible一直想成为根

Ansible一直想成为根,ansible,Ansible,我是Ansible的初学者,需要在远程服务器上运行一些基本任务 程序如下: --- - 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/o

我是Ansible的初学者,需要在远程服务器上运行一些基本任务

程序如下:

---
- 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

  • 我以某个用户的身份登录(osadmin)
  • 我运行
    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/hosts会返回以下信息:

“sudo密码不正确”

然后,我更改了任务,这样我就可以在
/home/osadmin
上复制文件,而不是变成sudo并在我的osadmin无法访问的地方复制文件。因此,从理论上讲,没有必要为了一个简单的副本而成为sudo。 现在的问题是,它不仅不断地说“错误的sudo密码”,而且如果我删除它,Ansible会要求它

然后我决定运行该命令,并在最后添加了
-vvv
,它向我展示了以下内容:

为用户osadmin建立SSH连接

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''S sudo-H-S-n-u

root/bin/sh-c''''''''''''''''''''''''''''echo成为成功的ewujwywrqhcqfdrkaglvrouhmuiefwlj/usr/bin/python/home/osadmin/.ansible/tmp/ansible-tmp-1550076004.1888492-11284794413477/AnsiballZ_setup.py''''''''''''和睡眠0'''''

(1,b'sudo:需要密码,\r\n',b'到主机地址的共享连接已关闭。\r\n')

正如你所见,它不知怎么地使用了root,而我从来没有告诉过他

有人知道为什么Ansible一直试图成为sudo吗?我如何才能禁用它


提前谢谢你

su和sudo是有区别的。如果您具有“su”访问权限,这意味着您可以以root用户身份登录(可能不是,但看起来像)。使用
ansible\u ssh\u user=root
ansible\u password=password2

如果这不起作用,请尝试在服务器上配置sudo。您应该能够运行
sudowhoami
并获得答案
root
。之后,您的代码应该运行


还有一件事:您错误地使用了“复制”模块。它使用
src
作为本地机器上的路径(ansible运行的地方),使用
dst
作为远程机器上的路径。

您是否尝试过
been:false
?检查资源清册和playbook目录中的组变量和主机变量我最终通过配置我的用户以使其具有sudo权限来结束。我不再有问题了,谢谢:)