Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用 Commit Script 宏创建自定义配置语法

提交脚本宏允许您创建自定义配置语法,并将其扩展为标准 Junos OS 配置语句。您的自定义语法用作提交脚本的输入。提交脚本的输出为标准 Junos OS 配置语法,如 图 1 所示。标准 Junos OS 语句会添加到配置中,以便引起预期的操作更改。

图 1:宏观投入和输出 Macro Input and Output

宏使用持久或 瞬时更改 元素将您的自定义语法扩展为标准 Junos OS 配置语句。如果使用持久更改,则自定义语法和标准 Junos OS 语法都出现在候选配置中。如果使用瞬时更改,则自定义语法将显示在候选配置中,而标准 Junos OS 语法仅复制到结账配置中。

本节讨论以下主题:

创建自定义语法

宏的工作方法是 apply-macro 定位候选配置中的语句,并将语句中 apply-macro 指定的值用作参数,以执行提交脚本中定义的一组说明。实际上,您的自定义配置语法具有双重用途。该语法允许您简化配置任务,并且向脚本提供生成复杂配置所需的数据。

要输入自定义语法,请在任何层次结构级别中包含 apply-macro 语句,并指定语句中 apply-macro 所需的任何数据,例如:

您可以在apply-macro配置层次结构的任意级别中包含语句。从这个意义上说,apply-macro语句类似于apply-groups语句。与同一层级的其他apply-macro语句相比,每个apply-macro语句都必须具有唯一名称。

apply-macro 句可包含一组具有可选值的参数。相应的提交脚本可指代宏名称、其参数或参数的值。当脚本检查配置并查找数据时,脚本将执行相应持久或瞬时更改指定的操作。

例如,鉴于以下配置部分,您可以编写脚本说明,根据参数名称生成标准配置:

以下<xsl:for-each>编程说明可在[edit protocols mpls]层次结构级别找到apply-macro包含名为color的参数的语句:

以下指令将创建名为 color 该参数的变量,并将参数值分配给该参数的 color 变量,在这种情况下,该变量为 blue

以下说明会 admin-groups 将语句添加到配置中,并将变量的 color 值分配给组名称:

生成的配置语句如下:

<数据>元素

在语句中自定义语法的 XML 渲染中apply-macro,参数及其值分别包含在 和<value>元素中<name><value><name>元素是元素的<data>兄弟姐妹子女。例如,该apply-macro blue-type-lsp语句包含六个参数,如下所示:

参数和值在 Junos XML 标记元素中呈现,如下所示:

编写 commit 脚本宏时,可通过引用 、 <name>和元素来提取和<value>操作语句中apply-macro包含的<data>参数。

在以下示例中, select 属性的 XPath 表达式提取了作为该元素的子元素中 <value> 包含的 <data> 文本,该元素也包含 <name> 带有文本 color的儿童元素。可变声明会将该元素的 <value> 文本分配给名为 color的变量。

SLAX 等效物包括:

假设已选定元素apply-macroelement Python 对应项是:

扩展自定义语法

在相应的提交脚本中,您包括一个或多个编程说明,用于检查指定层次结构级别上的 apply-macro 语句配置。或者,您可以使用表达 data/name 式在语句中 apply-macro 选择参数。

例如,以下 XSLT 编程说明会选择包含color参数且出现在层次结构级别的[edit protocols mpls]每个apply-macro语句:

SLAX 等效物包括:

Python 等效体跨越多个行以实现可读性,其功能包括:

在扩展宏时,XSLT 脚本中特别有用的编程说明就是<xsl:value-of>说明。此指令选择参数值,并使用它为 Junos OS 语句构建选项值。例如,以下说明将变量、文本-lsp-和当前上下文节点(表示为“”.)的color值串联,以便为 LSP 构建名称。

SLAX 使用下列 (_) 来关联值。

当脚本包含查找必要数据的说明时,您可以为使用数据构建标准 Junos OS 配置的持久或瞬时更改提供内容。

以下瞬态更改将创建管理组,label-switched-path并将语句添加到配置中。标签交换系列将分配一个名称,用于将变量、文本-lsp-和当前选定的 IP 地址(“”.)的color值串联在一起。瞬时更改还会添加语to句并分配当前选定的 IP 地址。最后,瞬时更改会添加admin-group include-any语句并分配变量的color值。

SLAX 等效物包括:

同样在 Python 中:

注意:

这里显示的示例部分。有关完整示例,请参阅 示例:使用 Commit Script 宏创建自定义配置语法

提交配置后,脚本将运行,结果的完整配置如下所示:

上一个示例演示了如何使用简化的自定义语法来配置标签交换系列 (LSP)。如果您的网络设计需要配置大量 LSP,则使用 commit 脚本宏可以节省时间、确保一致性并防止配置错误。

使用宏的其他方法

在“创建自定义语法”中讨论的示例显示了一个宏,该宏使用瞬时更改来创建预期的操作影响。或者,您可以创建一个提交脚本,该脚本使用持久更改将标准 Junos OS 语句添加至候选配置并完全删除自定义语法。这样,不熟悉自定义语法的网络操作员就可以查看配置文件,并将呈现的完整配置视为标准 Junos OS 语句。不过,由于提交脚本宏仍然有效,您可以使用自定义语法快速轻松地创建复杂配置。

除了在创建自定义语法中讨论的应用程序类型之外,您还可以使用宏来防止提交脚本执行任务。例如,在接口中自动添加 MPLS 配置的基本提交脚本会对您明确标记为不需要 MPLS 的接口例外,方法是测试已命名no-mplsapply-macro语句的存在。有关此宏使用示例的示例,请参阅 示例:控制 LDP 配置

您可以将该 apply-macro 语句用作存储外部数据的地方。提交脚本不会检查 apply-macro 语句,因此语 apply-macro 句对设备没有操作影响,但数据可在配置文件中承载,供外部应用程序使用。