使用Ansible备份交换机配置

休假前您希望备份所有交换机配置文件。

一台一台登录并执行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文件夹中。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注