用户vs sudo vs sudo_user in ansible playbooks
我已经阅读了Ansible文档,但对于以下三个参数,我仍然对以下三个参数感到困惑:user,sudo,sudo_user。
我已经尝试了以下不同的参数组合的剧本:
- 
用户:部署=>工作 
- 
user:deploy和sudo:True => 挂在git任务上 
- 
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'ingdeploy。
- 
sudo_user是你在sudo上sudo_user的用户sudo: yes被设置。
 所以我觉得在你的情况下,如果你可以ssh作为deploy , sudo和sudo_user是必须的。 
 但是,如果您以root身份login,则需要设置sudo_user: deploy和sudo: yes 。 
 如果您要求“sudo”但不指定任何用户,Ansible将使用您的~/.ansible.cfg ( sudo_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开始,使用become和become_user而不是已弃用的sudo和sudo_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