【发布时间】:2016-07-22 09:10:05
【问题描述】:
我正在使用 ansible 2.0.2.0 从任何计算机更新我的静态网站。我的剧本只在本地主机上运行,基本上有两个部分:
- 特权部分:确保安装包,基本上是
apt任务与become: true - 非特权部分:填写模板,缩小并与网络托管服务同步,基本上是
command任务,没有become。
我希望将这两个部分放在同一个剧本中,这样我在切换计算机时就不必担心依赖关系。理想情况下,我想检查 apt 软件包是否已安装,并且仅在需要安装时才要求输入密码。
到目前为止,我已经探索过其他不太令人满意的替代方案,它们的缺点突出显示如下:
-
sudo ansible-playbook ...:以root运行非特权部分,不需要时询问sudo密码; -
ansible-playbook --ask-become-pass ...: 总是询问 sudo 密码,即使不需要安装新的包; -
ansible-playbook ...:以sudo: a password is required失败。
有什么方法可以将特权部分和非特权部分保留在同一个剧本中,而无需输入 sudo 密码,也无需为非特权部分提供不必要的特权?
【问题讨论】:
-
我认为为了让 ansible 使用 apt 检查是否满足包依赖关系,它需要 root 权限 - 所以即使不需要安装新包,您也需要传递密码。
-
同样的问题,还没解决
-
猜你将不得不为此使用 shell 模块而不是包模块。有点骇人听闻。更好的方法是将这些剧本分开
标签: ansible