J'essaie d'exécuter une tâche Ansible spécifique en tant qu'utilisateur différent de celui qui exécute le playbook. Mon .yml
fichier 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 whoami
commande renvoie un utilisateur différent de celui que j'ai défini dans la tâche (précisément, renvoie l'utilisateur défini dans le hosts
fichier 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 ensuite j'obtiens l' Missing sudo password
erreur ' ', bien qu'il y ait une ligne dans le sudoers
fichier qui dit someusername ALL=(ALL) NOPASSWD:ALL
et émette des commandes avec sudo
sur la machine distante car someusername
ne me demande pas de mot de passe.
Alors, comment puis-je exécuter la tâche spécifique en tant qu'utilisateur différent qui n'est pas l'utilisateur défini dans le hosts
fichier ou root
lui-même?
la source
remote_user
défaut l'utilisateur actuel de votre machine locale - tout comme le fait ssh en fait.Missing sudo password
erreur ' '. Existe-t-il un moyen d'éviter de demander un mot de passe pour cet utilisateur spécifique?ubuntu ALL=(someusername) NOPASSWD: ALL
mais je dois penser à la sécurité derrière ça ... Y a-t-il une autre façon que d'ajouter cette ligne aux sudoers?Notez qu'après Ansible 1.9, le
sudo
libellé a été remplacé parbecome
, ainsidevient (jeu de mots voulu):
Voir plus de détails ici: /programming//a/22749788/402727
la source