• 产品与解决方案
  • 行业解决方案
  • 服务
  • 支持
  • 合作伙伴
  • 新华三人才研学中心
  • 关于我们

11-网络管理和监控配置指导

目录

15-Puppet配置

本章节下载 15-Puppet配置  (281.23 KB)

docurl=/cn/Service/Document_Software/Document_Center/Switches/Catalog/S6800/S6800/Configure/Operation_Manual/H3C_S6800_CG-Release_25xx-6W101/11/201806/1089274_30005_0.htm

15-Puppet配置


1 Puppet

1.1  Puppet简介

Puppet是开源的配置管理工具,用户使用Puppet语言将需要对设备进行的配置写成脚本,并保存到服务器中,再通过服务器把这些配置脚本下发到各网络设备,实现对网络设备的集中配置管理。

1.1.1  Puppet网络架构

图1-1 Puppet网络架构

 

图1-1所示,Puppet采用“服务器端/客户端”网络架构,服务器端称为Puppet master,客户端称为Puppet agent,Puppet master与Puppet agent之间使用通过SSL加密的连接进行通信。

2. Puppet master

Puppet master用于对Puppet agent进行集中管理,其主要功能如下:

·              以守护进程的方式运行,监听Puppet agent的请求。

·              建立连接时,Puppet master需要对Puppet agent进行认证。

·              集中保存配置脚本,并根据用户要求将配置脚本下发到Puppet agent。

说明: 说明

·          Puppet master收到的Puppet agent认证请求无超时时间。

·          关于Puppet master的详细安装和配置,请参见Puppet官方网站:https://puppetlabs.com

 

3. Puppet agent

Puppet网络中,由Puppet master集中管理的设备称为Puppet agent。Puppet agent的工作过程如下:

(1)      Puppet agent启动Puppet进程,并向Puppet master发起认证请求。

(2)      Puppet agent默认会周期性(缺省为2分钟)检查认证是否通过,认证通过后,Puppet agent与Puppet master建立连接。

(3)      Puppet agent与Puppet master建立连接后,Puppet agent周期性(缺省为30分钟)向Puppet master发送请求获取最新配置。

(4)      Puppet agent获取到最新配置,并将最新配置与设备当前运行的配置进行对比,如果设备当前运行配置与获取的配置不同,则运行最新配置。

(5)      Puppet agent完成配置后,向Puppet master反馈配置结果。

H3C设备中,Puppet以Puppet agent方式运行,版本为3.7.3。

1.1.2  Puppet资源

Puppet使用Puppet语言定义配置项,各配置项的集合即为一个配置脚本。在Puppet中,配置项叫做资源。

Puppet划分了多个不同类型的资源,每个类型的资源都由名称和多个属性组成,每个属性对应功能的一个配置,属性值即为该配置应达到的状态。用户在对Puppet资源进行配置时,通过为不同属性赋值,从而指定设备应该达到的状态,而不需要关心如何达到这些状态。例如:用户只需要指定设备创建哪一个VLAN,而不需要关心如何创建该VLAN。如下以创建VLAN 2,并为该VLAN配置描述信息为例介绍Puppet资源的构成:

netdev_vlan{'vlan2':

 ensure => undo_shutdown,

 id => 2,

 description => 'sales-private',

 require => Netdev_device['device'],

 }

在该例中,各字段含义如下:

·              netdev_vlan字段表示资源类型,netdev_vlan表示该资源用来配置VLAN。

·              vlan2为资源名称,在资源文件内,每个资源都有唯一的资源名称,用于标识该资源。

·              ensure、id、description和require分别表示该资源的属性。每个资源都需要一系列属性来确定他们最终达到的状态。

¡  ensure的值为undo_shutdown、id的值为2表示创建VLAN ID为2的VLAN。如果要删除VLAN,则需要将ensure属性的值指定为shutdown。

¡  description的值为sales-private表示配置VLAN2的描述信息为sales-private。

¡  require属性表示netdev_vlan资源依赖于名称为device的netdev_device资源。有些资源之间存在依赖关系,此时需要配置require属性,并在该属性中指定该资源依赖的资源类型和资源名称。

说明: 说明

关于Puppet支持的所有资源类型,请参见附录。

 

1.2  配置Puppet

1.2.1  配置准备

配置Puppet功能前,用户必须先配置如下功能:

·              开启NETCONF over SSH功能:Puppet master通过NETCONF over SSH方式向Puppet agent下发配置。关于NETCONF over SSH功能的详细配置请参见“网络管理和监控配置指导”中的“NETCONF”。

