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

23-可编程网络管理配置指导

目录

05-Ansible配置

本章节下载 05-Ansible配置  (218.80 KB)

05-Ansible配置


1 Ansible

1.1  Ansible简介

Ansible是基于Python开发的配置工具。该工具使用SSH(Secure Shell)协议与网络设备建立连接,实现对网络设备的集中配置管理。

1.1.1  Ansible网络架构

图1-1所示,Ansible系统由管理端和设备端组成。

图1-1 Ansible网络架构

 

·     管理端(Manager):指安装了Ansible环境的主机。关于Ansible软件的安装,请参见Ansible的官方网站。

Ansible管理端支持的远程配置请以Comware Python库中支持的业务模块为准。

·     设备端(Device):设备端仅需支持作为SSH服务器,无需安装任何客户端代理软件。设备端和管理端建立SSH连接后,自动执行管理端下发的命令。

H3C设备支持作为Ansible系统的设备端。

1.1.2  Ansible工作机制

Ansible的工作机制为:

(1)     在管理端上编辑配置文件。

(2)     管理端和设备端建立SSH连接。管理端为SSH客户端,设备端为SSH服务器。

(3)     管理端给单个或多个设备下发配置命令。

(4)     设备端自动执行管理端下发的命令来完成配置。

1.2  Ansible配置准备

配置Ansible功能前,用户需要先配置如下功能:

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

·     在设备上配置SSH服务器功能,使管理端能通过SSH连接向设备下发命令。关于SSH服务器的详细配置,请参见“安全配置指导”中的“SSH”。

1.3  Ansible典型配置举例

1.3.1  Ansible基本组网配置举例

1. 组网需求

图1-2所示,设备开启SSH服务器功能,Ansible管理端(Manager)通过SSH连接来远程配置设备。Ansible管理端安装的操作系统为Ubuntu 16.04、Ansible软件版本为2.0.0.2。

要求通过Ansible管理端在设备上创建VLAN 10和20。

图1-2 Ansible组网图

 

2. 配置思路

Ansible管理端创建VLAN的逻辑为:

(1)     判断设备端是否存在VLAN 10和20。

(2)     若设备端存在指定VLAN,则Ansible管理端显示执行结果为ok;否则,在设备上创建指定VLAN,Ansible管理端显示执行结果为changed。

本例中为验证指定VLAN存在的情况,提前在设备上创建VLAN 20。

3. 配置准备

(1)     配置设备与管理端的IP地址,确保它们之间路由可达。

(2)     配置设备与管理端之间进行时钟同步。

4. 配置设备端

(1)     配置设备作为SSH服务器。

# 生成本地密钥对。关于本地密钥对的详细配置,请参见“安全配置指导”中的“SSH”。

# 创建本地用户abc,配置该用户的密码,授权用户角色为network-admin,用户可以使用的服务为SSH、HTTP和HTTPS。

<Device> system-view

[Device] local-user abc

[Device-luser-manage-abc] password simple 123456TESTplat&!

[Device-luser-manage-abc] authorization-attribute user-role network-admin

[Device-luser-manage-abc] service-type ssh http https

[Device-luser-manage-abc] quit

# 设置SSH客户端登录用户线的认证方式为AAA认证,用户角色为network-admin。

[Device] line vty 0 63

[Device-line-vty0-63] authentication-mode scheme

[Device-line-vty0-63] user-role network-admin

[Device-line-vty0-63] quit

# 开启NETCONF over SSH服务器功能。

[Device] netconf ssh server enable

# 开启Stelnet服务器功能。

[Device] ssh server enable

# 配置SSH用户abc的服务类型为all(包括scpsftpstelnetnetconf四种服务类型),认证方式为password认证。

[Device] ssh user abc service-type all authentication-type password

# 开启SFTP服务器功能。

[Device] sftp server enable

# 开启SCP服务器功能。

[Device] scp server enable

(2)     创建用于验证的VLAN。

# 在设备上创建VLAN 20。

[Device] vlan 20

[Device-vlan20] quit

# 查看设备的VLAN信息。

[Device] display vlan

 Total VLANs:2

 The VLANS include:

 1(default), 20

5. 配置Ansible管理端

(1)     配置静态域名解析。

# 打开/etc/hosts文件,新增设备的IP地址及对应的主机名Device。

192.168.1.1    Device

(2)     安装Ansible环境以及Python库。

# 在Host上安装Ansible。

$ sudo apt-get install ansible

# 从github下载最新Comware Python库的源代码。

$ sudo git clone https://github.com/HPENetworking/pyhpecw7

# 安装Comware Python库。

$ cd pyhpecw7-master

$ sudo pip install pyhpecw7

$ sudo chmod 777 setup.py

$ sudo python setup.py install

说明

如果在安装过程中出现缺少某些组件的报错,可根据需要使用命令$ sudo apt-get install xxx安装缺少的组件(xxx为缺少的组件名称)。

 

# 使用find命令在根路径下查找namespaces.py文件,在所有查找结果中,如果文件的路径名中含有“pyhpecw7”字符,则打开该文件并修改为如下内容:

HPDATA="http://www.h3c.com/netconf/data:1.0"

HPDATA_C='{'+HPDATA+'}'

NETCONFBASE="urn:ietf:params:xml:ns:netconf:base:1.0"

NETCONFBASE_C='{'+NETCONFBASE+'}'

HPCONFIG="http://www.h3c.com/netconf/data:1.0"

HPCONFIG_C='{'+HPCONFIG+'}'

HPACTION="http://www.h3c.com/netconf/data:1.0"

HPACTION_C='{'+HPACTION+'}'

# 从github下载Ansbile模块。

$ sudo git clone https://github.com/HPENetworking/ansible-hpe-cw7

# 在ansible-hpe-cw7-master/hosts文件中修改Ansible管理端登录设备时使用的用户名为abc,密码为123456。

[all:vars]

username=abc

password=123456

# 在ansible-hpe-cw7-master/hosts文件中修改[switches]字段值为主机名Device。该主机名需要与/etc/hosts文件中配置的主机名一致。

[switches]

Device

(3)     编写配置脚本。

# 创建vlans.yml文件,编写如下代码。

---

- name: VLAN automation with Ansible on Devices

  hosts: switches

  gather_facts: no

  connection: local

 

  tasks:

    - name: ensure VLAN 10 exists

      comware_vlan: vlanid=10 name=VLAN10 descr=LOCAL_SEGMENT username={{ username }} password={{ password }} hostname={{ inventory_hostname }}

 

    - name: ensure VLAN 20 exists

      comware_vlan: vlanid=20 state=present username={{ username }} password={{ password }} hostname={{ inventory_hostname }}

(4)     执行脚本。

# 赋予执行权限。

$ sudo chmod 777 vlans.yml

# 使用ansible-playbook命令执行vlans.yml。

$ sudo ansible-playbook -i hosts vlans.yml

 

PLAY [VLAN automation with Ansible on Devices] *********************************

 

TASK [ensure VLAN 10 exists] ***************************************************

changed: [Device]

 

TASK [ensure VLAN 20 exists] ***************************************************

ok: [Device]

 

PLAY RECAP *********************************************************************

Device                      : ok=2    changed=1     unreachable=0    failed=0

可以看到Ansible管理端完成了创建VLAN 10的任务,VLAN 20由于检测到设备端已存在、无需创建。

6. 验证结果

# 查看设备的VLAN信息。

[Device] display vlan

 Total VLANs:3

 The VLANS include:

 1(default), 10, 20

可以看到设备上VLAN 10已被创建。

 

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

新华三官网
联系我们