Ansible

So verwenden Sie die passwortbasierte SSH-Anmeldung in Ansible mit sshpass

So verwenden Sie die passwortbasierte SSH-Anmeldung in Ansible mit sshpass
In diesem Artikel zeige ich Ihnen, wie Sie Ansible Playbooks mit einer passwortbasierten SSH-Anmeldung mit sshpass ausführen.

Voraussetzungen

Wenn Sie die in diesem Artikel besprochenen Beispiele ausprobieren möchten,

1) Sie müssen Ansible auf Ihrem Computer installiert haben.
2) Sie müssen mindestens einen Ubuntu/Debian-Host haben, zu dem Sie sich von Ansible aus verbinden können.

Es gibt viele Artikel auf LinuxHint, die sich der Installation von Ansible widmen. Sie können diese bei Bedarf überprüfen, um die erforderlichen Programme auf Ihrem System zu installieren.

Sie müssen auch haben sshpass auf Ihrem Computer installiert, wo Sie Ansible installiert haben sollten. Ich zeige dir, wie du es installierst sshpass zu Ubuntu/Debian und CentOS/RHEL in diesem Artikel. Machen Sie sich keine Sorgen, wenn diese Programme nicht bereits auf Ihrem System installiert sind.

sshpass unter Ubuntu/Debian installieren

Das Programm sshpass ist im offiziellen Paket-Repository von Ubuntu/Debian verfügbar. Sie können dieses Programm ganz einfach auf Ihrem Computer installieren.

Aktualisieren Sie zunächst den Cache des APT-Paket-Repositorys über den folgenden Befehl:

$ sudo apt-Update

Jetzt installieren sshpass über folgenden Befehl:

$ sudo apt install sshpass -y

sshpass sollte jetzt installiert sein.

Installieren von sshpass auf CentOS 8/RHEL 8

sshpass ist im EPEL-Repository von CentOS 8/RHEL 8 verfügbar. Sie müssen das EPEL-Repository aktiviert haben, um sshpass zu installieren.

Aktualisieren Sie zunächst den DNF-Paket-Repository-Cache über den folgenden Befehl:

$ sudo dnf makecache

Als nächstes installieren Sie das EPEL-Repository-Paket über den folgenden Befehl:

$ sudo dnf install epel-release -y

Das EPEL-Repository-Paket sollte nun installiert und das EPEL-Repository aktiviert sein.

Aktualisieren Sie den DNF-Paket-Repository-Cache erneut wie folgt:

$ sudo dnf makecache

Installieren sshpass über folgenden Befehl:

$ sudo dnf install sshpass -y

sshpass sollte installiert werden.

Ein Ansible-Projektverzeichnis einrichten

Bevor wir weitermachen, wäre es eine gute Idee, eine Projektverzeichnisstruktur zu erstellen, nur um die Dinge ein wenig organisiert zu halten.

So erstellen Sie ein Projektverzeichnis sshpass/ und alle erforderlichen Unterverzeichnisse (in Ihrem aktuellen Arbeitsverzeichnis) führen Sie den folgenden Befehl aus:

$ mkdir -pv sshpass/files,playbooks

Navigieren Sie wie folgt zum Projektverzeichnis:

$ cd sshpass/

Ein ... kreieren Gastgeber Inventardatei wie folgt:

$ Nano-Hosts

Fügen Sie Ihre Host-IP oder Ihren DNS-Namen in die Inventardatei ein.

Wenn Sie mit diesem Schritt fertig sind, speichern Sie die Datei, indem Sie drücken + X, gefolgt von Ja und .

Erstellen Sie eine Ansible-Konfigurationsdatei im Projektverzeichnis wie folgt:

$ nano ansible.cfg

Geben Sie nun die folgenden Zeilen in die ein ansible.cfg Datei.

Wenn Sie mit diesem Schritt fertig sind, speichern Sie die Datei, indem Sie drücken + X, gefolgt von Ja und .

Testen der passwortbasierten SSH-Anmeldung in Ansible

Versuchen Sie als Nächstes, die Hosts in der Inventardatei wie folgt zu pingen:

$ ansible all -u shovon -m ping

