在配置 Junos 设备时排除 Ansible 错误
以下章节概述了使用 juniper.device.config
模块配置 Junos 设备时可能遇到的错误。这些部分还介绍了每个错误的潜在原因和解决方案。
配置超时错误疑难解答
配置锁定错误疑难解答
问题
描述
该模块将生成一条错误消息,指示无法锁定配置数据库。例如:
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 模块的用户有权修改配置,但没有更改配置请求的部分时,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)"}
原因
由于 配置锁定错误疑难解答中所述的原因,可能会发生配置锁定错误。但是,配置锁定失败消息可能会作为 的一部分生成, CommitError
而不是 LockError
的一部分。当任务请求提交检查和提交操作,并且设备在提交检查操作释放配置锁定之前启动了提交操作时,可能会出现这种情况。
溶液
若要在启动提交操作之前为设备留出足够的时间来完成提交检查操作并释放配置锁定,请将 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"