用户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