休假前您希望备份所有交换机配置文件。
一台一台登录并执行show running-config? 设备太多过于繁琐
使用Python或Shell等脚本语言? 太费劲
您可以使用Ansible完成自动化备份的工作
一、什么是Ansible?
Ansible是一个开源自动化配置与管理工具,可以使用它来完成自动化任务,例如:服务器初始化配置、应用程序部署、网络自动化等。
Ansible具有以下特点
- 配置过程非常简单,相较于Python或Shell学习成本低
- 快速且并行地管理多台主机
- 无需安装任何客户端(Agent),使用SSH进行通信
二、安装Ansible以及开发环境
安装Ansible需要事先安装Python 3.6以上版本,使用pip或包管理工具yum、apt安装ansible
安装结束后使用ansible –version验证是否安装成功
三、组织开发目录
新建ios_demo文件夹作为根目录,所有文件均在存放在此文件夹中便于后期维护以及迭代更新,为了表述简单以下提到的所有文件夹均创建在ios_demo下
四、编写inventory文件以及playbook
inventory文件存放被管理主机的列表、group_vars描述inventory内主机属性,playbook则记录了一系列自动化配置、编排、部署的步骤。通俗的讲如果需要组装工具inventory就是各类原材料group_vars为原材料的颜色形状等属性而playbook则为您的说明手册。
首先新建inventory文件夹,并在inventory下创建hosts文件,hosts文件用于存放所有要备份设备的IP地址,hosts文件内容如下:
使用中括号可将设备进行分组,目前我们根据设备物理位置不同分为Shanghai和Suzhou,实际情况也可以根据用户名密码进行分组(将相同用户名密码的设备分为一组方便管理以及group_vars的书写)该文件中Shanghai组有两台设备分别为“10.61.11.254”,“10.61.0.9”;Suzhou组有一台设备“10.62.1.254”。
创建group_vars文件夹并在该文件夹下创建all.yml,group_vars文件夹下存放用于描述inventory属性的配置文件,all.yml代表hosts文件中所有主机的属性(文件名为Shanghai.yml则属性只应用于Shanghai组成员设备)all.yml内容如下:
- ansible_connection: network_cli 连接方式声明为使用网络CLI
- ansible_user:设备的SSH登录用户名
- ansible_network_os: 指定设备的操作系统
- ansible_password: 指定设备的SSH登录密码
在根目录下创建ansible.cfg配置文件用于定义执行ansible playbook时使用的配置,内容如下:
- inventory:指定inventory文件,运行ansible-playbook可避免输入-i参数
- host_key_checking = False: 关闭SSH密钥警告
- interpreter_python = /usr/local/bin/python3.8 指定Python解释器的路径(可选项,默认为auto_legacy)
在根目录下创建main.yml用于编写playbook,内容如下:
五、运行Ansible Playbook
在Terminal中执行: ansible-playbook main.yml等待片刻后将会看到输出结果,配置文件将会保存在backup文件夹中。
六、参考文档
Installing Ansible:
https://docs.ansible.com/ansible/2.9/installation_guide/intro_installation.html#from-pip
ios_config – Manage Cisco IOS configuration sections
https://docs.ansible.com/ansible/2.9/modules/ios_config_module.html#ios-config-module
Ansible Configuration Settings:
https://docs.ansible.com/ansible/2.9/reference_appendices/config.html#ansible-configuration-settings