什么用户将Ansible运行我的命令?

时间:2014-02-10 06:51:45

标签: node.js linux git ansible

背景

我的问题看起来很简单,但它变得越来越复杂。

基本上,我真的厌倦了手动维护我的服务器(在后台尖叫)我决定是时候找到一种方法让服务器管理员变得更加适合居住。就在那时我找到了Ansible。好吧?当然要为我想要自动化的所有东西制作bash脚本(更响亮的尖叫声)

有什么问题?

我在确定用户的Ansible playbook将运行某些东西时遇到了很多麻烦。我还需要能够指定某些用户运行的用户。以下是一些特定用例:

将repo克隆为另一个用户:

我的目的是从另一个用户运行我的node.js webapp,我们将其称为 bill (只能使用sudo来运行我创建的启动节点服务器的脚本,而不是root或我的用户可以使用sudo进行所有命令)。要做到这一点,我需要能够让Ansible的git模块克隆我的git repo为 bill 。我该怎么做?

知道Ansible将如何获得根:

据我了解,您可以通过定义'user'和playbook文件的开头来设置Ansible将连接到您正在维护的服务器的用户。这是我不明白的:如果我通过我的用户名 joe 告诉它,并要求它通过apt模块更新包,它将如何获得root权限? Sudo通常会提示我输入密码,我宁愿保持这种方式(为安全起见)。

最终请求

我已经搜索了Ansible文档,做了一些(我认为是彻底的)谷歌搜索,并且通常只是试图自己解决这个问题,但这些信息仍然无法实现。

我对Ansible非常新,虽然它大多是直接前进的,但如果我能够准确理解Ansible的运行方式,运行的用户以及我在何处/何处可以指定在不同的用户使用次。

提前谢谢你

3 个答案:

答案 0 :(得分:48)

您可能会发现阅读Ansible文档站点上的“主机和用户”部分很有用:

http://docs.ansible.com/playbooks_intro.html#hosts-and-users

总之,ansible将按照remote_user变量中指定的用户运行剧本中的所有命令(假设您之前使用的是ansible> = 1.4,user)。您也可以在每个任务的基础上指定此变量,以防任务需要以某个用户身份运行。

在任何Playbook /任务中使用sudo: true来使用sudo来运行它。如果您不想使用sudo_user,请使用root变量指定要sudo的用户。

在实践中,我发现最简单的方法是将我的Pl​​aybook作为具有sudo权限的deploy用户运行。我设置了SSH密钥,因此我可以在不使用密码的情况下以deploy的身份SSH到任何主机。这意味着我可以在不使用密码的情况下运行我的Playbook,如果需要,甚至可以使用sudo

我使用同一个用户来执行克隆git repos和启动/停止服务等操作。如果服务需要以较低权限的用户身份运行,我让init脚本负责处理。快速谷歌搜索node.js init.d脚本为CentOS揭示了这个:

https://gist.github.com/nariyu/1211413

以这种方式做事有助于保持简单,我喜欢。

希望有所帮助。

答案 1 :(得分:5)

我的2美分:

  1. Ansible使用您的本地用户(例如Mike)ssh到远程计算机。 (这要求迈克能够ssh到机器)
  2. 从那里可以根据需要更改为远程用户
  3. 如果需要,它也可以sudo,如果迈克被允许的话。如果未指定用户,则将通过本地计算机上的~/.ansible.cfg选择root。
  4. 如果你为remote_user提供了sudo param,那么就像no.3一样,它不会使用root用户。
  5. 您可以通过playbooks指定不同的情况和不同的用户或sudo。

    Playbook定义哪些角色将运行到属于所选库存的每台计算机。

    我建议您阅读Ansible best practices,了解有关如何设置基础架构的一些说明。

    哦,顺便说一句,因为你没有提到ansible使用的特定模块而你的问题与python无关,那么我没有找到任何使用python标签的问题。

答案 2 :(得分:4)

请注意,Ansible> = 1.9使用权限提升命令,因此您可以执行任务并创建资源,如果需要,可以作为辅助用户:

- name: Install software
  shell: "curl -s get.dangerous_software.install | sudo bash"
  become_user: root

http://docs.ansible.com/ansible/become.html#become-privilege-escalation