HINWEIS: Hier die -du Option wird verwendet, um ansible mitzuteilen, als welcher Benutzer sich anmelden soll. In diesem Fall ist es der Benutzer shovon. Ersetzen Sie diesen Benutzernamen von nun an durch Ihren eigenen, während der gesamten Demo.

Wie Sie sehen, kann ich mich nicht beim Host anmelden und keine Befehle ausführen.

Um Ansible zu zwingen, nach dem Benutzerkennwort zu fragen, führen Sie die ansible Befehl mit dem -fragen-pass Argumentation wie folgt:

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

Wie Sie sehen, fragt Ansible nach dem SSH-Passwort des Benutzers. Geben Sie nun Ihr SSH-Passwort (Benutzer-Login-Passwort) ein und drücken Sie .

Der Host kann wie folgt angepingt werden:

Ansible passwortbasierte SSH-Anmeldung für Playbooks

Sie können eine passwortbasierte SSH-Anmeldung verwenden, wenn Sie Ansible Playbooks ausführen. Schauen wir uns ein Beispiel an.

Erstellen Sie zuerst ein neues Playbook askpass1.yaml in dem Spielbücher/ Verzeichnis wie folgt:

$ Nano-Playbooks/askpass1.yaml

Geben Sie die folgenden Zeilen in die ein askpass1.yaml Playbook-Datei:

- Gastgeber: alle
Benutzer: shovon
Aufgaben:
- Name: Alle Hosts anpingen
Klingeln:
- Name: Nachricht drucken
debuggen:
msg: 'Alles eingestellt'

Wenn Sie mit diesem Schritt fertig sind, speichern Sie die Datei, indem Sie drücken + X, gefolgt von Ja und .

Führen Sie die askpass1.yaml Spielbuch wie folgt:

$ ansible-playbook playbooks/askpass1.yaml

Wie Sie sehen, kann ich mich nicht mit dem Host verbinden. Sie können sehen, dass dies daran liegt, dass ich das nicht ausgeführt habe ansible-playbook Befehl mit dem -fragen-pass Möglichkeit.

Führen Sie die askpass1.yaml Spielbuch mit dem -fragen-pass Möglichkeit wie folgt:

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

Wie Sie sehen, fragt Ansible nach einem SSH-Passwort. Geben Sie Ihr SSH-Passwort ein und drücken Sie .

Das Spielbuch askpass1.yaml sollte nun erfolgreich laufen.

Ansible sudo Passwort-Anmeldung für Playbooks

Das -fragen-pass Option fragt nur nach dem SSH-Login-Passwort. Was ist, wenn Sie auch das Sudo-Passwort eingeben möchten? Wie das geht, erfahren Sie in den nächsten Schritten.

Erstellen Sie zuerst ein neues Playbook askpass2.yaml in dem Spielbücher/ Verzeichnis wie folgt:

$ Nano-Playbooks/askpass2.yaml

Geben Sie die folgenden Zeilen in die ein askpass2.yaml Datei.

- Gastgeber: alle
Benutzer: shovon
wahr werden
Aufgaben:
- Name: Apache2-Paket installieren
geeignet:
Name: Apache2
Zustand: aktuell
- name: Stellen Sie sicher, dass der Apache2-Dienst ausgeführt wird
Bedienung:
Name: Apache2
Zustand: gestartet
aktiviert: Richtig
- Name: Index kopieren.html-Datei auf den Server
Kopieren:
src: … /files/index.html
Ziel: /var/www/html/index.html
Modus: 0644
Inhaber: www-data
Gruppe: www-daten

Hier habe ich den Befehl verwendet wahr werden Ansible anweisen, dieses Playbook mit Sudo-Berechtigungen auszuführen. Wenn Sie mit diesem Schritt fertig sind, speichern Sie die askpass2.yaml Datei durch Drücken von + X, gefolgt von Ja und .

Erstelle ein Index.html Datei in der Dateien/ Verzeichnis wie folgt:

$ Nano-Dateien/Index.html

Geben Sie die folgenden HTML-Codes in das Index.html Datei:




Startseite


Hallo Welt


Es klappt



Wenn Sie mit diesem Schritt fertig sind, speichern Sie die Datei, indem Sie drücken + X gefolgt von Ja und .

Sie können die askpass2.yaml Spielbuch mit dem -fragen-pass Möglichkeit wie folgt:

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

