我已经阅读了Ansible文档,但我仍然对ansible playbooks中的以下三个参数感到困惑:user,sudo,sudo_user.
我尝试了以下不同组合参数的playbooks:
user:deploy => Works
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
Run Code Online (Sandbox Code Playgroud)
谢谢
leu*_*cos 71
user是你正在使用的用户.使用你的配置,你就像ssh一样deploy.
sudo_user是设置时你在主机上sudo的用户sudo: yes.
所以我觉得在你的情况没有一个sudo和sudo_user有必要的,如果你可以用ssh deploy.
但是,如果以root身份ssh,则需要设置
sudo_user: deploy和sudo: yes.
如果您要求'sudo'但未指定任何用户,Ansible将使用您的~/.ansible.cfg(sudo_user)默认设置,默认为root.
请注意,user不推荐使用(因为它令人困惑).你应该使用remote_user.
编辑:案例#2可能挂起,因为SSH的问题确认:你可能有bitbucket.org主机密钥的~deploy/.ssh/known_hosts,但不是在~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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60434 次 |
| 最近记录: |