Comment utiliser la connexion basée sur le mot de passe SSH dans ANSIBLE en utilisant SSHPASS

Comment utiliser la connexion basée sur le mot de passe SSH dans ANSIBLE en utilisant SSHPASS
Dans cet article, je vais vous montrer comment exécuter ANSIBLE Playbooks à l'aide d'une connexion basée sur le mot de passe SSH avec SSHPASS.

Conditions préalables

Si vous souhaitez essayer les exemples discutés dans cet article,

1) Vous devez faire installer un anible sur votre ordinateur.
2) Vous devez avoir au moins un hôte Ubuntu / Debian auquel vous pouvez vous connecter à partir d'Anible.

Il existe de nombreux articles sur Linuxhint dédiés à l'installation anable. Vous pouvez les vérifier si nécessaire pour installer les programmes nécessaires sur votre système.

Vous aurez également besoin d'avoir sshpass Installé sur votre ordinateur, où vous devriez être installé anible. Je vais vous montrer comment installer sshpass Sur Ubuntu / Debian et Centos / Rhel dans cet article. Ne vous inquiétez pas si vous n'avez pas ces programmes déjà installés sur votre système.

Installation de sshpass sur Ubuntu / Debian

Le programme sshpass est disponible dans le référentiel officiel de package d'Ubuntu / Debian. Vous pouvez facilement installer ce programme sur votre ordinateur.

Tout d'abord, mettez à jour le cache du référentiel de package APT via la commande suivante:

$ sudo apt mise à jour

Maintenant, installez sshpass via la commande suivante:

$ sudo apt install sshpass -y

SSHPASS devrait maintenant être installé.

Installation de sshpass sur Centos 8 / Rhel 8

sshpass est disponible dans le référentiel EPEL de CentOS 8 / RHEL 8. Vous devez avoir le référentiel EPEL activé pour installer SSHPASS.

Tout d'abord, mettez à jour le cache du référentiel de package DNF via la commande suivante:

$ sudo dnf makecache

Ensuite, installez le package du référentiel EPEL via la commande suivante:

$ sudo dnf installer ePEL-Release -y

Le package du référentiel EPEL doit désormais être installé et le référentiel EPEL doit être activé.

Mettez à jour le cache du référentiel du package DNF à nouveau, comme suit:

$ sudo dnf makecache

Installer sshpass via la commande suivante:

$ sudo dnf installer sshpass -y

sshpass devrait être installé.

Configuration d'un répertoire de projet ANSIBLE

Avant de progresser, ce serait une bonne idée de créer une structure de répertoire de projet, juste pour garder les choses un peu organisées.

Pour créer un répertoire de projet sshpass / et tous les sous-répertoires requis (dans votre répertoire de travail actuel), exécutez la commande suivante:

$ mkdir -pv sshpass / fichiers, playbooks

Accédez au répertoire du projet, comme suit:

$ cd sshpass /

Créer un hôtes Fichier d'inventaire, comme suit:

$ hôtes nano

Ajoutez votre nom IP ou DNS hôte dans le fichier d'inventaire.

Une fois que vous avez terminé cette étape, enregistrez le fichier en appuyant sur + X, suivie par Y et .

Créez un fichier de configuration anible dans le répertoire du projet, comme suit:

$ nano anible.CFG

Maintenant, saisissez les lignes suivantes dans le anable.CFG déposer.

Une fois que vous avez terminé cette étape, enregistrez le fichier en appuyant sur + X, suivie par Y et .

Tester la connexion SSH basée sur les mots de passe dans ANSIBLE

Ensuite, essayez de cingler les hôtes dans le fichier d'inventaire, comme suit:

$ anible tout -u shovon -m ping

NOTE: Ici le -u L'option est utilisée pour indiquer à Ansible quel utilisateur se connecte comme. Dans ce cas, ce sera l'utilisateur bousculade. Remplacez ce nom d'utilisateur par le vôtre à partir de maintenant, tout au long de la démo.

Comme vous pouvez le voir, je ne suis pas en mesure de me connecter à l'hôte et d'exécuter toutes les commandes.

Pour forcer ANSIBLE à demander le mot de passe de l'utilisateur, exécutez le anable commande avec le -pass Argument, comme suit:

$ anible all -u shovon --ask-pass -m ping

Comme vous pouvez le voir, ANSIBLE demande le mot de passe SSH de l'utilisateur. Maintenant, saisissez votre mot de passe SSH (mot de passe de connexion de l'utilisateur) et appuyez sur .

L'hôte peut être cinglé, comme suit:

Connexion SSH basée sur le mot de passe pour les manuels de jeu

Vous pouvez utiliser une connexion SSH basée sur un mot de passe lorsque vous exécutez des livres de jeu ANSIBL. Laissez-nous regarder un exemple.

Tout d'abord, créez un nouveau manuel askpass1.yaml dans le Playbooks / Répertoire, comme suit:

$ Nano Playbooks / Askpass1.yaml

Tapez les lignes suivantes dans le askpass1.yaml Fichier Playbook:

- hôtes: tout
Utilisateur: Shovon
Tâches:
- Nom: ping tous les hôtes
Ping:
- Nom: imprimez un message
déboguer:
msg: «tous les ensembles»

Une fois que vous avez terminé cette étape, enregistrez le fichier en appuyant sur + X, suivie par Y et .

Courir le askpass1.yaml Playbook, comme suit:

$ anible-playbook playbooks / askpass1.yaml

Comme vous pouvez le voir, je ne suis pas en mesure de me connecter à l'hôte. Vous pouvez voir que c'est parce que je n'ai pas exécuté le ANSIBLE-PLAYbook commande avec le -pass option.

