注:本文为 “Ansible 管理华为 CE 交换机” 相关文章合辑。
使用 CloudEngine - Ansible 批量管理华为 CE 交换机
wsf535 IP 属地:贵州
2018.02.05 15:26:05
总体介绍
Ansible 是一个开源的自动化运维工具,AnsibleWorks 成立于 2012 年,由自动化工具 Cobbler 及 Func 的开发者 Michael DeHaan 创建,基于 Python 开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible 能够安装在包括 Linux、BSD、Mac OS X 等平台。
Ansible 的 CloudEngine 模块是一个开源的,社区支持的应用程序。使用 CloudEngine 模块,可实现对华为数据中心 CE 系列交换机的自动化部署和配置。 您可以从 https://github.com/HuaweiSwitch/CloudEngine-Ansible 下载。
CloudEngine-Ansible 环境安装:
官方 git 地址:https://github.com/HuaweiSwitch/CloudEngine-Ansible
测试最新版本与 2.3 版本都有点问题,(需要加 export ANSIBLE_HOST_KEY_CHECKING=false 这个参数,不然连接会报错) 功能正常的是 2.0 版本
以下是在 centos 7 上的安装:
环境准备:
安装 ansible, 因 2.0 版本支持的 ansible 是 2.2 所以直接安装 ansible2.2, 通过 pip 方式安装
安装 python-devel (不安装,在安装 ansible 会报错)
yum install python-devel
安装 pip
wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py
pip install ansible==2.2
安装 ncclient
pip install ncclient
下载安装 ce-ansible:
下载
wget https://github.com/HuaweiSwitch/CloudEngine-Ansible/archive/v0.2.0.zip
解压
unzip v0.2.0.zip
cd CloudEngine-Ansible-0.2.0/
sh install.sh
交换机端的配置:(使用的是 ce5855)
# 配置一个 SSH 用户
aaa
local-user wsf535 password irreversible-cipher $1a$}") FR_EZ!*$q9Y/I (iUOXbg~g!!cLuOe9:-OV=;XA*vD9NQ:tk5$
local-user wsf535 service-type ssh
local-user wsf535 level 15
#
ssh user wsf535 authentication-type password
ssh user wsf535 service-type all
ssh authorization-type default aaa
#
user-interface vty 0 4
authentication-mode aaa
protocol inbound ssh
# 开启 netconf(关键,不开启会导致配置命令失败)
snetconf server enable
使用及排错:
如果 centos 系统没连接过交换机会报以下错
An exception occurred during task execution.
To see the full traceback, use -vvv. The error was: IOError: [Errno 2]
No such file or directory: '/root/.ssh/known_hosts'
解决方法:手动 SSH 连接一下
ssh username@172.16.200.6
执行第一条测试命令:
ansible -m ce_command -a "commands='display vlan summary' transport='cli' host=172.16.200.6 port=22 username=wsf535 password=ABC@2017" localhost --connection local
如果成功返回则安装成功:
localhost | SUCCESS => {
"changed": false,
"stdout": [
"Number of static VLAN: 10\nVLAN ID: 1 16 to 20 22 25 to 26 99 \n\nNumber of dynamic VLAN: 0\nVLAN ID: \n\nNumber of service VLAN: 31\nVLAN ID: 4064 to 4094"
],
"stdout_lines": [
[
"Number of static VLAN: 10",
"VLAN ID: 1 16 to 20 22 25 to 26 99",
"",
"Number of dynamic VLAN: 0",
"VLAN ID:",
"",
"Number of service VLAN: 31",
"VLAN ID: 4064 to 4094"
]
],
"warnings":