【发布时间】:2014-03-07 09:40:18
【问题描述】:
背景
我的问题看起来很简单,但很快就会变得复杂起来。
基本上,我真的厌倦了手动维护我的服务器(背景中的尖叫声),我决定是时候找到一种方法让服务器管理员的工作变得更适合生活了。就在那时我发现了 Ansible。很棒吧?确实比为我想要自动化的所有内容编写 bash 脚本(大声尖叫)。
有什么问题?
我很难确定我的 Ansible playbook 将以什么用户身份运行某些事情。我还需要能够指定某些任务将以什么用户身份运行。以下是一些具体的用例:
以其他用户身份克隆 repo:
我这样做的目的是从另一个用户那里运行我的 node.js webapp,我们称之为 bill(只能使用 sudo 来运行我制作的启动节点服务器的脚本,而不是可以对所有命令使用 sudo 的 root 或我的用户)。为此,我需要能够让 Ansible 的 git 模块将我的 git 存储库克隆为 bill。我该怎么做?
了解 Ansible 将如何获得根:
据我了解,您可以通过定义“用户”和 playbook 文件的开头来设置 Ansible 将连接到您维护的服务器的用户。这是我不明白的:如果我告诉它通过我的用户名 joe 连接,并要求它通过 apt 模块更新包,它将如何获得 root 权限? Sudo 通常会提示我输入密码,我更愿意保持这种方式(出于安全考虑)。
最终请求
我搜索了 Ansible 文档,做了一些(我认为是彻底的)谷歌搜索,通常只是试图自己弄清楚,但这些信息仍然让我难以理解。
我对 Ansible 非常陌生,虽然它大多是直截了当的,但如果我能准确了解 Ansible 的运行方式、它在哪些用户上运行,以及我可以如何/在何处指定在不同情况下使用的用户,我会受益匪浅次。
提前谢谢你
【问题讨论】:
-
您可能已经注意到,我用
python标记了这个,这可能不是很清楚。我这样做的原因是因为所有 Ansible 模块中有很大一部分是用 python 编写的。