Je voudrais utiliser ansible pour gérer un groupe de serveurs existants. J'ai créé un ansible_hosts
et testé avec succès (avec le fichier -K
) avec des commandes qui ne ciblent qu'un seul hôte
ansible -i ansible_hosts host1 --sudo -K # + commands ...
Mon problème maintenant est que les mots de passe des utilisateurs sur chaque hôte sont différents, mais je ne trouve pas de moyen de gérer cela dans Ansible.
Utilisation de -K
Je ne suis invité à entrer qu'un seul mot de passe sudo au départ, qui semble ensuite être utilisé pour tous les hôtes suivants sans demande :
host1 | ...
host2 | FAILED => Incorrect sudo password
host3 | FAILED => Incorrect sudo password
host4 | FAILED => Incorrect sudo password
host5 | FAILED => Incorrect sudo password
Recherche jusqu'à présent :
-
a Question StackOverflow avec une réponse incorrecte ("utiliser
-K
") et une réponse de l'auteur disant "Found out I needed passwordless sudo" (J'ai découvert que j'avais besoin de sudo sans mot de passe). -
les documents Ansible qui disent "L'utilisation de sudo sans mot de passe rend les choses plus faciles à automatiser, mais ce n'est pas nécessaire ." (c'est moi qui souligne)
-
cette question de sécurité sur StackExchange qui considère que
NOPASSWD
est nécessaire -
article "Provisionnement évolutif et compréhensible..." qui dit :
"L'exécution de sudo peut nécessiter la saisie d'un mot de passe, ce qui est un moyen sûr de bloquer Ansible pour toujours. Une solution simple est d'exécuter visudo sur l'hôte cible, et de s'assurer que l'utilisateur qu'Ansible utilisera pour se connecter n'a pas à taper de mot de passe".
-
article "Basic Ansible Playbooks" qui dit
"Ansible pourrait se connecter au serveur cible en tant que root et éviter la nécessité de sudo, ou laisser l'utilisateur ansible avoir sudo sans mot de passe, mais la pensée de faire l'un ou l'autre fait que ma rate menace de sauter dans mon gosier et de bloquer ma trachée, alors je ne le fais pas"
C'est exactement ce que je pense, mais alors comment faire pour aller au-delà d'un seul serveur ?
-
problème ansible #1227 , "Ansible should ask for sudo password for all users in a playbook", qui a été clôturée il y a un an par mpdehaan avec le commentaire "Haven't seen much demand for this, I think most people are sudoing from only one user account or using keys most of the time".
Alors... comment les gens utilisent-ils Ansible dans des situations comme celles-ci ? Configuration de NOPASSWD
en /etc/sudoers
la réutilisation du mot de passe sur plusieurs hôtes ou l'activation de la connexion SSH de l'utilisateur root semblent être des réductions plutôt drastiques de la sécurité.
2 votes
Y a-t-il une raison pour laquelle vous n'utilisez pas de clés SSH ?
28 votes
J'utilise déjà des clés SSH ; elles n'affectent pas la sécurité de l'utilisateur.
sudo
(qui devrait toujours nécessiter un mot de passe).1 votes
Ce n'est peut-être pas exactement ce que vous recherchez, mais sur les boîtes Ubuntu, j'utilise encore des clés, c'est-à-dire que je place ma clé publique dans /root/authorized_keys pour me connecter directement en tant que root. L'inconvénient évident est d'autoriser les connexions de root par ssh... Je refuse également les connexions par mot de passe via ssh et j'exécute fail2ban pour plus de sécurité.
0 votes
@senorsmile merci, mais non ce n'est pas ce que je recherche. L'article "Basic Ansible Playbooks" que j'ai cité plus haut mentionne la connexion root, et je suis d'accord avec l'auteur pour dire que ce n'est pas assez sécurisé.
1 votes
Dans le fichier hosts, vous devriez pouvoir spécifier ansible_ssh_user= et ansible_ssh_password= par hôte. Ceux-ci seront utilisés lors de l'utilisation de ansible-playbook (et non de ansible en ligne de commande).
32 votes
@senorsmile merci pour la réponse ! Pourriez-vous la transformer en réponse afin que je puisse vous décoter pour ne pas avoir lu la question ?
4 votes
c'est-à-dire le site
ansible_ssh_password
ne s'applique qu'au mot de passe SSH (l'indice est dans le nom...) et j'utilise déjà une connexion SSH basée sur une clé.0 votes
Je suis en retard pour la fête, je l'admets. @supervacuo comment utilisez-vous les clés ssh exactement ? J'ai un client, où j'ai configuré ansible pour se connecter en tant qu'utilisateur cible en utilisant des clés ssh. Je n'ai jamais eu besoin de sudo. J'utilise soit ~/.ssh/config, soit l'inventaire d'ansible pour déterminer la clé privée à utiliser pour une cible. Oui, j'avais une réserve de clés privées, pas super, mais c'est ce qui était possible.
1 votes
@Jepper J'utilise des clés SSH pour me connecter à des serveurs en tant qu'utilisateur non privilégié et je veux ensuite
sudo
pour exécuter des modules ansible spécifiques qui le nécessitent. Il semble que vous vous en tenez aux modules qui ne le nécessitent pas, ou que vous vous connectez en tant queroot
-- ni l'un ni l'autre ne semble idéal. Mais merci quand même !