故事背景
作为一名网络工程师,维护公司办公网络,关于交换机的批量配置变更和配置备份一直是心中难以言明的痛,特别是每到节假日前所有设备的配置保存和配置备份 和 NTP等服务器变更IP的时候 都无情的鞭笞着网络工程师的心灵和肉体。好几百台设备啊。
技术演变简述
回顾过去的历史,就是和网络自动化斗争的历史
最开始的时候 我们使用 SecureCRT 的Scripts ,用VB写脚本模拟SSH
或者telnet登陆设备然后操作。
对于中小型企业 网络管理员来说 securecrt脚本几乎没有学习成本, 喜欢脚本运维的同学 推荐 去看一下 https://github.com/191801737/securecrt_network
后来用python 写脚本 使用parimiko 或者netmiko 连接到设备操作。
现在我们想要一个更自动化的系统 当遇到ansible以后 感慨这么多年终于等到了。
简介
ansible简介
Ansible is an IT automation tool. It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates
Ansible是IT自动化工具。它可以配置系统,部署软件,并编排更先进的IT任务,如连续部署或零停机滚动更新。
环境搭建
服务器操作系统推荐使用ubuntu,ansible 更新迭代很快,ubuntu系统会让你更快获得新版本的功能
ansible 安装
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible
验证安装
root@ansible:~# ansible --version
ansible 2.3.0.0
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/usr/share/my_modules/']
python version = 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609]
这个时候ansible就安装好了。
配置ansible
ansible 有几个组件 很重要
inventory : 可以理解成 存在被管理主机的地方
playbook : 配置管理使用
modules: 提供实现功能的模块
inventory 配置
新建一个cisco组 里面放上你要配置的交换机
[root@es-node1 playbook]# vi /etc/ansible/hosts
[cisco]
10.101.24.241 ansible_ssh_user=cisco ansible_ssh_pass=cisco
playbook 实现交换机备份保存配置
我们来实现 交换机的配置备份和配置保存
[root@es-node1 playbook]# vi ios_conf2.yml
---
- hosts: cisco
gather_facts: false
connection: local
tasks:
# 备份文件 默认存放到ansible 当前目录
- name: backup configuration
ios_config:
backup: true
# 保存配置
- name: save configuration
ios_config:
save: true
执行 playbook
查看效果:
会在当前目录新建一个 backup目录 备份文件会加上时间戳
playbook 实现交换机ntp snmp
假设你的ntp 服务器地址变更, 为了搞监控也要更新snmp
我们来写个配置 playbook
[root@es-node1 playbook]# cat ios_conf2.yml
---
- hosts: cisco
gather_facts: false
connection: local
tasks:
# 配置 ntp server
- name: configure ntp server
ios_config:
lines:
- ntp server 10.1.1.1
# 配置 snmp
- name: configure snmp
ios_config:
lines:
- snmp-server community network-read RO
执行playbook
验证一下结果
modules 配置
看了上面的介绍 只要把交换机ip写在 /etc/ansible/hosts中,
在简单写个playbook 就实现交换机自动化 批量 管理配置,是不是很爽。
具体实现功能就是就幕后英雄 modules
到目前位置 ansible 官方提供了 很多 Network Modules
http://docs.ansible.com/ansible/list_of_network_modules.html
如果你们公司使用的都是思科交换机,你可以很方便的实现全自动配置管理,
因为思科公司提供了各种配置的modules, 老大哥就是良心啊。
Ios
ios_banner - Manage multiline banners on Cisco IOS devices
ios_command - Run commands on remote devices running Cisco IOS
ios_config - Manage Cisco IOS configuration sections
ios_facts - Collect facts from remote devices running Cisco IOS
ios_system - Manage the system attributes on Cisco IOS devices
ios_template (D) - Manage Cisco IOS device configurations over SSH
ios_vrf - Manage the collection of VRF definitions on Cisco IOS devices
华为的数据中心 Cloudengine 系统交换机也 提供了官方的modules
然而 遗憾的是 对于国内广大公司 使用的 h3c 华为园区S系列交换机 目前官方并没有 modules可用。
我们现在处于在Developing h3c 华为s系列 Modules阶段
http://docs.ansible.com/ansible/dev_guide/developing_modules.html#id2
结束语
AUTOMATION FOR EVERYONE
Ansible is designed around the way people work and the way people work together.