Exécuter la tâche Ansible en tant qu'user spécifique

J'essaie d'exécuter une tâche Ansible spécifique comme un user différent de celui qui exécute le playbook. Mon file .yml ressemble à ceci:

 --- - hosts: staging_servers tasks: - name: check user remote_user: someusername shell: whoami 

L'exécution de cette tâche me montre que la command whoami renvoie un user différent de celui que j'ai défini dans la tâche (précisément, renvoie l'user qui est défini dans le file d' hosts appelé ubuntu ).

J'ai également essayé de définir la tâche comme ceci:

 --- - hosts: staging_servers tasks: - name: check user sudo: yes sudo_user: someusername shell: whoami 

mais alors je reçois une erreur "Erreur de Missing sudo password de Missing sudo password ", bien qu'il existe une ligne dans le file sudoers qui indique someusername ALL=(ALL) NOPASSWD:ALL et émet des commands avec sudo sur machine à distance car someusername ne me request pas un mot de passe.

Alors, comment puis-je exécuter la tâche spécifique en tant qu'user différent qui n'est pas l'user défini dans le file hosts ou l' root lui-même?

2 Solutions collect form web for “Exécuter la tâche Ansible en tant qu'user spécifique”

Vous méprisez les deux parameters ici:

  • remote_user est un paramètre Ansible qui contrôle l'user SSH. Ansible utilise pour se connecter: ssh ${REMOTE_USER}@remotehost

  • someusername ALL = (ALL) NOPASSWD: ALL est une configuration sudo qui permet à l'user someusername d'exécuter toutes les commands dans n'importe quel hôte sans mot de passe. Cela ne permet pas à quiconque d'émettre des commands comme nom d' someusername .

Idéalement, vous vous connectez directement en tant que bon user et c'est ce que remote_user traite. Mais généralement, vous ne pouvez vous connecter en tant qu'user administratif (par exemple, ubuntu ) et avoir à sudo des commands comme un autre user (disons scrapy ). Ensuite, vous devez laisser remote_user à l'user qui se connecte et append les propriétés Ansible suivantes au travail:

 - name: log in as ubuntu and do something as scrapy remote_user: ubuntu sudo: true sudo_user: scrapy shell: do-something.sh 

Notez qu'après Ansible 1.9, le mot "sudo" a été remplacé par "devenir", donc

 sudo: yes sudo_user: some_user 

devient (jeu de mots):

 become: yes become_user: some_user 

Voir plus de détails ici: https://stackoverflow.com/a/22749788/402727

  • Comment générer des files sudoers personnalisés dans les marionnettes en fonction de l'environnement auquel ils sont déployés?
  • Debian 8; Exécutez sudo dans une session d'écran à l'invite boot without password?
  • Exécuter la tâche de construction dans Hudson avec privilèges racine
  • Passer un problème de variable - Bash
  • Pourquoi le mot de passe entre-t-il dans une command de sudo par pipeline?
  • Accès à SSH_AUTH_SOCK d'un autre user non root
  • chown à un user que je peux sudo à
  • Pourquoi ne puis-je pas exécuter sudo -g?
  • Est-ce que mon user déployé doit appartenir à la list sudoer pour Upstart pour démarrer GUnicorn?
  • Le groupe Sudo par défaut pour Debian Linux?
  • Vérifiez les droits d'administrateur dans le script Python
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.