代码之家  ›  专栏  ›  技术社区  ›  Jaeger

Ansible一直想成为根

  •  0
  • Jaeger  · 技术社区  · 5 年前

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

    程序如下:

    • 我跑 su - 扎根

    所以,我写了我的剧本如下:

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

    “sudo密码不正确”

    然后我更改了我的任务,这样我就不会变成sudo,而是将文件复制到osadmin无法访问的某个位置,而只是将文件复制到 /home/osadmin . 所以,从理论上讲,只要一个简单的复制品就不需要变成sudo。 现在的问题是,它不仅一直说“错误的sudo密码”,但如果我删除它,Ansible要求它。

    然后我决定运行命令并添加 -vvv

    为用户osadmin建立SSH连接

    S S H: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主机地址'/bin/sh-C''sudo-H-S-n-u

    根目录/bin/sh-c'''''''''''''''''''echo成功ewujwywrqhcqfdrkaglouhmuiefwlj;/usr/bin/python/home/osadmin/.ansible/tmp/ansible-tmp-1550076004.1888492-11284794413477/AnsiballZôsetup.py''''''''''''''''''''''''''''''''''sleep 0'''''''''

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

    如你所见,它以某种方式使用根,而我从未告诉过他。

    提前谢谢你

    0 回复  |  直到 5 年前
        1
  •  1
  •   George Shuklin    5 年前

    “su”和“sudo”是有区别的。如果您有“su”访问权限,这意味着您可以作为根用户登录(可能不是,但看起来是这样)。使用 ansible_ssh_user=root ansible_password=password2 .

    如果这不起作用,请尝试在服务器上配置sudo。你应该能跑 sudo whoami root . 在那之后你的代码应该运行。

    还有一件事:你不正确地使用了“复制”模块。它使用 src 作为路径打开 地方的 机器(运行ansible的地方),以及 dst