·              配置设备可以通过SSH登录:Puppet master与Puppet agent使用SSH进行通信。关于SSH登录功能的详细配置请参见“基础配置指导”中的“登录设备”。

·              配置Puppet agent与Puppet master之间使用NTP或手工方式进行时钟同步,否则可能导致双方无法互通。关于时钟同步的详细配置请参见“基础配置指导”中的“设备管理”,以及“网络管理和监控配置指导”中的“NTP”。

1.2.2  启动Puppet

分别对Puppet master和Puppet agent进行如下配置:

(1)      在Puppet master上编辑资源。关于Puppet master的详细配置方法,具体请参见Puppet master的安装和使用指导。

说明: 说明

Puppet master上部署的Puppet版本不能低于Puppet agent的Puppet版本。

 

(2)      在设备上执行third-part-process start命令启动Puppet。执行该命令后,Puppet agent将启动Puppet进程,并向Puppet master发起认证请求。

表1-1 启动Puppet

操作

命令

说明

进入系统视图

system-view

-

启动Puppet

third-part-process start name puppet arg agent --certname=certname --server=server

缺省情况下,Puppet处于关闭状态

--certname=certname表示Puppet agent的IP地址

--server=server表示Puppet master的IP地址

关于third-part-process start命令的详细介绍,请参见“网络管理和监控”中的“进程监控和维护”

 

(3)      在Puppet master上执行puppet cert sign certname命令对Puppet agent进行认证。认证通过后,Puppet agent将与Puppet master建立连接,并下载资源对设备进行配置。

1.2.3  关闭Puppet

表1-2 关闭Puppet

操作

命令

说明

进入系统视图

system-view

-

关闭Puppet

third-part-process stop pid pid-list

执行display process all命令查看所有进程信息,“THIRD”字段标识为“Y”的进程为第三方进程,“PID”字段即为进程pid

“COMMAND”字段为“puppet /opt/ruby/bin/pu”的进程为Puppet进程

关于third-part-process stop命令的详细介绍,请参见“网络管理和监控”中的“进程监控和维护”

 

1.3  Puppet典型配置举例

1. 组网需求

Puppet agent与Puppet master相连,设备的IP地址和掩码如图1-2所示。

通过Puppet在设备上创建ID为3的VLAN。

设备作为SSH服务器登录时的用户名为user,密码为passwd。

2. 组网图

图1-2 Puppet配置组网图

 

3. 配置步骤

(1)      在Puppet agent上配置设备通过SSH登录,并开启NETCONF over SSH功能。

(2)      在Puppet master上编辑资源。

# 在服务器/etc/puppet/目录下创建保存配置脚本文件的modules/custom/manifests目录。

$ mkdir -p /etc/puppet/modules/custom/manifests

# 在manifests目录下创建配置脚本文件init.pp,编辑内容如下:

netdev_device{'device':

 ensure => undo_shutdown,

 username => 'user',

 password => 'passwd',

 ipaddr => '1.1.1.1',

 }

netdev_vlan{'vlan3':

 ensure => undo_shutdown,

 id => 3,

 require => Netdev_device['device'],

 }

(3)      在设备上执行third-part-process start命令启动Puppet。

<PuppetAgent> system-view

[PuppetAgent] third-part-process start name puppet arg agent --certname=1.1.1.1 --server=1.1.1.2

(4)      在Puppet master上对Puppet agent的请求进行认证。

$ puppet cert sign 1.1.1.1

Puppet agent通过认证后,Puppet agent将获取Puppet master中的配置脚本到本地,并运行该脚本,实现对设备各功能的配置。


2 附录 Puppet资源列表

2.1  netdev_vlan

该资源用来创建、修改或删除VLAN,并配置VLAN的描述信息。

1. 资源属性

表2-1 netdev_vlan资源属性描述表

列名

列描述

列类型

数据类型和限制

ensure

创建、修改或删除VLAN

数据类型为符号,取值包括:

·          undo_shutdown/present:表示创建或修改VLAN

·          shutdown/absent:表示删除VLAN

id

VLAN ID

索引

数据类型为无符号整型,取值范围为1~4094

description

VLAN描述信息

数据类型为字符串,取值为1~255个字符,区分大小写

 

2. 脚本示例

创建VLAN 2,并将该VLAN的描述信息配置为sales-private。

netdev_vlan{'vlan2':

 ensure => undo_shutdown,

 id => 2,

 description => 'sales-private',

 require => Netdev_device['device'],

}

