• 產品與解決方案
  • 行業解決方案
  • 服務
  • 支持
  • 合作夥伴
  • 關於我們

11-網絡管理和監控配置指導

目錄

12-Puppet配置

本章節下載 12-Puppet配置  (301.54 KB)

12-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加密的連接進行通信。

1. Puppet master

Puppet master用於對Puppet agent進行集中管理,其主要功能如下:

·     以守護進程的方式運行,監聽Puppet agent的請求。

·     建立連接時,Puppet master需要對Puppet agent進行認證。

·     集中保存配置腳本,並根據用戶要求將配置腳本下發到Puppet agent。

關於Puppet master的詳細安裝和配置,請參見Puppet官方網站:https://puppetlabs.com

2. 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支持的所有資源類型,請參見2 Puppet資源列表

1.2  Puppet配置限製和指導

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

1.3  Puppet配置準備

配置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”和“PTP”。

1.4  啟動Puppet

1.4.1  配置資源

在Puppet master上創建並編輯資源。關於Puppet master的詳細配置方法,具體請參見Puppet master的安裝和使用指導。

1.4.2  配置Puppet agent

(1)     進入係統視圖。

system-view

(2)     啟動Puppet。

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

缺省情況下,Puppet處於關閉狀態。

參數

說明

--certname=certname

Puppet agent的地址

--server=server

Puppet master的地址

 

執行third-part-process start命令後,Puppet agent將向Puppet master發起認證請求。關於該命令的詳細介紹,請參見“網絡管理和監控”中的“進程監控和維護”。

1.4.3  對Puppet agent簽發證書

在Puppet master上執行puppet cert sign certname命令對Puppet agent簽發證書。簽發成功後,Puppet agent將與Puppet master建立SSL通信,並下載資源對設備進行配置。

1.5  關閉Puppet

1. 配置準備

執行display process all命令查看所有進程信息,“THIRD”字段標識為“Y”的進程為第三方進程,“PID”字段即為進程pid。“COMMAND”字段為“puppet /opt/ruby/bin/pu”的進程為Puppet進程。

2. 配置步驟

(1)     進入係統視圖。

system-view

(2)     關閉Puppet。

third-part-process stop pid pid-list

關於third-part-process stop命令的詳細介紹,請參見“網絡管理和監控”中的“進程監控和維護”。

1.6  Puppet典型配置舉例

1.6.1  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_device

該資源用來配置設備的名稱,並指定設備與Puppet master建立連接時使用的IP地址、SSH用戶名及密碼。

1. 資源屬性

表2-1 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.2  netdev_interface

該資源用來配置接口的屬性。

1. 資源屬性

表2-2 netdev_interface資源屬性描述表

列名

列描述

列類型

數據類型和限製

ifindex

接口索引

索引

數據類型為整型

ensure

接口的屬性

數據類型為符號,取值隻能為undo_shutdown/present

description

接口的描述信息

數據類型為字符串,取值為1~255個字符,區分大小寫

admin

接口管理狀態

數據類型為符號,取值包括:

·     up:接口的管理狀態為開啟

·     down:接口的管理狀態為關閉

speed

接口速率

數據類型為符號,取值包括:

·     auto:表示接口速率處於自協商狀態

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

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

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

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

·     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。

·     管理狀態為開啟。

·     接口速率為自動協商。

·     接口與對端接口的雙工模式為自動協商。

·     端口的鏈路類型為Hybrid類型。

·     以太網接口工作在二層模式。

·     配置三層以太網接口允許通過的MTU的大小為1500。

netdev_interface{'ifindex2':

 ifindex => 2,

 ensure => undo_shutdown,

 description => 'puppet interface 2',

 admin => up,

 speed => auto,

 duplex => auto,

 linktype => hybrid,

 portlayer => bridge,

 mut => 1500,

 require => Netdev _device['device'],

}

2.3  netdev_l2_interface

該資源用來配置二層以太網接口的VLAN屬性。

1. 資源屬性

表2-3 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.4  netdev_lagg

該資源用來創建、修改或刪除聚合組。

1. 資源屬性

表2-4 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.5  netdev_vlan

該資源用來創建、修改或刪除VLAN,並配置VLAN的描述信息。

1. 資源屬性

表2-5 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.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報文

·     14:基於IPv4傳輸協議的組播GRE隧道

·     15:基於IPv6傳輸協議的組播GRE隧道

·     16:基於IPv4傳輸協議的IPsec隧道

·     17:基於IPv6傳輸協議的IPsec隧道

·     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_tunnels和delete_tunnels中同時指定

delete_tunnels

取消VXLAN與隧道接口關聯

數據類型為字符串,隧道接口的編號

一次可以配置多個隧道接口編號,各接口編號間使用逗號分隔。兩個逗號之間可以是一個單獨的接口編號,也可以是一個接口編號範圍。例如:1,2,3,5-8,10-20

使用連字符“-”分隔一個接口編號範圍的開始和結束。

字符串的結尾不能含有逗號、連字符“-”或空格

同一個隧道接口的編號不能在add_tunnels和delete_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保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!

BOB登陆
官網
聯係我們