我试图通过Ansible为一个程序运行shell脚本安装程序。
该脚本做了一些假设,即获取非sudo命令的登录用户,并在需要时通过sudo
获取root
用户。
然而,在Ansible中,我只能让相同的脚本做两件事之一:
1.在没有become: true
的情况下运行->**结果:**脚本的sudo
部分失败(“需要终端来读取密码;要么使用-S选项从标准输入中读取,要么配置一个askpass助手”)
1.使用become: true
->**结果:**脚本的非sudo部分中断,当我实际需要它们使用登录用户时,使用root
作为用户
有没有什么方法可以让Ansible的行为与典型的shell类似(当脚本调用sudo
时,只在需要时才变成root
)?
1条答案
按热度按时间ldioqlga1#
正如在评论中已经提到的,这与Ansible本身无关,而是与Managing
sudo
access有关。通过配置sudoers
解决这个问题非常简单。假设用户
ansible_user
是本地组wheel
的成员,或者在其中一个文件中有自己的sudoers
条目/etc/sudoers
或**
/etc/sudoers.d/ansible_user
**一个最小的例子剧本
执行通过
将导致输出
在所示的示例中,用户
ansible_user
根本不存在于本地,因为系统已连接并加入到域,所以/etc/passwd
、/etc/group
或/etc/shadow
中没有条目。