我已经阅读了Ansible文档,但我仍然对ansible playbooks中的以下三个参数感到困惑:user,sudo,sudo_user。
我尝试了以下不同组合参数的剧本:
user:deploy =>作品
user:deploy and sudo:True => 挂起git任务
user:deploy,sudo:True和sudo_user:deploy =>作品
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
由于
答案 0 :(得分:70)
user
是您正在使用的用户。使用您的配置,您可以使用deploy
。
sudo_user
是您在设置sudo: yes
时在主机上投放的用户。
所以我认为在你的情况下,如果你可以作为sudo
ssh,则sudo_user
和deploy
都不是必需的。
但是,如果以root身份ssh,则需要设置
sudo_user: deploy
和sudo: yes
。
如果您要求'sudo'但未指定任何用户,Ansible将使用您~/.ansible.cfg
(sudo_user
)中的默认设置,默认为root
。< / p>
请注意,user
已弃用(因为它令人困惑)。您应该使用remote_user
代替。
~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