J'ai lu la documentation Ansible mais je suis encore un peu confus au sujet des trois paramètres suivants dans les playbooks ansible: utilisateur, Sudo, Sudo_user.
J'ai essayé les playbooks suivants avec différentes combinaisons de paramètres:
utilisateur: deploy => Works
utilisateur: deploy et Sudo: True => se bloque sur la tâche git
utilisateur: deploy, Sudo: True et Sudo_user: deploy => Works
Que fait réellement Sudo_user? Quand et pourquoi devrais-je utiliser chacune de ces combinaisons?
- 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: [email protected]:YAmikep/djangotutorial.git dest=/home/deploy/code
Merci
user
est l'utilisateur sur lequel vous êtes ssh. Avec votre config, vous devenez deploy
.
Sudo_user
est l’utilisateur que vous êtes en train de soudoyer sur l’hôte lorsque Sudo: yes
est réglé.
Donc, je pense que dans votre cas, aucun de Sudo
et Sudo_user
sont nécessaires si vous pouvez ssh en tant que deploy
.
Cependant, si vous utilisez ssh en tant que root, vous devez définir Sudo_user: deploy
et Sudo: yes
.
Si vous demandez 'Sudo' mais ne spécifiez aucun utilisateur, Ansible utilisera les paramètres par défaut définis dans votre ~/.ansible.cfg
(Sudo_user
), et sera par défaut à root
.
Notez que user
est obsolète (car cela prête à confusion). Tu devrais utiliser remote_user
au lieu.
EDIT: le cas n ° 2 s’arrête probablement à cause de problèmes de confirmation ssh: vous avez probablement la clé d’hôte bitbucket.org dans ~deploy/.ssh/known_hosts
mais PAS dans ~root/.ssh/known_hosts
UPDATE: À partir de Ansible 2.x, utilisez become
et become_user
au lieu des obsolètes Sudo
et Sudo_user
. Exemple d'utilisation:
- 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: [email protected]:YAmikep/djangotutorial.git dest=/home/deploy/cod