Ansible

Comment utiliser la connexion par mot de passe SSH dans Ansible à l'aide de sshpass

Comment utiliser la connexion par mot de passe SSH dans Ansible à l'aide de sshpass
Dans cet article, je vais vous montrer comment exécuter des playbooks Ansible à l'aide d'une connexion par mot de passe SSH avec sshpass.

Conditions préalables

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

1) Vous devez avoir Ansible installé sur votre ordinateur.
2) Vous devez avoir au moins un hôte Ubuntu/Debian auquel vous pouvez vous connecter depuis Ansible.

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

Vous devrez également avoir sshpass installé sur votre ordinateur, où vous devriez avoir installé Ansible. je vais vous montrer comment installer sshpass sur Ubuntu/Debian et CentOS/RHEL dans cet article. Ne vous inquiétez pas si ces programmes ne sont pas déjà installés sur votre système.

Installer sshpass sur Ubuntu/Debian

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

Tout d'abord, mettez à jour le cache du référentiel de packages 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 packages DNF via la commande suivante :

$ sudo dnf makecache

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

$ sudo dnf install epel-release -y

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

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

$ sudo dnf makecache

Installer sshpass via la commande suivante :

$ sudo dnf install sshpass -y

sshpass devrait être installé.

Configurer un répertoire de projets Ansible

Avant d'aller plus loin, ce serait une bonne idée de créer une structure de répertoires 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 :

$ nano hôtes

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

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

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

$ nano ansible.cfg

Maintenant, tapez les lignes suivantes dans le ansible.cfg déposer.

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

Tester la connexion SSH basée sur un mot de passe dans Ansible

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

$ ansible all -u shovon -m ping

REMARQUE: Ici le -vous L'option est utilisée pour indiquer à ansible sous quel utilisateur se connecter. Dans ce cas, ce sera l'utilisateur shovon. 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 des commandes.

Pour forcer Ansible à demander le mot de passe utilisateur, exécutez le ansible commande avec le -demander-passer argument, comme suit :

$ ansible 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 utilisateur) et appuyez sur .

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

Connexion SSH basée sur un mot de passe Ansible pour les Playbooks

Vous pouvez utiliser une connexion SSH basée sur un mot de passe lorsque vous exécutez des playbooks Ansible. Regardons un exemple.

Tout d'abord, créez un nouveau playbook demanderpass1.yaml dans le cahiers/ répertoire, comme suit :

$ nano playbooks/askpass1.yaml

Tapez les lignes suivantes dans le demanderpass1.yaml fichier playbook :

- hôtes : tous
utilisateur : shovon
Tâches:
- nom : Ping sur tous les hôtes
ping :
- nom : imprimer un message
déboguer:
msg : 'Tout est réglé'

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

Exécutez le demanderpass1.yaml livre de jeu, comme suit :

$ ansible-playbook playbooks/askpass1.yaml

Comme vous pouvez le voir, je n'arrive pas à me connecter à l'hébergeur. Vous pouvez voir que c'est parce que je n'ai pas exécuté le ansible-playbook commande avec le -demander-passer option.

Exécutez le demanderpass1.yaml livre de jeu avec le -demander-passer option, comme suit :

$ ansible-playbook -ask-pass playbooks/askpass1.yaml

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

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

Connexion par mot de passe sudo Ansible pour Playbooks

le -demander-passer l'option demandera uniquement le mot de passe de connexion SSH. Que faire si vous souhaitez également saisir le mot de passe sudo? Vous verrez comment faire cela dans les prochaines étapes.

Tout d'abord, créez un nouveau playbook askpass2.yaml dans le cahiers/ répertoire, comme suit :

$ nano playbooks/askpass2.yaml

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

- hôtes : tous
utilisateur : shovon
devenir vrai
Tâches:
- nom: Installer le paquet apache2
apte:
nom : apache2
état : dernier
- name: Assurez-vous que le service apache2 est en cours d'exécution
un service:
nom : apache2
état : commencé
activé : vrai
- nom : Copier l'index.fichier html vers le serveur
copie:
src : … /fichiers/index.html
destination : /var/www/html/index.html
mode : 0644
propriétaire : www-data
groupe : www-données

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

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

$ nano fichiers/index.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 Oui et .

Vous pouvez exécuter le askpass2.yaml livre de jeu avec le -demander-passer option, comme suit :

$ ansible-playbook --ask-pass playbooks/askpass2.yaml

Il vous sera alors demandé le mot de passe SSH, comme précédemment.

Mais le playbook peut toujours ne pas s'exécuter même si vous fournissez le mot de passe SSH. La raison en est que vous devez dire à Ansible de demander le mot de passe sudo, ainsi que le mot de passe SSH.

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

$ ansible-playbook --ask-pass --ask-become-pass playbooks/askpass2.yaml

Maintenant, Ansible vous demandera le mot de passe SSH.

Ensuite, Ansible vous demandera le mot de passe sudo. Si votre mot de passe sudo est le même que le mot de passe SSH (ce qui est le plus probable), laissez-le vide et appuyez sur .

Comme vous pouvez le voir, le playbook s'est exécuté avec succès.

Configuration de la connexion SSH automatique basée sur un mot de passe et de la connexion par mot de passe sudo

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

Pour utiliser la connexion SSH basée sur un mot de passe et la connexion sudo sans être invité à saisir les mots de passe, il vous suffit d'ajouter le ansible_ssh_pass et ansible_become_pass variables hôtes ou variables de groupe dans votre fichier d'inventaire.

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

$ nano hôtes

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 ansible_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 tout ou partie des hôtes ont le même mot de passe, alors vous pouvez ajouter le ansible_ssh_pass et ansible_become_pass variables en tant que variables de groupe, comme illustré dans l'exemple ci-dessous.

Ici, je n'ai qu'un seul hôte, j'ai donc ajouté le ansible_ssh_pass et ansible_become_pass variables pour le tout 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 ansible_become_pass variables dans le hôtes fichier d'inventaire, enregistrez le hôtes fichier d'inventaire en appuyant sur + X, suivie par Oui et .

Vous pouvez maintenant exécuter le askpass2.yaml livre de jeu, comme suit :

$ ansible-playbook playbooks/askpass2.yaml

Comme vous pouvez le voir, le playbook s'est exécuté avec succès, bien qu'il n'ait pas demandé le mot de passe SSH ou le mot de passe sudo.

Alors, c'est comme ça que tu utilises sshpass pour la connexion SSH et sudo basée sur un mot de passe dans Ansible. Merci d'avoir lu cet article!

Meilleurs jeux à jouer avec le suivi des mains
Oculus Quest a récemment introduit l'idée géniale du suivi manuel sans contrôleurs. Avec un nombre toujours croissant de jeux et d'activités qui exécu...
Comment afficher la superposition OSD dans les applications et jeux Linux en plein écran
Jouer à des jeux en plein écran ou utiliser des applications en mode plein écran sans distraction peut vous couper des informations système pertinente...
Top 5 des cartes de capture de jeu
Nous avons tous vu et aimé des gameplays en streaming sur YouTube. PewDiePie, Jakesepticye et Markiplier ne sont que quelques-uns des meilleurs joueur...