Courir le askpass1.yaml livre de jeu avec le -pass Option, comme suit:

$ anible-playbook -Sk-Pass Playbooks / Askpass1.yaml

Comme vous pouvez le voir, Anible demande un mot de passe SSH. Tapez votre mot de passe SSH et appuyez sur .

Le livre de jeu askpass1.yaml devrait maintenant fonctionner avec succès.

Connexion du mot de passe sudo ansible pour les manuels

Le -pass L'option demandera le mot de passe de connexion SSH uniquement. Et si vous souhaitez également taper le mot de passe sudo? Vous verrez comment faire cela dans les prochaines étapes.

Tout d'abord, créez un nouveau manuel askpass2.yaml dans le Playbooks / Répertoire, comme suit:

$ Nano Playbooks / AskPass2.yaml

Tapez les lignes suivantes dans le askpass2.yaml déposer.

- hôtes: tout
Utilisateur: Shovon
devenir vrai
Tâches:
- Nom: Installer le package Apache2
apte:
Nom: apache2
État: dernier
- Nom: assurez-vous que le service Apache2 est en cours d'exécution
service:
Nom: apache2
État: commencé
Activé: vrai
- Nom: Index de copie.Fichier HTML sur serveur
copie:
src:… / fichiers / index.html
dest: / var / www / html / index.html
Mode: 0644
Propriétaire: www-data
Groupe: www-data

Ici, j'ai utilisé la commande devenir vrai Pour dire à ANSIBLE d'exécuter ce livre de jeu avec les privilèges sudo. Une fois que vous avez terminé cette étape, enregistrez le askpass2.yaml fichier en appuyant sur + X, suivie par Y et .

Créé un indice.html fichier dans le des dossiers/ Répertoire, comme suit:

$ fichiers / index nano.html

Tapez les codes HTML suivants dans le indice.html déposer:




Page d'accueil


Bonjour le monde


Ça marche



Une fois que vous avez terminé cette étape, enregistrez le fichier en appuyant sur + X suivie par Y et .

Vous pouvez exécuter le askpass2.yaml livre de jeu avec le -pass Option, comme suit:

$ anible-playBook - Playbooksk-pass / Askpass2.yaml

On vous demandera ensuite le mot de passe SSH, comme avant.

Mais le playbook peut toujours ne pas fonctionner même si vous fournissez le mot de passe SSH. La raison en est parce que vous devez dire à ANSIBLE d'inviter le mot de passe sudo, ainsi que le mot de passe SSH.

Vous pouvez dire à ANNIBLE de demander le mot de passe sudo en utilisant le -demander-becol Option lors de l'exécution du playbook, comme suit:

$ anible-playbook --ask-pass --k-beecome-pass playbooks / askpass2.yaml

Maintenant, ANIBLE vous invitera au mot de passe SSH.

Ensuite, ANIBLE vous invitera au mot de passe sudo. Si votre mot de passe sudo est le même que le mot de passe SSH (ce qui est très probable), laissez-le vide et appuyez sur .

Comme vous pouvez le voir, le playbook a fonctionné avec succès.

Configuration de la connexion SSH basée sur le mot de passe automatique et de la connexion du mot de passe sudo

Vous souhaiterez peut-être utiliser la connexion SSH et sudo basée sur les mots de passe, mais ne souhaitez pas saisir le mot de passe SSH et le mot de passe sudo chaque fois que vous exécutez un livre de jeu. Si tel est le cas, alors cette section est pour vous.

Pour utiliser la connexion SSH basée sur les mots de passe et la connexion sudo sans être invitée aux mots de passe, tout ce que vous avez à faire est d'ajouter le ANSIBLE_SSH_PASS et anible_become_pass Variables hôte ou variables de groupe dans votre fichier d'inventaire.

Tout d'abord, ouvrez le hôtes Fichier d'inventaire, comme suit:

$ hôtes nano

Si vous avez plusieurs hôtes dans votre fichier d'inventaire et que chacun des hôtes a des mots de passe différents, ajoutez le ANSIBLE_SSH_PASS et anible_become_pass variables en tant que variables hôtes (après chaque hôte) comme suit.

Assurez-vous de remplacer secret avec votre mot de passe SSH et Sudo.

Si tous ou certains hôtes ont le même mot de passe, vous pouvez ajouter le ANSIBLE_SSH_PASS et anible_become_pass variables en tant que variables de groupe, comme indiqué dans l'exemple ci-dessous.

Ici, je n'ai qu'un seul hôte, donc j'ai ajouté le ANSIBLE_SSH_PASS et anible_become_pass variables pour le tous groupe (tous les hôtes dans le fichier d'inventaire). Mais, vous pouvez également ajouter ces variables pour d'autres groupes spécifiques.

Une fois que vous avez fini d'ajouter le ANSIBLE_SSH_PASS et anible_become_pass variables dans le hôtes Fichier d'inventaire, enregistrer le hôtes Fichier d'inventaire en appuyant sur + X, suivie par Y et .

Vous pouvez maintenant exécuter le askpass2.yaml Playbook, comme suit:

$ anible-playbook playbooks / askpass2.yaml

Comme vous pouvez le voir, le Playbook a fonctionné avec succès, bien qu'il n'ait pas demandé le mot de passe SSH ou le mot de passe sudo.

Donc, c'est ainsi que vous utilisez sshpass Pour SSH et SSH basés sur les mots de passe, connectez-vous dans ANIBLE. Merci d'avoir lu cet article!