05-Ansible配置
本章节下载: 05-Ansible配置 (210.19 KB)
目 录
Ansible是基于Python开发的配置工具。该工具使用SSH(Secure Shell)协议与网络设备建立连接,实现对网络设备的集中配置管理。
图1-1 Ansible网络架构
· 管理端(Manager):指安装了Ansible环境的主机。关于Ansible软件的安装,请参见Ansible的官方网站。
Ansible管理端支持的远程配置包括创建VLAN等,具体以Comware Python库中支持的业务模块为准。
· 设备端(Device):设备端仅需支持作为SSH服务器,无需安装任何客户端代理软件。设备端和管理端建立SSH连接后,自动执行管理端下发的命令。
H3C设备支持作为Ansible系统的设备端。
Ansible的工作机制为:
(1) 在管理端上编辑配置文件。
(2) 管理端和设备端建立SSH连接。管理端为SSH客户端,设备端为SSH服务器。
(3) 管理端给单个或多个设备下发配置命令。
(4) 设备端自动执行管理端下发的命令来完成配置。
配置Ansible功能前,用户需要先配置如下功能:
· 手工配置设备的系统时间与管理端一致,或配置设备与管理端之间时钟同步,否则可能导致双方无法互通。关于时钟同步的详细配置请参见“网络管理和监控配置指导”中的“NTP”和“PTP”。
· 在设备上配置SSH服务器功能,使管理端能通过SSH连接向设备下发命令。关于SSH服务器的详细配置,请参见“安全配置指导”中的“SSH”。
如图1-2所示,设备开启SSH服务器功能,Ansible管理端(Manager)通过SSH连接来远程配置设备。Ansible管理端安装的操作系统为Ubuntu 16.04、Ansible软件版本为2.0.0.2。
要求通过Ansible管理端在设备上创建VLAN 10和20。
图1-2 Ansible组网图
Ansible管理端创建VLAN的逻辑为:
(1) 判断设备端是否存在VLAN 10和20。
(2) 若设备端存在指定VLAN,则Ansible管理端显示执行结果为ok;否则,在设备上创建指定VLAN,Ansible管理端显示执行结果为changed。
本例中为验证指定VLAN存在的情况,提前在设备上创建VLAN 20。
(1) 配置设备与管理端的IP地址,确保它们之间路由可达。
(2) 配置设备与管理端之间时钟同步。
(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(包括scp、sftp、stelnet和netconf四种服务类型),认证方式为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
(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管理端登录设备时使用的用户名和密码。
[all:vars]
username=abc
password=123456TESTplat&!
# 在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由于检测到设备端已存在、无需创建。
# 查看设备的VLAN信息。
[Device] display vlan
Total VLANs:3
The VLANS include:
1(default), 10, 20
可以看到设备上VLAN 10已被创建。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!