web-dev-qa-db-fra.com

utilisateur vs Sudo vs Sudo_user dans les playbooks ansible

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:

  1. utilisateur: deploy => Works

  2. utilisateur: deploy et Sudo: True => se bloque sur la tâche git

  3. 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

60
Michael
  • 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
71
leucos