我尝试使用 ansible playbook 和 vars_prompt 提示远程主机输入 sudo 密码,但没有成功。我可以使用密钥进行 ssh 访问,但没有 sudo 权限。远程主机是我自己的macbook
尝试过 ssh-keys、带有选项 --ask-become-pass 的 ansible 剧本
Ansible 提供了一种提示用户输入远程主机的
sudo
(或 become
)密码的方法。
当您运行 Ansible playbook 并且需要在远程主机上提升权限时,您可以将
--ask-become-pass
或 -K
选项与 ansible-playbook
命令结合使用。这将在执行需要提升权限的任务之前提示您输入 sudo
密码。
具体操作方法如下:
使用
-K
或 --ask-become-pass
选项:
ansible-playbook your-playbook.yml -K
或
ansible-playbook your-playbook.yml --ask-become-pass
在您的剧本中:如果您想在剧本中指定您将使用
sudo
(或 Ansible 术语中的 become
),请确保包括:
become: yes
您还可以指定您想成为哪个用户:
become_user: root
注意:默认情况下,Ansible 使用
sudo
作为 become
方法。但是,您可以根据需要使用 su
指令将其更改为其他方法,例如 pbrun
、become_method
等。
在您的清单中:您还可以在清单文件中为特定主机或组指定
become
和 become_user
指令:
[your_host_or_group]
your_hostname ansible_become=yes ansible_become_user=root
当 playbook 运行时,Ansible 将提示您输入远程主机的
sudo
密码,并且它将使用该密码来执行需要提升权限的任务。
请记住,您要连接的用户应在远程主机上拥有必要的权限,以便使用
sudo
提升其权限,并且应在远程主机上的 sudoers
文件中进行配置。