Junosデバイスの設定時に発生するAnsibleエラーのトラブルシューティング
juniper.device.config Ansibleモジュールを使用して、Junos OSを実行しているデバイスまたはJunos OS Evolvedを実行しているデバイスを設定するときに発生するエラーをトラブルシューティングします。
以下のセクションでは、 juniper.device.config Ansible モジュールを使用して、Junos OSを実行しているデバイスまたはJunos OS Evolvedを実行しているデバイスの設定を管理するときに発生する可能性のあるエラーについて説明します。また、各エラーの考えられる原因と解決策についても説明します。
設定タイムアウトエラーのトラブルシューティング
問題点
説明
juniper.device.configモジュールは、TimeoutExpiredErrorエラーメッセージを生成し、デバイス設定の更新に失敗します。
ncclient.operations.errors.TimeoutExpiredError: ncclient timed out while waiting for an rpc reply
原因
NETCONF RPCのタイムアウトのデフォルト時間は30秒です。大規模な設定変更はこの値を超える場合があり、設定をアップロードしてコミットする前に操作がタイムアウトします。
ソリューション
デフォルトのRPCタイムアウト間隔よりも長いコミット時間を必要とする可能性のある設定変更に対応するには、モジュールの timeout 引数を適切な値に設定し、プレイブックを再実行します。
設定ロックエラーのトラブルシューティング
問題点
説明
juniper.device.configモジュールは、設定データベースをロックできないことを示すエラーメッセージを生成します。次に例を示します。
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 メッセージ文字列は、問題の根本原因を示します。別のユーザーが設定を変更したか、または排他的ロックが設定されている場合は、変更がコミットされるかロックが解除されるまで待ってから、プレイブックを再実行します。原因がユーザーにデバイスの設定権限がないことである場合は、必要な権限を持つユーザーでプレイブックを実行するか、必要に応じて、現在のユーザーに変更を行うために必要な権限を与えるようにJunosデバイスを設定します。
設定の読み込みエラーのトラブルシューティング
問題点
説明
juniper.device.configモジュールは、権限が拒否されたため設定を変更できないことを示すConfigLoadErrorエラーメッセージを生成します。
FAILED! => {"changed": false, "msg": "Failure loading the configuraton: ConfigLoadError(severity: error, bad_element: scripts, message: error: permission denied)"}
原因
Ansibleモジュールは、このエラー・メッセージを生成します。モジュールを実行するユーザーに設定を変更する権限はあるが、設定の要求されたセクションを変更する権限は持っていません。
ソリューション
この問題を解決するには、必要な権限を持つユーザーを使用してプレイブックを実行するか、必要に応じて、変更を行うために必要な権限を現在のユーザーに付与するようにJunosデバイスを構成します。
コミットエラーのトラブルシューティング
問題点
説明
juniper.device.configモジュールは、設定ロックエラーによりコミット操作が失敗したことを示す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 パラメーターを適切な値に設定し、プレイブックを再実行します。 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"