我必须管理大量主机,其中只有一个用户能够从 SSH 访问(我们称他为 foo),然后必须以 root 身份登录才能执行特权命令。
Foo 用户没有任何 sudo 权限,因此我被迫以 root 身份登录才能执行特权命令。我实际上正在使用 expect 脚本来完成这项工作(以 foo 身份通过 ssh 登录,通过 su 以 root 身份登录),并且我想切换到 Ansible。我知道我可以创建一个新用户并授予他 sudo 权限,或者基本上将 sudo 权限授予 foo,但是是否可以使用 Ansible 执行与使用 expect 相同的操作?
我想以 foo 身份进行 ssh 连接,然后以 root 身份执行 playbook 或任何类型的临时命令。我在 Ansible 文档中找不到有关此内容的任何信息,因此我在这里询问是否有人已经进行过此类询问。
答案1
通过ansible
,您可以使用sudo
或su
:
- hosts: example.com
gather_facts: False
su: yes
su_user: root
tasks:
- shell: whoami
您也可以从命令行执行此操作:
ansible-playbook --su --su-user=root --ask-su-pass playbook.yml
此功能自此请求请求,目前存在于版本 1.6.6 中。