Beheben von Ansible-Fehlern bei der Konfiguration von Junos-Geräten
Beheben Sie Fehler, die auftreten, wenn Sie das juniper.device.config Ansible-Modul verwenden, um Geräte mit Junos OS oder Geräte mit Junos OS Evolved zu konfigurieren.
In den folgenden Abschnitten werden Fehler beschrieben, die auftreten können, wenn Sie das juniper.device.config Ansible-Modul zum Verwalten der Konfiguration auf Geräten mit Junos OS oder Geräten mit Junos OS Evolved verwenden. In diesen Abschnitten werden auch mögliche Ursachen und Lösungen für jeden Fehler vorgestellt.
Fehlerbehebung bei Konfigurations-Timeout-Fehlern
Problemstellung
Beschreibung
Das juniper.device.config Modul generiert eine TimeoutExpiredError Fehlermeldung und kann die Gerätekonfiguration nicht aktualisieren.
ncclient.operations.errors.TimeoutExpiredError: ncclient timed out while waiting for an rpc reply
Ursache
Die Standardzeit für ein NETCONF-RPC für das Timeout beträgt 30 Sekunden. Große Konfigurationsänderungen können diesen Wert überschreiten, was zu einer Zeitüberschreitung des Vorgangs führt, bevor die Konfiguration hochgeladen und committet werden kann.
Lösung
Um Konfigurationsänderungen zu berücksichtigen, die möglicherweise eine Commitzeit erfordern, die länger als das standardmäßige RPC-Timeoutintervall ist, legen Sie das timeout Argument des Moduls auf einen geeigneten Wert fest, und führen Sie das Playbook erneut aus.
Fehlerbehebung bei Konfigurationssperrfehlern
Problemstellung
Beschreibung
Das juniper.device.config Modul generiert eine Fehlermeldung, die darauf hinweist, dass die Konfigurationsdatenbank nicht gesperrt werden kann. Zum Beispiel:
FAILED! => {"changed": false, "msg": "Unable to open the configuration in exclusive mode: LockError(severity: error, bad_element: None, message: configuration database modified)"}
oder
FAILED! => {"changed": false, "msg": "Unable to open the configuration in exclusive mode: LockError(severity: error, bad_element: lock-configuration, message: permission denied)"}
Ursache
Ein Konfigurationssperrfehler kann aus folgenden Gründen auftreten:
-
Ein anderer Benutzer hat eine exklusive Sperre für die Konfiguration.
-
Ein anderer Benutzer hat Änderungen an der Konfigurationsdatenbank vorgenommen, die Änderungen jedoch noch nicht übertragen.
-
Der Benutzer, der das Ansible-Modul ausführt, hat keine Berechtigungen zum Konfigurieren des Geräts.
Lösung
Die LockError Meldungszeichenfolge gibt in der Regel die Ursache des Problems an. Wenn ein anderer Benutzer die Konfiguration geändert hat oder eine exklusive Sperre für die Konfiguration hat, warten Sie, bis die Änderungen übernommen oder die Sperre aufgehoben wird, und führen Sie das Playbook erneut aus. Wenn die Ursache darin besteht, dass der Benutzer nicht über Berechtigungen zum Konfigurieren des Geräts verfügt, führen Sie entweder das Playbook mit einem Benutzer aus, der über die erforderlichen Berechtigungen verfügt, oder konfigurieren Sie das Junos-Gerät gegebenenfalls, um dem aktuellen Benutzer die erforderlichen Berechtigungen zum Vornehmen der Änderungen zu erteilen.
Beheben von Konfigurationsladefehlern
Problemstellung
Beschreibung
Das juniper.device.config Modul generiert eine ConfigLoadError Fehlermeldung, die darauf hinweist, dass die Konfiguration nicht geändert werden kann, da die Berechtigung verweigert wurde.
FAILED! => {"changed": false, "msg": "Failure loading the configuraton: ConfigLoadError(severity: error, bad_element: scripts, message: error: permission denied)"}
Ursache
Das Ansible-Modul generiert diese Fehlermeldung, wenn der Benutzer, der das Modul ausführt, die Berechtigung zum Ändern der Konfiguration, aber nicht zum Ändern des angeforderten Abschnitts der Konfiguration hat.
Lösung
Um dieses Problem zu lösen, führen Sie entweder das Playbook mit einem Benutzer aus, der über die erforderlichen Berechtigungen verfügt, oder konfigurieren Sie das Junos-Gerät gegebenenfalls so, dass dem aktuellen Benutzer die erforderlichen Berechtigungen zum Vornehmen der Änderungen erteilt werden.
Fehlerbehebung bei Commit-Fehlern
Problemstellung
Beschreibung
Das juniper.device.config Modul generiert eine CommitError Fehlermeldung, die darauf hinweist, dass der Commit-Vorgang aufgrund eines Konfigurationssperrfehlers fehlgeschlagen ist.
FAILED! => {"changed": false, "msg": "Unable to commit configuration: CommitError(edit_path: None, bad_element: None, message: error: remote lock-configuration failed on re0\n\nnote: consider using 'commit synchronize force' to\nterminate remote edit sessions and force the commit)"}
Ursache
Ein Konfigurationssperrfehler kann aus den unter Behandeln von Konfigurationssperrfehlern beschriebenen Gründen auftreten. Die Meldung "Fehler bei der Konfigurationssperre" kann jedoch als Teil einer CommitError . LockError Diese Situation kann auftreten, wenn eine Aufgabe eine Commit-Prüfung und eine Commit-Operation anfordert und das Gerät die Commit-Operation initiiert, bevor die Commit-Prüfung die Konfigurationssperre aufhebt.
Lösung
Damit das Gerät genügend Zeit hat, den Commit-Überprüfungsvorgang abzuschließen und die Konfigurationssperre aufzuheben, bevor der Commit-Vorgang initiiert wird, legen Sie den check_commit_wait Parameter des Moduls auf einen geeigneten Wert fest, und führen Sie das Playbook erneut aus. Der check_commit_wait Wert ist die Anzahl der Sekunden, die zwischen der Commit-Prüfung und den Commit-Operationen gewartet werden soll.
Die folgende Beispielaufgabe wartet fünf Sekunden zwischen der Commit-Prüfung und den Commit-Vorgängen:
- name: Load configuration. Wait 5 seconds between check and commit
juniper.device.config:
load: merge
format: text
src: "build_conf/{{ inventory_hostname }}/junos.conf"
check_commit_wait: 5
comment: "updated using Ansible"