2013-11-24 16 views
55

Ho letto la documentazione Ansible ma sono ancora un po 'confuso circa i seguenti tre parametri in Playbook ansible: facilità d'uso, sudo, SUDO_USER.utente vs sudo vs SUDO_USER nel Playbook ansible

Ho provato i seguenti Playbook con diverse combinazioni di parametri:

  1. utente: distribuire => Opere

  2. utente: implementare e sudo: True =>si blocca sul compito git

  3. utente: implementare, sudo: vero e SUDO_USER: distribuire => Opere

Cosa fa realmente sudo_user? Quando e perché dovrei usare ciascuna di queste combinazioni?

- 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 

Grazie

risposta

62
  • user è l'utente che stai ssh'ing come. Con la tua configurazione, stai sshing come deploy.

  • sudo_user è l'utente che si sta sudo'ing sull'host quando sudo: yes è impostato.

Quindi penso nel tuo caso nessuna delle sudo e sudo_user sono necessari se si può SSH come deploy.

Tuttavia, se ssh come root, è necessario impostare sudo_user: deploy e sudo: yes.

Se chiedete 'sudo', ma non si specifica qualsiasi utente, Ansible utilizzerà il set di default nel vostro ~/.ansible.cfg (sudo_user), e si imposterà a root.

noti che user è deprecato (perché è fonte di confusione). Dovresti usare invece remote_user.

EDIT: Caso # 2 probabilmente si blocca a causa di problemi di conferma ssh: probabilmente hai chiave host bitbucket.org in ~deploy/.ssh/known_hosts ma NON in ~root/.ssh/known_hosts

UPDATE: Come di Ansible 2.x, utilizzare become e become_user invece del obsoleta sudo e sudo_user. Esempio di utilizzo:

- 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 
+0

Che cosa succede se si dispone di 'sudo: affermativa e' SUDO_USER: root' in un playbook che ha un ruolo, sono i compiti in questo ruolo eseguito come root? In tal caso: quando un'attività in un ruolo utilizza 'remove_user', passerà a questo utente, o lo farà in questo caso ssh alla macchina con questo utente? – rednaw

+0

@rednaw, hai provato ad aggiungere alcune istruzioni "whoami" per verificare quale utente viene utilizzato dove? qual è il tuo caso d'uso? – AnneTheAgile

+0

@rednaw: sì, come root (e si suppone che ssh sia un altro utente). 'remote_user' non cambierà, dato che è l'utente che stai facendo ssh'ing as. – leucos

Problemi correlati