Junosデバイス設定時のAnsibleエラーのトラブルシューティング
以下のセクションでは、 juniper.device.config
モジュールを使用して Junos デバイスを設定する際に発生する可能性のあるエラーの概要を説明します。これらのセクションでは、各エラーの潜在的な原因と解決策も示します。
設定タイムアウトエラーのトラブルシューティング
問題
形容
モジュールは TimeoutExpiredError
エラー メッセージを生成し、デバイス設定の更新に失敗します。
ncclient.operations.errors.TimeoutExpiredError: ncclient timed out while waiting for an rpc reply
原因
NETCONF RPC がタイムアウトするデフォルトの時間は 30 秒です。大規模な設定変更は、この値を超える可能性があり、設定をアップロードしてコミットする前に操作がタイムアウトする可能性があります。
解決
デフォルトの RPC タイムアウト間隔よりも長いコミット時間を必要とする設定変更に対応するには、モジュールの timeout
引数を適切な値に設定し、Playbook を再実行します。
設定ロックエラーのトラブルシューティング
問題
形容
モジュールは、設定データベースをロックできないことを示すエラーメッセージを生成します。例えば:
FAILED! => {"changed": false, "msg": "Unable to open the configuration in exclusive mode: LockError(severity: error, bad_element: None, message: configuration database modified)"}
又は
FAILED! => {"changed": false, "msg": "Unable to open the configuration in exclusive mode: LockError(severity: error, bad_element: lock-configuration, message: permission denied)"}
原因
構成ロック・エラーは、以下の理由で発生する可能性があります:
-
別のユーザーが構成に排他ロックをかけています。
-
別のユーザーが設定データベースを変更しましたが、まだ変更をコミットしていません。
-
Ansibleモジュールを実行しているユーザーには、デバイスを設定する権限がありません。
解決
LockError
メッセージ文字列は、通常、問題の根本原因を示します。別のユーザーが設定を変更した場合、または設定に排他ロックがある場合は、変更がコミットされるかロックが解除されるまで待ってから、Playbook を再実行します。原因が、ユーザーがデバイスを設定する権限を持っていないことである場合は、必要な権限を持つユーザーでプレイブックを実行するか、必要に応じて、変更を行うために必要な権限を現在のユーザーに付与するようにJunosデバイスを設定します。
設定の読み込みエラーのトラブルシューティング
問題
形容
モジュールは、権限が拒否されたため設定を変更できないことを示す ConfigLoadError
エラーメッセージを生成します。
FAILED! => {"changed": false, "msg": "Failure loading the configuraton: ConfigLoadError(severity: error, bad_element: scripts, message: error: permission denied)"}
原因
Ansible モジュールは、モジュールを実行しているユーザーが設定を変更する権限を持っているが、設定の要求されたセクションを変更する権限を持っていない場合に、このエラーメッセージを生成します。
解決
この問題を解決するには、必要なパーミッションを持つユーザーでプレイブックを実行するか、必要に応じて、現在のユーザーに変更を行うために必要なパーミッションを付与するようにJunosデバイスを設定します。
コミットエラーのトラブルシューティング
問題
形容
モジュールは、設定ロック エラーによりコミット操作が失敗したことを示す CommitError
エラー メッセージを生成します。
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)"}
原因
設定ロック エラーは、「設定ロック エラーのトラブルシューティング」で説明されている理由で発生することがあります。ただし、構成ロック失敗メッセージが、LockError
ではなくCommitError
の一部として生成される場合があります。この状況は、タスクがコミットチェックとコミット操作を要求し、コミットチェック操作によって設定ロックが解除される前にデバイスがコミット操作を開始した場合に発生する可能性があります。
解決
デバイスがコミットチェック操作を完了し、コミット操作を開始する前に設定ロックを解除するのに十分な時間を確保するには、モジュールの check_commit_wait
パラメーターを適切な値に設定し、Playbook を再実行します。 check_commit_wait
値は、コミット・チェックとコミット操作の間の待機時間(秒)です。
次のサンプル タスクは、コミット チェックとコミット操作の間に 5 秒間待機します。
- 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"