Beheben von Ansible-Fehlern bei der Konfiguration von Junos-Geräten
In den folgenden Abschnitten werden Fehler beschrieben, die bei der Verwendung des Moduls zur Konfiguration von juniper.device.config
Junos-Geräten auftreten können. In diesen Abschnitten werden auch mögliche Ursachen und Lösungen für jeden Fehler vorgestellt.
Beheben von Konfigurations-Timeout-Fehlern
Problem
Beschreibung
Das 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
Verursachen
Die Standardzeit für eine Zeitüberschreitung bei einem NETCONF-RPC 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 übergeben 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.
Beheben von Konfigurationssperrfehlern
Problem
Beschreibung
Das Modul generiert eine Fehlermeldung, die angibt, 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)"}
Verursachen
Ein Fehler bei der Konfigurationssperre kann aus den 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 übernommen.
-
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 Grundursache des Problems an. Wenn ein anderer Benutzer die Konfiguration geändert hat oder über eine exklusive Sperre verfügt, 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 die 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 Konfigurationsfehlern
Problem
Beschreibung
Das Modul generiert eine ConfigLoadError
Fehlermeldung, die angibt, dass die Konfiguration nicht geändert werden kann, da die Berechtigung verweigert wird.
FAILED! => {"changed": false, "msg": "Failure loading the configuraton: ConfigLoadError(severity: error, bad_element: scripts, message: error: permission denied)"}
Verursachen
Das Ansible-Modul generiert diese Fehlermeldung, wenn der Benutzer, der das Modul ausführt, die Berechtigung zum Ändern der Konfiguration hat, aber nicht die Berechtigung, den angeforderten Abschnitt der Konfiguration zu ändern.
Lösung
Um dieses Problem zu beheben, führen Sie entweder das Playbook mit einem Benutzer aus, der über die erforderlichen Berechtigungen verfügt, oder konfigurieren Sie das Junos-Gerät ggf. so, dass dem aktuellen Benutzer die erforderlichen Berechtigungen zum Vornehmen der Änderungen erteilt werden.
Fehlerbehebung bei Commit-Fehlern
Problem
Beschreibung
Das Modul generiert eine CommitError
Fehlermeldung, die angibt, 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)"}
Verursachen
Ein Fehler bei der Konfigurationssperre kann aus den Gründen auftreten, die unter Beheben von Konfigurationssperrfehlern beschrieben sind. Die Meldung "Konfigurationssperre fehlgeschlagen" kann jedoch als Teil von . CommitError
LockError
Diese Situation kann auftreten, wenn ein Task eine Commit-Prüfung und einen Commit-Vorgang anfordert und das Gerät den Commit-Vorgang initiiert, bevor der Commit-Check-Vorgang 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 dem Commit-Vorgang gewartet werden soll.
Die folgende Beispielaufgabe wartet fünf Sekunden zwischen dem Commit-Check- und dem Commit-Vorgang:
- 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"