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, mit dem Sie sich von Ansible verbinden können.
Es gibt viele Artikel unter LinuxHint, die sich der Installation von Ansible verschrieben haben. Sie können diese bei Bedarf überprüfen, um die erforderlichen Programme auf Ihrem System zu installieren.
Sie müssen auch haben sshpass Installiert auf Ihrem Computer, wo Sie Ansible installieren sollten. Ich werde Ihnen zeigen, wie Sie installieren sshpass über Ubuntu/Debian und Centos/Rhel in diesem Artikel. Machen Sie sich keine Sorgen, wenn Sie diese Programme nicht bereits auf Ihrem System installiert haben.
Installieren von SSHPass auf Ubuntu/Debian
Das Programm sshpass ist im offiziellen Paketrepository von Ubuntu/Debian verfügbar. Sie können dieses Programm problemlos auf Ihrem Computer installieren.
Aktualisieren Sie zunächst den APT -Paket -Repository -Cache über den folgenden Befehl:
$ sudo APT Update
Installieren Sie jetzt sshpass über den folgenden Befehl:
$ sudo apt install SSHPass -y
SSHPass sollte jetzt installiert werden.
Installieren von SSHPass auf CentOS 8/Rhel 8
sshpass ist im Epel -Repository von CentOS 8/Rhel 8 erhältlich. Sie müssen das Epel -Repository aktivieren lassen, um SSHPass zu installieren.
Aktualisieren Sie zunächst den DNF -Paket -Repository -Cache über den folgenden Befehl:
$ sudo dnf makecache
Installieren Sie als nächstes 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 werden.
Aktualisieren Sie den DNF -Paket -Repository -Cache erneut wie folgt:
$ sudo dnf makecache
Installieren sshpass über den folgenden Befehl:
$ sudo dnf install sshpass -y
sshpass sollte installiert werden.
Einrichten eines Ansible -Projektverzeichnisses
Bevor wir weiter weitergehen, wäre es eine gute Idee, eine Projektverzeichnisstruktur zu erstellen, nur um die Dinge ein bisschen organisiert zu halten.
Ein Projektverzeichnis erstellen sshpass/ und alle erforderlichen Unterverzeichnisse (in Ihrem aktuellen Arbeitsverzeichnis) führen Sie den folgenden Befehl aus:
$ mkdir -pv SSHPass/Dateien, Playbooks
Navigieren Sie wie folgt zum Projektverzeichnis:
$ cd sshpass/
Ein ... kreieren Gastgeber Inventardatei wie folgt:
$ nano Gastgeber
Fügen Sie Ihren Host -IP- oder DNS -Namen in die Inventardatei hinzu.
Sobald Sie mit diesem Schritt fertig sind, speichern Sie die Datei, indem Sie drücken + X, gefolgt von Y Und .
Erstellen Sie eine ansible Konfigurationsdatei im Projektverzeichnis wie folgt:
$ nano ansible.CFG
Geben Sie nun die folgenden Zeilen in die Ansible.CFG Datei.
Sobald Sie mit diesem Schritt fertig sind, speichern Sie die Datei, indem Sie drücken + X, gefolgt von Y Und .
Testen Sie passwortbasiertes SSH-Login in ANSIBLE
Versuchen Sie als nächstes, die Hosts in der Inventardatei wie folgt zu pingen:
$ ansible All -u Shovon -m Ping
NOTIZ: Hier das -u Die Option wird verwendet, um Ansible zu sagen, in welchem Benutzer sie sich anmelden sollen. In diesem Fall wird es der Benutzer sein Shovon. Ersetzen Sie diesen Benutzernamen von nun an in der gesamten Demo durch Ihren Namen.
Wie Sie sehen können, kann ich mich nicht beim Host anmelden und Befehle ausführen.
Ausführen von Ansible, um nach dem Benutzerkennwort zu fragen, die ausführen Ansible Befehl mit dem -Ask-Pass Argument wie folgt:
$ ansible All -u Shovon -gäßer -m -Ping -Ping
Wie Sie sehen können, fragt Ansible nach dem SSH -Kennwort des Benutzers. Geben Sie nun Ihr SSH -Passwort ein (Benutzeranmeldempfuchkennwort) und drücken Sie jetzt .
Der Host kann wie folgt pinged werden:
Ansible passbasierte SSH-Login für Spielbücher
Sie können eine kennwortbasierte SSH-Login verwenden, wenn Sie Ansible Playbooks ausführen. Schauen wir uns ein Beispiel an.
Erstellen Sie zunächst ein neues Spielbuch AskPass1.Yaml im Playbooks/ Verzeichnis wie folgt:
$ nano playbooks/AskPass1.Yaml
Geben Sie die folgenden Zeilen in die AskPass1.Yaml Playbook -Datei:
- Hosts: AllesSobald Sie mit diesem Schritt fertig sind, speichern Sie die Datei, indem Sie drücken + X, gefolgt von Y Und .
Leiten Sie die AskPass1.Yaml Spielbuch wie folgt:
$ Ansible-Playbook Playbooks/AskPass1.Yaml
Wie Sie sehen können, kann ich mich nicht mit dem Host verbinden. Sie können sehen, dass dies daran liegt, dass ich die nicht gelaufen bin Ansible-Playbook Befehl mit dem -Ask-Pass Möglichkeit.
Leiten Sie die AskPass1.Yaml Spielbuch mit dem -Ask-Pass Option wie folgt:
$ Ansible-Playbook-ASK-Pass-Playbooks/AskPass1.Yaml
Wie Sie sehen können, fragt Ansible nach einem SSH -Passwort. Geben Sie Ihr SSH -Passwort ein und drücken Sie .
Das Spielbuch AskPass1.Yaml sollte jetzt erfolgreich laufen.
Ansible sudo Passwort Login für Playbooks
Der -Ask-Pass Die Option fragt nur nach dem SSH -Login -Passwort. Was ist, wenn Sie auch das Sudo -Passwort eingeben möchten?? Sie werden sehen, wie das in den nächsten Schritten das macht.
Erstellen Sie zunächst ein neues Spielbuch AskPass2.Yaml im Playbooks/ Verzeichnis wie folgt:
$ nano playbooks/AskPass2.Yaml
Geben Sie die folgenden Zeilen in die AskPass2.Yaml Datei.
- Hosts: AllesHier habe ich den Befehl verwendet wahr werden Ansible zu sagen, dass er dieses Spielbuch mit sudo -Privilegien ausführen soll. Sobald Sie mit diesem Schritt fertig sind, speichern Sie die AskPass2.Yaml Datei durch Drücken + X, gefolgt von Y Und .
Erstelle ein Index.html Datei in der Dateien/ Verzeichnis wie folgt:
$ nano -Dateien/Index.html
Geben Sie die folgenden HTML -Codes in die ein Index.html Datei:
Es klappt
Sobald Sie mit diesem Schritt fertig sind, speichern Sie die Datei, indem Sie drücken + X gefolgt von Y Und .
Sie können die ausführen AskPass2.Yaml Spielbuch mit dem -Ask-Pass Option wie folgt:
$ Ansible-Playbook-Kassierungsspielbooks/AskPass2.YamlSie werden dann nach dem SSH -Passwort wie zuvor gefragt.
Das Spielbuch kann jedoch immer noch nicht ausgeführt werden, auch wenn Sie das SSH -Passwort angeben. Der Grund dafür liegt daran, dass Sie Ansible sagen müssen, dass Sie das Sudo -Passwort sowie das SSH -Passwort fordern müssen.
Sie können ansible erkennen, dass Sie das Sudo -Passwort mit dem fragen, -Ask-BECOME-PASS Option beim Ausführen des Spielbuchs wie folgt:
$ Ansible-Playbook-mask-pass-mask-become-pass-Playbooks/AskPass2.YamlJetzt fordert Ansible Sie für das SSH -Passwort auf.
Als nächstes fordert Ansible Sie für das Sudo -Passwort auf. Wenn Ihr Sudo -Passwort dem SSH -Passwort entspricht (was am wahrscheinlichsten ist), lassen Sie es leer und drücken Sie .
Wie Sie sehen können, lief das Spielbuch erfolgreich.
Konfigurieren der automatischen kennwortbasierten SSH-Login und Sudo-Passwort-Login
Möglicherweise möchten Sie kennwortbasierte SSH- und Sudo-Login verwenden, möchten jedoch nicht jedes Mal, wenn Sie ein Spielbuch ausführen, das SSH-Passwort und das Sudo-Passwort eingeben. Wenn dies der Fall ist, ist dieser Abschnitt genau das Richtige für Sie.
Um eine passwordbasierte SSH-Login und sudo-Anmeldung zu verwenden, ohne für die Passwörter aufgefordert zu werden, müssen Sie nur das hinzufügen Ansible_Ssh_Pass Und ansible_become_pass Hostvariablen oder Gruppenvariablen in Ihrer Bestandsdatei.
Öffnen Sie zuerst die Gastgeber Inventardatei wie folgt:
$ nano Gastgeber
Wenn Sie mehrere Hosts in Ihrer Bestandsdatei haben und jeder der Hosts unterschiedliche Passwörter hat, fügen Sie die hinzu Ansible_Ssh_Pass Und ansible_become_pass Variablen als Hostvariablen (nach jedem Host) wie folgt.
Stellen Sie sicher Geheimnis Mit Ihrem SSH- und Sudo -Passwort.
Wenn alle oder einige der Hosts das gleiche Passwort haben, können Sie die hinzufügen Ansible_Ssh_Pass Und ansible_become_pass Variablen als Gruppenvariablen, wie im folgenden Beispiel gezeigt.
Hier habe ich nur einen Host, also habe ich das hinzugefügt Ansible_Ssh_Pass Und ansible_become_pass Variablen für die alle Gruppe (alle Hosts in der Bestandsdatei). Sie können diese Variablen jedoch auch für andere spezifische Gruppen hinzufügen.
Sobald Sie das hinzugefügt haben Ansible_Ssh_Pass Und ansible_become_pass Variablen in der Gastgeber Inventardatei speichern Sie die Gastgeber Inventardatei durch Drücken + X, gefolgt von Y Und .
Sie können jetzt die ausführen AskPass2.Yaml Spielbuch wie folgt:
$ Ansible-Playbook Playbooks/AskPass2.YamlWie Sie sehen, lief das Playbook erfolgreich, obwohl es nicht nach dem SSH -Passwort oder dem Sudo -Passwort gefragt wurde.
So benutzt du also sshpass Für passwortbasierte SSH und Sudo Login in ANSIBLE. Vielen Dank für das Lesen dieses Artikels!