2017-06-28 6 views
0

Mon problème est:Ansible hop racine sudo

Comme il est généralement considéré comme une mauvaise pratique d'utiliser l'utilisateur root pour se connecter à une machine distante via SSH, j'utiliser un compte non privilégié spécifique pour se connecter aux serveurs.

Mais pour moi c'est aussi une mauvaise habitude de faire toutes les actions en tant qu'utilisateur root. Je préfère utiliser les utilisateurs applicatifs chaque fois que je peux. Avec ansible, je peux devenir root et exécuter des commandes privilégiées avec get directive. Mais existe-t-il un moyen de devenir un utilisateur avec une escalade de privilèges root 'hop'?

-à-dire, ssh avec ssh-user => devenir root => devenir tout autre utilisateur

Les autres moyens que je vois ne me satisfait pas complètement:

  • devenir root, utilisez le module cmd et utiliser su (qui affiche le message suivant dépréciée [AVERTISSEMENT]: Pensez à utiliser 'devenir', 'become_method' et 'become_user' plutôt que de courir su):

    cmd: su -c "my_command" app_user become: True become_user: root

  • ajouter sudoers la permission de mon ssh utilisateur pour devenir directement tous les utilisateurs

    applicatifs

Suis-je manque une façon de le faire plus nettement?

Répondre

0

Vous pouvez lancer votre PlayBook avec l'option --ask-se-passe, comme par exemple:

ansible-PlayBook -i ../inventories/production.ini service_install.yml --ask -Devenir-pass

Et dans votre inventaire, est appelée ici production.ini, ajoutez votre utilisateur d'information pour le groupe ansible:

[group1] 
182.26.5.159 
182.26.5.160 
182.26.5.161 
... 
[group1:vars] 
ansible_connection=ssh 
ansible_user=appuser         # insert your app user here 
ansible_ssh_pass=passuser        # insert your pass here 

Vous pouvez ensuite Crypter votre fichier d'inventaire pour garder votre mot de passe secret, et donner le mot de passe de décryptage à vos OPs/SYSADMINS équipes

Crypter ansible voûte ../inventories/production.in

La commande finale sera maintenu:

ansible-PlayBook -i ../inventories/production.ini service_install.YML --ask-se-passe---ask voûte passe

ensuite sur votre jeu, vous aurez juste besoin à l'utilisateur "devenir: oui" possibilité d'appeler votre tâche:

cmd: "my_command" app_user 
become: yes 
+0

Merci pour les détails, en fait, qui est à peu près ce que j'utilise (i connecter avec des clés ssh) mais comme je dis l'utilisation de su dans le module de commande est déconseillé que pourquoi je cherche une autre solution. –

+0

OK, je suppose que c'est la bonne solution, mais cela implique de donner des droits d'utilisateur ssh à sudo dans tous les utilisateurs. Je suppose que ça n'a pas vraiment d'importance ... –

0

Je viens d'éditer ma réponse, la tâche est corrigée. Normalement cela devrait fonctionner sans "su" sur commande.

cmd: « ma_commande » app_user deviennent: oui