扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在前几篇文章中,我为您介绍了如何穿梭于JUNOS配置的层级结构,以及每当您点击空格键进入配置行时,系统会如何检查语法的正确性。
但您有时会遇到这种情况:每行配置都是正确的,但配置仍存在错误。也就是说,命令行结合在一起无法正常运行或者行与行之间丢失了一些东西。
在下面的例子中,我将为您设置一个极为简单的BGP配置。首先,我从层级结构的顶部移动到名为“External_Peer”的BGP对等组。我没有使用set命令来创建这个组群,而是简单地移动到这个级别,使用已经创建好的组群。接下来,我将临点规定为172.16.1.5,然后将面向这个组群的临点自治系统规定为65502。最后,我规定使用名为External_Peer_Policy的输出策略来修改或过滤发送到(或输出到)临点的路由。完成这些工作后,我返回到配置层级结构的顶部。
JUNOS接受了每行配置项目,这表示配置没有任何错误(我非常高兴):
[edit]
jeff@Juniper5# edit protocols bgp group External_Peer
[edit protocols bgp group External_Peer]
jeff@Juniper5# set neighbor 172.16.1.5
[edit protocols bgp group External_Peer]
jeff@Juniper5# set peer-as 65502
[edit protocols bgp group External_Peer]
jeff@Juniper5# set export External_Peer_Policy
[edit protocols bgp group External_Peer]
jeff@Juniper5# top
[edit]
jeff@Juniper5#
但是,当我试图提交配置时,遭到了JUNOS的拒绝:
[edit]
jeff@Juniper5# commit
error: Policy error: Policy External_Peer_Policy referenced but not defined
[edit protocols bgp group External_Peer]
'export'
BGP: export list not applied
error: configuration check-out failed
[edit]
jeff@Juniper5#
这意味着我在BGP配置中引用的输出策略不存在于整个配置中(应该能够在[edit policy-options]级别中的某个位置找到)。
当commit命令被调用后,JUNOS将运行一系列脚本来检查备用配置。如果发现某些情况,例如我刚刚列举的情况,其中不同的配置行无法进行协作,那么将导致提交失败,您会看到解释提交失败原因的错误消息。
顺便说一下,您可使用commit check命令来指挥JUNOS在对备用配置运行脚本时不执行提交任务。如果您正向配置中添加一些新语句并希望脚本不时对您的工作进行检查时,这种做法将非常有用。
自JUNOS面市以来,我们一直基于所观察到的配置不一致性问题或者JUNOS开发团队能够预测的结果,来为JUNOS添加这些类型的错误检查脚本。
除了错误检查和不一致性外,此类脚本还可用于验证配置是否遵从最佳实践。但是,是哪些最佳实践呢?每个网络都不相同,您所制订的配置标准与我设置的配置标准可能也会不同。
JUNOS开发人员不可能编写出适合所有配置的脚本,因此,他们选择通过名为提交脚本的功能为JUNOS用户编写了基本的开放脚本。
提交脚本功能允许您编写自己的脚本,以便每当调用commit命令时都能对备用配置进行检查。这些定制脚本能够与您在运行commit命令时启动的错误和不一致性检查脚本进行协作,但它们是专为您自己的网络所编写的,不仅用于确保配置的正确性,还用于确保配置满足您所定义的网络标准:
您可能要求所有的操作人员为每个接口提供说明,包括这个接口的特定创建信息,以便开展维护和故障排除工作。您可通过编写提交脚本来执行这项任务。
您的网络可能要求RSVP-TE运行在所有的SONET接口上。您可编写提交脚本来查找路由器上的所有SONET接口并验证是否每个接口都在[edit protocols mpls]层级结构中。
您的配置标准可能要求从全局上为所有的BGP开启某些跟踪选项(类似IOS debug的语句,用于收集特定流量和行为的信息并将其添加到文件中),为每个BGP对等组启动另外一些跟踪选项,同时为对等组中的每个临点启动剩余的跟踪选项。您要求每个临点都运行MD5验证机制,您可编写提交脚本来实施全面检查。
您的提交脚本可以简单到只执行检查任务,以确保每个配置都满足标准安全要求,并且每当有人登录系统时都会显示配置。
您希望配置文件带有某些特性,并使用特定的组织结构。您可编写定制提交脚本来检查您所规定的参数,防止未通过检查的备用配置变为主用配置。
您可使用可扩展样式表语言转换(XSLT)或样式表语言替换语法(SLAX)等脚本编制语言来编写定制脚本。如果您创建的脚本能够运行并发现了违反规定的某些例外,脚本将停止提交活动并显示错误或报警消息(还包括您的规范),或者向系统日志服务器发送定制消息。
此外,脚本还能纠正已经出现的配置文件错误,以确保配置文件满足配置标准的要求。脚本通过宏执行这项任务,这时,您将看到提交脚本的值:网络中不同路由器之间的配置不一致性,甚至相同配置中不同部分之间的不一致性,都将减慢操作人员了解各种配置的速度。由于操作人员很容易误解或者丢失其他人不按标准编写的配置文件,这经常会成为错误的根源。
您可使用配置脚本来确保所有配置始终都能100%地满足配置标准的要求。
这些宏程序则是用于简化网络运行的极为强大的工具。我将在下篇文章中进行说明。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者