2.2  netdev_device

该资源用来配置设备的名称,并指定设备与Puppet master建立连接时使用的IP地址、SSH用户名及密码。

1. 资源属性

表2-2 netdev_device资源属性描述表

列名

列描述

列类型

数据类型和限制

ensure

建立或断开设备与Puppet master的NETCONF连接

数据类型为符号,取值包括:

·          undo_shutdown/present:表示建立设备与Puppet master的NETCONF连接

·          shutdown/absent:表示断开设备与Puppet master的NETCONF连接

hostname

设备名称

数据类型为字符串,取值为1~64个字符,区分大小写

ipaddr

设备的IP地址

数据类型为字符串,格式为点分十进制

username

SSH登录用户名

数据类型为字符串,取值1~55个字符,区分大小写

password

SSH用户密码

数据类型为字符串区分大小写。非FIPS模式下,明文密码为1~63个字符;哈希密码为1~110个字符;密文密码为1~117个字符

 

2. 脚本示例

配置设备的名称为PuppetAgent,与Puppet master建立连接时使用的IP地址为1.1.1.1,SSH用户名为user,SSH用户密码为123456。

netdev_device{'device':

 ensure => undo_shutdown,

 username => 'user',

 password => '123456',

 ipaddr => '1.1.1.1',

 hostname => 'PuppetAgent'

}

2.3  netdev_interface

该资源用来配置接口的属性。

1. 资源属性

表2-3 netdev_interface资源属性描述表

列名

列描述

列类型

数据类型和限制

ifindex

接口索引

索引

数据类型为整型

ensure

接口的属性

数据类型为符号取值只能为undo_shutdown/present

description

接口的描述信息

数据类型为字符串,取值1~255个字符,区分大小写

admin

接口管理状态

数据类型为符号,取值包括:

·          up:接口的管理状态为开启

·          down:接口的管理状态为关闭

speed

接口速率

数据类型为符号,取值包括:

·          auto:表示接口速率处于自协商状态

·          10m:表示接口速率为10Mbps

·          100m:表示接口速率为100Mbps

·          155m:表示接口速率为155Mbps

·          622m:表示接口速率为622Mbps

·          1g:表示接口速率为1Gbps

·          2g:表示接口速率为2Gbps

·          2.5g:表示接口速率为2.5Gbps

·          4g:表示接口速率为4Gbps

·          8g:表示接口速率为8Gbps

·          10g:表示接口速率为10Gbps

·          16g:表示接口速率为16Gbps

·          20g:表示接口速率为20Gbps

·          40g:表示接口速率为40Gbps

·          100g:表示接口速率为100Gbps

duplex

以太网接口的双工模式

数据类型为符号,取值包括:

·          full:全双工状态,接口在发送数据包的同时可以接收数据包

·          half:半双工状态,接口同一时刻只能发送数据包或接收数据包

·          auto:接口与对端接口的双工模式为自动协商

仅以太网接口支持该配置

linktype

接口的链路类型

数据类型为符号,取值包括:

·          access:配置接口的链路类型为Access类型

·          trunk:配置接口的链路类型为Trunk类型

·          hybrid:配置接口的链路类型为Hybrid类型

仅二层以太网接口支持该配置

portlayer

以太网接口的工作模式

数据类型为符号,取值包括:

·          bridge:配置以太网接口工作在二层模式

·          route:配置以太网接口工作在三层模式

mtu

三层以太网接口允许通过的MTU的大小

数据类型为整型,取值范围取决于接口的类型,单位为字节

仅三层以太网接口支持该配置

 

2. 脚本示例

配置索引为2的以太网接口的如下属性:

·              接口的描述信息为puppet interface 2。

·              管理状态为开启。

·              接口速率为1Gbps。

·              接口与对端接口的双工模式为自动协商。

·              端口的链路类型为Hybrid类型。

·              以太网接口工作在三层模式。

·              配置三层以太网接口允许通过的MTU的大小为1500。

netdev_interface{'ifindex2':

 ifindex => 2,

 ensure => undo_shutdown,

 description => 'puppet interface 2',

 admin => up,

 speed => 1g,

 duplex => auto,

 linktype => hybrid,

 portlayer => route,

 mut => 1500,

 require => Netdev _device['device'],

}

2.4  netdev_l2_interface

该资源用来配置二层以太网接口的VLAN属性。

1. 资源属性

表2-4 netdev_l2_interface资源属性描述表

列名

列描述

列类型

数据类型和限制

ifindex

