总体介绍
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": []
}
使用playbook
#定义主机,我的测试环境只有这一台,如果有多台加到cloudengine标签下
cat /etc/ansible/hosts
[all:vars]
ansible_connection='local'
username='wsf535'
password='ABC@2017'
ansible_ssh_port=22
[cloudengine]
172.16.200.6
#新建一下vlan.yml文件,以下内容表示创建vlan 50
---
- hosts: cloudengine
gather_facts: no
vars:
test_vlan: 50
tasks:
- ce_vlan: vlan_id={{test_vlan}} name="WEB" host={{inventory_hostname}} username={{username}} password={{password}} port={{ansible_ssh_port}}
#执行操作
ansible-playbook vlan.yml
成功结果:
image.png
网友评论