Beheben von Ansible-Authentifizierungsfehlern bei der Verwaltung von Junos-Geräten
In den folgenden Abschnitten werden Authentifizierungsfehler beschrieben, die bei der Verwendung von Ansible zur Verwaltung von Geräten mit Junos OS und Geräten mit Junos OS Evolved auftreten können. In diesen Abschnitten werden auch mögliche Ursachen und Lösungen für jeden Fehler vorgestellt.
Fehlerbehebung bei Authentifizierungsfehlern
Problemstellung
Beschreibung
Während der Ausführung eines juniper.device Moduls oder eines junipernetworks.junos Moduls in der juniper.device Sammlung generiert der Ansible-Steuerungsknoten einen ConnectAuthError Fehler oder einen AuthenticationException Fehler für eine fehlgeschlagene Authentifizierung. Zum Beispiel:
"msg": "Unable to make a PyEZ connection: ConnectAuthError(dc1a.example.net)"
oder
"msg": "AuthenticationException('Authentication failed.')"
Ursache
Das Junos-Gerät kann den Benutzer aus folgenden Gründen möglicherweise nicht authentifizieren:
-
Der Benutzer hat kein Konto auf dem Junos-Gerät.
-
Der Benutzer hat ein Konto mit einem textbasierten Passwort auf dem Junos-Gerät konfiguriert, aber das falsche Passwort oder kein Passwort wird für den Benutzer beim Ausführen des Moduls angegeben.
-
Der Benutzer verfügt über ein Konto auf dem Junos-Gerät mit konfigurierten SSH-Schlüsseln, aber auf die SSH-Schlüssel kann weder auf dem Gerät noch auf dem Steuerungsknoten zugegriffen werden.
Lösung
Stellen Sie sicher, dass der Benutzer, der die Module ausführt, über ein Junos OS-Anmeldekonto auf allen Junos-Zielgeräten verfügt. Für das Konto muss ein öffentliches/privates SSH-Schlüsselpaar oder ein textbasiertes Kennwort konfiguriert sein. Wenn das Konto SSH-Schlüssel verwendet, stellen Sie sicher, dass der Benutzer auf die Schlüssel zugreifen kann.
Beheben von Attribut- conn_type Fehlern
Problemstellung
Beschreibung
Während der Ausführung eines juniper.device Moduls generiert der Ansible-Steuerungsknoten den folgenden Fehler:
AttributeError: 'JuniperJunosModule' object has no attribute 'conn_type'
Ursache
Während die älteren, veralteten Juniper.junos Module die Verwendung eines Wörterbuchs zum Definieren von provider Verbindungs- und Authentifizierungsparametern unterstützten, unterstützen die juniper.device Module die Verwendung eines provider Wörterbuchs nicht. Wenn Sie auf ein provider Wörterbuch verweisen, generieren die Module den oben genannten Fehler.
Lösung
Wenn Sie für die juniper.device Module (mit Ausnahme juniper.device.junos_* von Modulen) Verbindungs- und Authentifizierungsparameter in der Wiedergabe des Playbooks angeben, müssen Sie die Parameter an dem für die Ansible-Verbindung geeigneten Speicherort definieren.
-
Definieren Sie für persistente Verbindungen (
connection: juniper.device.pyez) die Parameter unter demvars:Abschnitt. -
Definieren Sie für lokale Verbindungen (
connection: local) die Parameter entweder unter demvars:Abschnitt oder als Modulargumente der obersten Ebene.
Im folgenden Playbook wird eine persistente vars Verbindung verwendet und der Parameter für die Authentifizierung im Abschnitt des Playbooks definiert.
---
- name: Get device facts
hosts: dc1
connection: juniper.device.pyez
gather_facts: no
vars_prompt:
- name: "DEVICE_PASSWORD"
prompt: "Device password"
private: yes
vars:
passwd: "{{ DEVICE_PASSWORD }}"
tasks:
- name: Get device facts
juniper.device.facts:
savedir: "{{ playbook_dir }}"
Im folgenden Playbook wird eine lokale Verbindung verwendet und der Parameter "Authentifizierung" als Modulargument definiert.
---
- name: Get device facts
hosts: dc1
connection: local
gather_facts: no
vars_prompt:
- name: "DEVICE_PASSWORD"
prompt: "Device password"
private: yes
tasks:
- name: Get device facts
juniper.device.facts:
passwd: "{{ DEVICE_PASSWORD }}"
savedir: "{{ playbook_dir }}"