二层以太网接口索引

索引

数据类型为整型

ensure

二层以太网接口的VLAN属性

数据类型为符号取值只能为undo_shutdown/present

pvid

端口的缺省VLAN

数据类型为整型,取值范围为1~4094

permit_vlan_list

接口允许通过的VLAN列表

数据类型为字符串

VLAN取值范围为1~4094

一次可以配置多个VLAN,各VLAN间使用逗号分隔。两个逗号之间可以是一个单独的VLAN,也可以是一个VLAN范围。例如:1,2,3,5-8,10-20

使用连字符“-”分隔一个VLAN范围的开始和结束。

字符串的结尾不能含有逗号、连字符“-”或空格

untagged_vlan_list

端口在转发指定的VLAN报文时将去掉VLAN Tag

数据类型为字符串

VLAN取值范围为1~4094

一次可以配置多个VLAN,各VLAN间使用逗号分隔。两个逗号之间可以是一个单独的VLAN,也可以是一个VLAN范围。例如:1,2,3,5-8,10-20

使用连字符-分隔一个VLAN范围的开始和结束

字符串的结尾不能含有逗号、连字符“-”或空格

同一个VLAN不能在untagged_vlan_list和tagged_vlan_list列中同时指定

tagged_vlan_list

转发指定的VLAN报文时将携带VLAN Tag

数据类型为字符串

VLAN取值范围为1~4094

一次可以配置多个VLAN,各VLAN间使用逗号分隔。两个逗号之间可以是一个单独的VLAN,也可以是一个VLAN范围。例如:1,2,3,5-8,10-20

使用连字符“-”分隔一个VLAN范围的开始和结束。

字符串的结尾不能含有逗号、连字符“-”或空格

同一个VLAN不能在untagged_vlan_list和tagged_vlan_list列中同时指定

 

2. 脚本示例

配置索引为3的接口的缺省VLAN为2,允许ID为1~6的VLAN通过,并设置VLAN1~VLAN3的报文通过该接口时去掉VLAN Tag,VLAN4~VLAN6的报文通过该接口时携带VLAN Tag。

netdev_l2_interface{'ifindex3':

 ifindex => 3,

 ensure => undo_shutdown,

 pvid => 2,

 permit_vlan_list => '1-6',

 untagged_vlan_list => '1-3',

 tagged_vlan_list => '4,6'

 require => Netdev _device['device'],

}

2.5  netdev_lagg

该资源用来创建、修改或删除聚合组。

1. 资源属性

表2-5 netdev_lagg资源属性描述表

列名

列描述

列类型

数据类型和限制

group_id

聚合组ID

索引

数据类型为整型

二层聚合组的组ID范围为1~1024

三层聚合组的组ID范围为16385~17408

ensure

创建或删除聚合组

数据类型为符号,取值包括:

·          present:表示创建或修改聚合组

·          absent:表示删除聚合组

linkmode

聚合组工作模式

数据类型为符号,取值包括:

·          static:表示静态聚合

·          dynamic:表示动态聚合

addports

加入聚合组的接口索引列表

数据类型为字符串

一次可以配置多个接口索引,各接口索引间使用逗号分隔。两个逗号之间可以是一个单独的接口索引,也可以是一个接口索引范围。例如:1,2,3,5-8,10-20

使用连字符“-”分隔一个接口索引范围的开始和结束

字符串的结尾不能含有逗号、连字符“-”或空格

同一个接口不能在addports和deleteports列中同时指定

deleteports

从聚合组删除的接口索引列表

数据类型为字符串

一次可以配置多个接口索引,各接口索引间使用逗号分隔。两个逗号之间可以是一个单独的接口索引,也可以是一个接口索引范围。例如:1,2,3,5-8,10-20

使用连字符“-”分隔一个接口索引范围的开始和结束

字符串的结尾不能含有逗号、连字符“-”或空格

同一个接口不能在addports和deleteports列中同时指定

 

2. 脚本示例

配置ID为2的聚合组,将索引为1和2的接口加入聚合组,并从聚合组中删除索引为3和4的接口。

netdev_lagg{ 'lagg2':

 group_id => 2,

 ensure => present,

 addports => '1,2',

 deleteports => '3,4',

 require => Netdev _device['device'],

}

2.6  netdev_vsi

该资源用来创建、修改或删除VSI。

1. 资源属性

表2-6 netdev_vsi资源属性描述表

列名

列描述

列类型

数据类型和限制

vsiname

VSI的名称

索引

数据类型为字符串,取值为1~31个字符,区分大小写

