排除配置 Junos 设备时的 Ansible 错误
以下各节概述了使用集合中的模块或juniper_junos_config
角色中的Juniper.junos
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。如果问题的原因是用户没有配置设备的权限,请与具有必要权限的用户一起执行 playbook,或者在适当的情况下配置 Junos 设备以向当前用户授予进行更改所需的权限。
排查配置加载错误
问题
描述
模块将生成一条 ConfigLoadError
错误消息,指示无法修改配置,因为权限被拒绝。
FAILED! => {"changed": false, "msg": "Failure loading the configuraton: ConfigLoadError(severity: error, bad_element: scripts, message: error: permission denied)"}
原因
当执行 Ansible 模块的用户有权修改配置,但无权更改所请求的配置部分时,将生成此错误消息。
解决 方案
要解决此问题,请与具有必要权限的用户一起执行 playbook,或者在适当的情况下,配置 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
参数设置为适当的值并重新运行 playbook。该 check_commit_wait
值是在提交检查和提交操作之间等待的秒数。
以下示例任务在提交检查和提交操作之间等待五秒钟:
- 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"