Sie werden dann wie bisher nach dem SSH-Passwort gefragt.

Das Playbook wird jedoch möglicherweise immer noch nicht ausgeführt, selbst wenn Sie das SSH-Passwort angeben. Der Grund dafür ist, dass Sie Ansible anweisen müssen, das sudo-Passwort sowie das SSH-Passwort einzugeben.

Sie können Ansible anweisen, nach dem sudo-Passwort zu fragen, indem Sie die -fragen-werden-passen Option beim Ausführen des Playbooks wie folgt:

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

Ansible fordert Sie nun zur Eingabe des SSH-Passworts auf.

Als nächstes fordert Sie Ansible zur Eingabe des sudo-Passworts auf. Wenn Ihr sudo-Passwort mit dem SSH-Passwort identisch ist (was am wahrscheinlichsten ist), lassen Sie es leer und drücken Sie .

Wie Sie sehen, lief das Playbook erfolgreich.

Konfigurieren der automatischen kennwortbasierten SSH-Anmeldung und der sudo-Kennwortanmeldung

Möglicherweise möchten Sie die passwortbasierte SSH- und Sudo-Anmeldung verwenden, möchten jedoch nicht jedes Mal das SSH-Passwort und das Sudo-Passwort eingeben, wenn Sie ein Playbook ausführen. Wenn das der Fall ist, dann ist dieser Abschnitt für Sie.

Um die passwortbasierte SSH-Anmeldung und Sudo-Anmeldung zu verwenden, ohne nach den Passwörtern gefragt zu werden, müssen Sie nur das ansible_ssh_pass und ansible_become_pass Hostvariablen oder Gruppenvariablen in Ihrer Inventardatei.

Öffnen Sie zuerst die Gastgeber Inventardatei wie folgt:

$ Nano-Hosts

Wenn Sie mehrere Hosts in Ihrer Inventardatei haben und jeder der Hosts unterschiedliche Passwörter hat, fügen Sie die ansible_ssh_pass und ansible_become_pass Variablen als Hostvariablen (nach jedem Host) wie folgt.

Unbedingt ersetzen Geheimnis mit deinem SSH- und sudo-Passwort.

Wenn alle oder einige der Hosts das gleiche Passwort haben, können Sie das ansible_ssh_pass und ansible_become_pass Variablen als Gruppenvariablen, wie im Beispiel unten gezeigt.

Hier habe ich nur einen Host, also habe ich den hinzugefügt ansible_ssh_pass und ansible_become_pass Variablen für die alle Gruppe (alle Hosts in der Inventardatei). Sie können diese Variablen jedoch auch für andere spezifische Gruppen hinzufügen.

Sobald Sie mit dem Hinzufügen fertig sind ansible_ssh_pass und ansible_become_pass Variablen in der Gastgeber Inventardatei, speichern Sie die Gastgeber Inventardatei durch Drücken von + X, gefolgt von Ja und .

Sie können jetzt die askpass2.yaml Spielbuch wie folgt:

$ ansible-playbook playbooks/askpass2.yaml

Wie Sie sehen, wurde das Playbook erfolgreich ausgeführt, obwohl es nicht nach dem SSH-Passwort oder dem Sudo-Passwort gefragt wurde.

So verwenden Sie sshpass für passwortbasierte SSH- und Sudo-Anmeldung in Ansible. Vielen Dank für das Lesen dieses Artikels!

Fügen Sie mit diesen kostenlosen Tools Mausgesten zu Windows 10 hinzu
In den letzten Jahren haben sich Computer und Betriebssysteme stark weiterentwickelt. Es gab eine Zeit, in der Benutzer Befehle verwenden mussten, um ...
Steuern und verwalten Sie Mausbewegungen zwischen mehreren Monitoren in Windows 10
Dual-Display-Maus-Manager lässt Sie die Mausbewegung zwischen mehreren Monitoren steuern und konfigurieren, indem Sie ihre Bewegungen in der Nähe der ...
Mit WinMouse können Sie die Mauszeigerbewegung auf einem Windows-PC anpassen und verbessern improve
Wenn Sie die Standardfunktionen Ihres Mauszeigers verbessern möchten, verwenden Sie Freeware WinMouse. Es fügt weitere Funktionen hinzu, damit Sie das...