Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

运行 Junos OS 的设备的 Puppet 清单

使用 netdev 资源创建 Puppet 清单

Puppet 清单是用 Puppet 语言编写的文件,用于描述所需的系统配置。Puppet 主设备将清单编译为目录。代理节点会定期下载目录并进行所需的更改,以便生成的系统配置与所需的配置匹配。

Puppet 清单文件由 .pp 扩展标识。在清单中,您使用 Puppet 语言描述在每个代理节点上管理的资源。

netdev_stdlib模块定义了为各种网络资源建模属性的资源类型。该模块包括网络设备、物理接口、第 2 层交换服务、VLAN 和链路聚合组 (LAG) 的资源定义。有关可用资源类型的列表,请参阅 Puppet netdev 资源

在管理运行 Junos OS 的设备时,您安装在 Puppet 主设备上的瞻博网络 netdev_stdlib_junos 模块包含特定于 Junos OS 的 Puppet 提供商代码,该代码可实施 netdev_stdlib 模块中定义的资源类型。该模块从 netdev_stdlib_junos 模块 2.0.2 版开始,还提供了 apply_group 定义的资源类型,使您能够管理 netdev_stdlib模块中 没有类型规格的网络资源。有关详细信息,请参阅 适用于 Junos OS apply_group 定义资源类型的 Puppet

以下示例 Puppet 清单适用于带有主机名 jd.example.com 的交换机。该清单定义了三个 VLAN(粉红、绿色和红色),分别带有 VLAN ID 105、101 和 103。该清单定义 ge-0/0/20 中继接口接受粉红和绿色 VLAN 的标记数据包。默认情况下,ge-0/0/19 接口将配置为接受未标记数据包的接入端口。红色 VLAN 是 ge-0/0/19 和 ge-0/0/20 的本征 VLAN。

示例:为运行 Junos OS 的设备创建 Puppet 清单

此示例说明如何创建示例 Puppet 清单以管理运行 Junos OS 的 Puppet 代理节点上的 VLAN 和第 2 层接口。该清单利用 Puppet 语言中的类定义和变量来创建更灵活和可扩展的清单文件。

要求

  • 运行 Junos OS 版本 12.3R2 或更高版本 12.3 版本的 EX 系列交换机,安装了 jpuppet 软件包和 Puppet 的 Junos OS 用户帐户。

  • 安装有瞻博网络 NETCONF Ruby 宝石和 瞻博网络/netdev_stdlib_junos Puppet 模块的 Puppet 主设备。

概述

在此示例中,您创建了一个 Puppet 清单,用于管理在“数据库”Pod 中运行 Junos OS 的交换机上的 VLAN 和第 2 层接口。netdev_stdlib模块定义netdev_devicenetdev_vlan了此示例中用于对运行 Junos OS 的设备上的连接属性、VLAN 和第 2 层 接口进行建模的、和netdev_l2_interface资源类型。

Puppet 类定义 database_switch包含作为“数据库”Pod 成员的交换机的设置。在类定义中,您必须定义为 netdev_device 目标交换机的连接属性建立模型的资源。争论 netdev_device$hostname 变量,由 Facter 提供。在类定义中,您还可以为交换机创建 netdev_vlannetdev_l2_interface 资源。

为了创建必要的资源,此示例使用 Puppet 功能 create_resources,将散列转换为指定类型的一组资源。该功能有两个必需参数,即资源类型和一个描述资源标题和参数的散列表。可选的第三个论点包含应用于每个新资源的默认参数哈希表。如果在两个散列参数中指定相同参数,则强制论点中的参数值将替代可选参数中的默认值。

在此示例中,您会构建变量$vlans$db_ports,并且$db_port_settings包含用于描述代理节点上的 VLAN 和第 2 层接口资源的散热。散列值必须是该资源类型的 netdev 模块中定义的属性。您可使用哈希作为 Puppet 功能的create_resources参数来创建添加到目录中的资源。

$vlans 变量是定义在 100 到 104 范围内跨越 VLAN ID 的五个 VLAN 资源的散列。每个散列条目将资源名称(VLAN 名称)定义为散列密钥,并将资源属性(vlan_id和说明)定义为散列值。例如:

$db_ports 量是定义将管理哪些交换机接口的散列, $db_port_settings 而变量则定义了这些端口的默认设置。默认设置将接口配置为中继接口,接受来自蓝色、绿色和黄色 VLAN 的标记数据包,并将红色 VLAN 作为本机 VLAN。

构建定义资源的散热之后,使用该create_resources功能创建资源。您可以使用以资源类型和$vlan散列为参数的 create_resources Puppet 功能netdev_vlan来创建 VLAN 资源。您可使用以资源类型和$db_ports散列为参数的 create_resourcesPuppet 功能netdev_l2_interface来创建第 2 层接口资源。此外,还包括$db_port_settings哈希作为包含这些端口默认设置的可选第三个论点。

配置

逐步过程

要创建示例 Puppet 清单以管理运行 Junos OS 的 Puppet 代理节点上的 VLAN 和第 2 层接口:

  1. 创建名为 database_switch.pp 的文件

  2. 定义 Puppet 代理将在运行 Junos OS 的代理节点上创建的 VLAN。

  3. database_switch 该类创建代码块,该代码块将包含“数据库”Pod 中交换机的设置。

  4. database_switch 类定义中,定义 netdev_device 交换机的资源。

  5. database_switch类定义中,使用以资源类型和$vlans散列为参数的 create_resources Puppet 功能netdev_vlan来创建 VLAN 资源。

  6. database_switch 类定义中,定义 成员交换机上的第 2 层接口和端口设置。

  7. database_switch类定义中,使用以资源类型、$db_ports散列和$db_port_settings散列为参数的 create_resources Puppet 功能netdev_l2_interface来创建第 2 层接口资源。

  8. 使用该节点的类定义。

结果

在 Puppet 主设备上,查看完成的 database_switch.pp 清单文件。如果文件未显示预期的代码,请重复此示例中的说明,以更正清单。

在 Puppet 代理应用配置更改之后,生成的配置更新包括:

验证

验证 Puppet 清单

目的

在 Puppet 代理应用配置更改后,验证 Puppet 代理节点是否具有正确的配置。

行动

查看配置或配置差异,并验证 Puppet 代理是否进行了正确的更改。要查看完整配置,请使用 show configuration 操作模式命令。要查看配置差异,请使用 show configuration | compare rollback rollback-number 操作模式命令。

意义

如果配置更改包括在清单中定义的更新,则会正确创建和应用该清单。

故障 排除

配置问题故障排除

问题

代理节点上的配置不会反映清单中请求的更改。

如果未看到配置的任何更新,则交换机可能不包含在托管代理节点中,或者 Puppet 代理可能没有下载最新目录并执行配置更新。如果您看到配置更新,但未正确,则 Puppet 清单可能包含不正确的信息。

解决 方案

确保 Puppet 主设备配置正确,以便为该节点创建目录。如果 Puppet 主设备配置正确,请查看 Puppet 清单文件,确保它包含正确的配置更改,并在必要时更正清单。

如果已启用报告,还可查看 Puppet 主设备上的日志文件,以验证代理节点是否下载了最新目录并提交配置更改。如果 Puppet 代理无法锁定配置数据库,无法因语法错误而上传配置更改,或者无法在设备上提交配置,配置将保持不变。