CLI Configlet 示例
默认 Configlet 是在服务器启动或数据迁移期间添加的。这些默认 Configlet 仅在服务器启动时和数据迁移期间添加。用户可以对默认 Xpath 和 Regex 执行所有常规操作,包括删除操作。
在迁移期间添加默认 Configlet 具有以下条件:
13.1 到 13.3:
如果 13.1 中不存在同名实体,则添加默认 Configlet。
如果 13.1 中存在同名实体,则默认 Configlet 会写。
13.3 至更高版本:
如果在 13.3 中由用户修改或删除默认 Configlet,则不会添加或覆盖默认 Configlet。
示例 1:设置物理接口的描述
Context: /device/interface-information/物理接口此 configlet 面向物理接口。
Configlet
interfaces { $INTERFACE{ description "$DESC"; } }
Parameters
参数 |
细节 |
---|---|
$INTERFACE |
这是一个默认变量,值将是调用 configlet 的接口的名称。如果从 CLI Configlet 工作区调用 configlet,则此为空,因为执行未与特定接口关联。 |
$DESC |
用于获取描述字符串的文本字段。该值在执行时获得。 |
在应用 CLI Configlet 时,用户需要输入参数。例如,用户需要为$DESC输入一个值。
考虑将我们的示例应用于接口 ge-0/1/3,并且以下值作为输入提供。
参数 |
价值 |
---|---|
$DESC |
测试 DESC |
生成的配置字符串为
interfaces { ge-0/1/3{ description "TEST DESC"; } }
示例 2:设置逻辑接口的 vlan,其中 vlan ID 从预定义的值集中选择
Context: /device/配置/接口/单元 此 CLI Configlet 面向 逻辑接口
CLI Configlet
interfaces { $INTERFACE { vlan-tagging; unit $UNIT{ vlan-id $VLANID.get(0); } } }
##Since VLAN id will be given as a selection field, the value would be a collection and to get the first selected value, use .get(0)
参数 |
细节 |
---|---|
$INTERFACE |
这是默认变量,值将是调用 CLI Configlet 的接口名称。如果从 CLI Configlet 工作区调用 CLI Configlet,则此为空值,因为执行未与特定接口关联。 |
$UNIT |
这是一个默认变量,值将是调用 CLI Configlet 的逻辑接口的单元名称。如果从 CLI Configlet 工作区调用 CLI Configlet,则此为空,因为执行未与特定逻辑接口关联。 |
$VLANID |
这是一个选择字段,值将在执行时选择。 Type:选择字段 Selection Values: 0,1,2,3 Default Value: 3 |
在应用 CLI Configlet 时,用户需要输入参数。例如,用户需要为$VLANID输入一个值。
考虑将示例应用于接口 ge-0/1/3.3,以下值作为输入给出。
由于 $VLANID 定义为选择字段,因此用户必须从列表中选择一个值。选项列表由“选择值 Xpath”或“选择值”字段中指定。如值字段中定义的,列表中的默认选择为 3。
参数 |
价值 |
---|---|
$VLANID |
2 |
生成的配置字符串为
interfaces { ge-0/1/3 { vlan-tagging; unit 3{ vlan-id 2; } } }
示例 3:在设备的所有接口上设置说明
Context: NULL 或 /device。以设备为目标,设备上下文可以是 null 或 /device
CLI Configlet
interfaces { #foreach($INTERFACENAME in $INTERFACENAMES) $INTERFACENAME { description "$DESC"; } #end }
参数 |
细节 |
---|---|
$INTERFACENAMES |
一个不可见变量,其 XPath 配置为获取所有接口名称。 Configured values XPath:/device/interface-information/physical-interface/name/text() |
$DESC |
用于获取描述字符串的文本字段。该值在执行时获得。 |
在执行 CLI Configlet 时给出以下输入
参数 |
价值 |
---|---|
$DESC |
测试 DESC |
生成的配置字符串为(当设备有三个物理接口时,ge-0/0/0、ge-0/0/1 和 ge-0/0/2)。
interfaces { ge-0/0/0 { description "TEST DESC"; } ge-0/0/1 { description "TEST DESC"; } ge-0/0/2 { description "TEST DESC"; } }
示例 4:在属于设备的所有 PIC 中设置配置,仅在 FPC 0 的第一个 PIC 上设置某些配置
Context: NULL 或 /device。以设备为目标,设备上下文可以是 null 或 /device
##$ELEMENTS:/device/chassis-inventory/chassis/chassis-module[starts-with(名称,“FPC”)]
/name/text() |/device/chassis-inventory/chassis/chassis-module
[starts-with(name,“FPC”)]/chassis-sub-module[starts-with(name,“PIC”)]/name/text()
##this 将按深度优先遍历顺序列出所有 FPC 和 PIC。
##Hierarchy 阵列是用于存储 FPC-PIC 层次结构的 2 维阵列,每行包含属于单个 FPC 的 PIC。第一个元素是 FPC。
CLI Configlet
#set( $HIERARCHY = [] ) #set( $LOCALARRAY = []) #foreach ( $ELEMENT in $ELEMENTS ) #if($ELEMENT.startsWith("FPC")) ## Create a new array for each FPC with the first element as FPC #set( $LOCALARRAY = [$ELEMENT]) #set( $result = $HIERARCHY.add($LOCALARRAY)) #elseif($ELEMENT.startsWith("PIC")) ## Add the PIC in the current Local array., This is the array of the parent FPC #set( $result = $LOCALARRAY.add($ELEMENT)) #end #end chassis { redundancy { failover on-disk-failure; graceful-switchover; } aggregated-devices { ethernet { device-count 16; } } #foreach ($HIERARCHYELEMENT in $HIERARCHY ) $HIERARCHYELEMENT.get(0) { #set($HIERARCHYELEMENTSIZE = $HIERARCHYELEMENT.size() - 1) #foreach ($HIERARCHYELEMENTINDEX in [1..$HIERARCHYELEMENTSIZE] ) $HIERARCHYELEMENT.get($HIERARCHYELEMENTINDEX){ ## Set the tunnel services setting for the first PIC in FPC 0 #if($HIERARCHYELEMENTINDEX == 1 && $HIERARCHYELEMENT.get(0) == "FPC 0") tunnel-services { bandwidth 1g; } #end traffic-manager { ingress-shaping-overhead 0; egress-shaping-overhead 0; mode ingress-and-egress; } } #end } #end }
Parameters
参数 |
细节 |
---|---|
$ELEMENTS |
这是一个不可见的字段,用户在执行时不能设置值。这些值以预定义的 XPath 的形式产生 Type:不可见字段 Configured Value XPath:/device/chassis-inventory/chassis/chassis-module[开始-with(名称,“FPC”)] /name/text()/device/chassis-inventory/chassis/chassis-module[starts-with (姓名,“FPC”)]/chassis-sub-module[开始-with(name,“PIC”)]/name/text() 此 XPath 返回 FPC 列表,PIC 为“深度优先”遍历顺序。 |
在执行此 CLI Configlet 时,$ELEMENTS param 的 XPath 将返回设备中存在的 FPC 和 PIC 列表。例如,值将是 [FPC 0,PIC 0,PIC 1, FPC 1, PIC 0, PIC 1] 此顺序意味着关联
FPC 0
PIC 0
PIC 1
FPC 1
PIC 0
PIC 1
执行 CLI Configlet 时,我们会获得以下配置字符串
chassis { redundancy { failover on-disk-failure; graceful-switchover; } aggregated-devices { ethernet { device-count 16; } } fpc 1 { pic 0 { tunnel-services { bandwidth 1g; } traffic-manager { ingress-shaping-overhead 0; egress-shaping-overhead 0; mode ingress-and-egress; } } pic 1 { traffic-manager { ingress-shaping-overhead 0; egress-shaping-overhead 0; mode ingress-and-egress; } } } fpc 2 { pic 0 { traffic-manager { ingress-shaping-overhead 0; egress-shaping-overhead 0; mode ingress-and-egress; } } pic 1 { traffic-manager { ingress-shaping-overhead 0; egress-shaping-overhead 0; mode ingress-and-egress; } } } }
示例 5:停止对物理接口的描述
Context: /device/interface-information/物理接口此 CLI Configlet 面向物理接口
CLI Configlet
interfaces { #if( $INTERFACENAME == 'ge-0/0/0') #terminate('Should not change description for ge-0/0/0 interfaces.') #{else} $INTERFACENAME { unit 0 { description "Similar desc"; family ethernet-switching; } } #end }
参数 |
细节 |
---|---|
$INTERFACENAME |
配置了 XPath 以获取所有接口名称的变量。 Configured Value XPath://device/interface-information/physical-interface/name/text() |
使用$INTERFACE时,$UNIT、配置值 Xpath、不可见 Params、选择字段;configlet 编辑器中的变量定义应包含 .get(0),以便从阵列中获取值。例如:$INTERFACE.get (0)
示例 6:从物理接口删除配置
Context: /device/interface-information/物理接口 此 CLI Configlet 可用于删除物理接口上启用的配置,以支持 IEEE 802.3ah 链路故障管理。
CLI Configlet
protocols { oam { ethernet { link-fault-management { delete: interfaces ge-0/0/0; } } } }
请确保在 delete:
正确的层级插入语句,以避免从设备中删除必要的配置。