有没有一种方法可以通过 ansible 提示远程主机输入 sudo 密码?

问题描述 投票:0回答:1

我尝试使用 ansible playbook 和 vars_prompt 提示远程主机输入 sudo 密码,但没有成功。我可以使用密钥进行 ssh 访问,但没有 sudo 权限。远程主机是我自己的macbook

尝试过 ssh-keys、带有选项 --ask-become-pass 的 ansible 剧本

ssh ansible sudo ssh-keys
1个回答
0
投票

Ansible 提供了一种提示用户输入远程主机的

sudo
(或
become
)密码的方法。

当您运行 Ansible playbook 并且需要在远程主机上提升权限时,您可以将

--ask-become-pass
-K
选项与
ansible-playbook
命令结合使用。这将在执行需要提升权限的任务之前提示您输入
sudo
密码。

具体操作方法如下:

  1. 使用

    -K
    --ask-become-pass
    选项
    :

    ansible-playbook your-playbook.yml -K
    

    ansible-playbook your-playbook.yml --ask-become-pass
    
  2. 在您的剧本中:如果您想在剧本中指定您将使用

    sudo
    (或 Ansible 术语中的
    become
    ),请确保包括:

    become: yes
    

    您还可以指定您想成为哪个用户:

    become_user: root
    

    注意:默认情况下,Ansible 使用

    sudo
    作为
    become
    方法。但是,您可以根据需要使用
    su
    指令将其更改为其他方法,例如
    pbrun
    become_method
    等。

  3. 在您的清单中:您还可以在清单文件中为特定主机或组指定

    become
    become_user
    指令:

    [your_host_or_group]
    your_hostname ansible_become=yes ansible_become_user=root
    

当 playbook 运行时,Ansible 将提示您输入远程主机的

sudo
密码,并且它将使用该密码来执行需要提升权限的任务。

请记住,您要连接的用户应在远程主机上拥有必要的权限,以便使用

sudo
提升其权限,并且应在远程主机上的
sudoers
文件中进行配置。

© www.soinside.com 2019 - 2024. All rights reserved.