ensure

创建或删除VSI

数据类型为符号,取值包括:

·          present:表示创建或修改VSI

·          absent:表示删除VSI

description

VSI的描述信息

数据类型为字符串,取值为1~80个字符,区分大小写

 

2. 脚本示例

创建名为vsia的VSI。

netdev_vsi{'vsia':

 ensure => present,

 vsiname => 'vsia',

 require => Netdev_device['device'],

}

2.7  netdev_vte

这个资源用来创建或删除隧道。

1. 资源属性

表2-7 netdev_vte资源属性描述表

列名

列描述

列类型

数据类型和限制

id

隧道 ID

索引

数据类型为整型

ensure

创建或删除隧道

数据类型为符号,取值包括:

·          present:表示创建隧道

·          absent:表示删除隧道

mode

隧道模式

数据类型为整型,取值包括:

·          1:运行IPv4协议的GRE 隧道

·          2:运行IPv6协议的GRE 隧道

·          3:IPv4与IPv4之间的隧道

·          4:手动配置的IPv6到IPv4的隧道

·          5:IPv6到 IPv4的自动隧道

·          6:IPv6到IPv4 的6to4隧道

·          7:IPv6到IPv4的ISATAP隧道

·          8:用IPv6封装IPv6 或IPv4报文

·          9:基于UDP passenger协议和IPv4传输协议的DVPN隧道

·          10:基于GRE passenger协议和IPv4传输协议的DVPN隧道

·          11:基于UDP passenger协议和IPv6传输协议的DVPN隧道

·          12:基于GRE passenger协议和IPv6传输协议的DVPN隧道

·          13:CRLSP隧道

·          14:基于IPv4传输协议的组播GRE隧道

·          15:基于IPv6传输协议的组播GRE隧道

·          16:基于IPv4传输协议的IPsec隧道

·          17:基于IPv6传输协议的IPsec隧道

·          22:DS-Lite AFTR隧道

·          23:CRLSP自动隧道

·          24:基于UDP passenger协议和IPv4传输协议的VXLAN隧道

·          25:基于UDP passenger协议和IPv6传输协议的VXLAN隧道

创建隧道时必须指定隧道模式,且创建后不能再对该隧道模式进行修改

 

2. 脚本示例

创建ID为2、基于UDP passenger协议和IPv4传输协议的VXLAN隧道。

netdev_vte{'vte2':

 ensure => present,

 id => 2,

 mode => 24,

 require => Netdev_device['device'],

}

2.8  netdev_vxlan

该资源用来创建、修改或删除VXLAN。

1. 资源属性

表2-8 netdev_vxlan资源属性描述表

列名

列描述

列类型

数据类型和限制

vxlan_id

VXLAN ID

索引

数据类型为整型,取值范围为0~16777215

ensure

创建或删除VXLAN

数据类型为符号,取值包括:

·          present:表示创建或修改VXLAN

·          absent:表示删除VXLAN

vsiname

VSI的名称

数据类型为字符串,取值为1~31个字符,区分大小写

创建VSI时必须指定该列,且该列在创建后不能修改

add_tunnels

配置VXLAN与隧道接口关联

数据类型为字符串

一次可以配置多个隧道接口编号,各接口编号间使用逗号分隔。两个逗号之间可以是一个单独的接口编号,也可以是一个接口编号范围。例如:1,2,3,5-8,10-20

使用连字符“-”分隔一个接口编号范围的开始和结束

字符串的结尾不能含有逗号、连字符“-”或空格

同一个隧道接口的编号不能在add_tunnelsdelete_tunnels中同时指定

delete_tunnels

取消VXLAN与隧道接口关联

数据类型为字符串,隧道接口的编号

一次可以配置多个隧道接口编号,各接口编号间使用逗号分隔。两个逗号之间可以是一个单独的接口编号,也可以是一个接口编号范围。例如:1,2,3,5-8,10-20

使用连字符“-”分隔一个接口编号范围的开始和结束。

字符串的结尾不能含有逗号、连字符“-”或空格

同一个隧道接口的编号不能在add_tunnelsdelete_tunnels中同时指定

 

2. 脚本示例

创建ID为10的VXLAN,添加名为vsia的VSI,并将隧道接口7和8与该VXLAN关联。

netdev_vxlan{'vxlan10':

 ensure => present,

 vxlan_id => 10,

 vsiname => 'vsia',

 add_tunnels => '7-8',

 require=>Netdev_device['device'],

}

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!

新华三官网
联系我们