用户vs sudo vs sudo_user in ansible playbooks

我已经阅读了Ansible文档,但对于以下三个参数,我仍然对以下三个参数感到困惑:user,sudo,sudo_user。

我已经尝试了以下不同的参数组合的剧本:

  1. 用户:部署=>工作

  2. user:deploy和sudo:True => 挂在git任务上

  3. user:deploy,sudo:True和sudo_user:deploy => Works

sudo_user实际上做了什么? 何时以及为什么要使用这些组合?

- hosts: all user: deploy sudo: True sudo_user: deploy tasks: - name: Ensure code directory file: dest=/home/deploy/code state=directory - name: Deploy app git: repo=git@bitbucket.org:YAmikep/djangotutorial.git dest=/home/deploy/code 

谢谢

  • user是您ssh'ing的用户。 随着你的configuration,你ssh'ing deploy

  • sudo_user是你在sudo上sudo_user的用户sudo: yes被设置。

所以我觉得在你的情况下,如果你可以ssh作为deploysudosudo_user是必须的。

但是,如果您以root身份login,则需要设置sudo_user: deploysudo: yes

如果您要求“sudo”但不指定任何用户,Ansible将使用您的~/.ansible.cfgsudo_user )中的默认设置,并将默认为root

请注意, user已被弃用(因为它很混乱)。 您应该使用remote_user

编辑:案件#2可能会挂起,因为ssh确认问题:您可能有~deploy/.ssh/known_hosts build ~deploy/.ssh/known_hosts bitbucket.org主机密钥,但不是~root/.ssh/known_hosts

更新:从Ansible 2.x开始,使用becomebecome_user而不是已弃用的sudosudo_user 。 用法示例:

 - hosts: all user: deploy become: true become_user: deploy tasks: - name: Ensure code directory file: dest=/home/deploy/code state=directory - name: Deploy app git: repo=git@bitbucket.org:YAmikep/djangotutorial.git dest=/home/deploy/cod