Ansible 网络自动化:自动备份 Cisco 交换机配置_ios



Ansible 网络自动化:自动备份 Cisco 交换机配置_配置文件_02



自动备份 Cisco 交换机配置




Ansible 是什么?

Ansible 简介


Ansible是开源的自动化配置工具。基于python模块开发,实现了批量系统配置、批量程序部署、批量运行命令的功能。

Ansible架构相对比较简单,只需要使用​ssh​协议连接就可以来进行系统管理,自动化执行命令,部署等任务


Ansible 特点


-  部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;

-  默认使用SSH协议对设备进行管理;

-  配置简单、功能强大、扩展性强;

- 通过 Playbooks 来定制强大的配置、状态管理;


Ansible 常用组成结构


-  Ansible:Ansible的命令工具,核心执行工具;一次性或临时执行的操作都是通过该命令执行;

-  Playbook:编排模式,任务剧本,定义主机需要调用哪些模块来完成的功能,YAML\YML 格式;

-  Inventory:Ansible管理主机的清单,记录由Ansible管理的主机信息,包括端口、密码、ip等;

-  Modules:Ansible执行命令的功能模块;(核心功能)

好啦,介绍完 Ansible 后,接下来到了本文的重点内容,麻烦小伙伴们拿出小本本记笔记了!



配置 Ansible 对交换机配置自动备份

环境准备


系统

Python

描述

CentOS7

2.6

Ansible 管理节点


Ansible 安装


配置 EPEL 源
[root@ansible ~]# yum -y install epel-release
Installed:
 epel-release.noarch 0:7-11
Complete!

安装 Ansible
[root@ansible ~]# yum -y install ansible
Installed:
 ansible.noarch 0:2.7.7-1.el7
Complete!
# 查看 Ansible 版本
[root@ansible ~]# ansible --version
ansible 2.7.7

修改配置文件


进入 Ansible 目录
[root@ansible ~]# cd /etc/ansible/
[root@ansible ~]# ll
-rw-r--r--. 1 root root  6月    ansible.cfg
-rw-r--r--. 1 root root  6月    hosts

编辑系统配置文件
[root@ansible ~]# vi ansible.cfg
host_key_checking = False #跳过第一次连接检测询问是否登陆的提示(YES/NO),避免执行报错,disable SSH key host checking


定义 inventory(主机清单)


Inventory文件通常用于定义要管理的主机的IP、变量等信息,例如:连接类型、 ssh登录用户名、密码等。可以同时操作一个组的多台主机,组与主机组之间的关系都是通过inventory文件定义。默认路径为:etc/ansible/hosts


编辑 hosts 文件
[root@ansible ~]# cd /etc/ansible/
[root@ansible ~]# vi hosts

[cisco_switchs] #定义主机组名
cisco_2960X_01 #主机别名    ansible_host=192.168.1.10 #主机IP
cisco_2960X_02 #主机别名     ansible_host=192.168.1.11 #主机IP

[cisco_switchs:vars] #定义变量并关联主机组
ansible_network_os=ios #定义系统类型,Cisco交换机为IOS
ansible_connection=network_cli #定义连接方式
ansible_ssh_user=admin #定义用户名
ansible_ssh_pass=Admin@123 #定义密码


创建 Playbooks


Playbook的文件名后缀必须以.yml或.yaml结尾,读者可以根据自己习惯选择。

格式要求如下:

-  以 " --- "(三个减号)开始,必须首行;

-  严格缩进,并且不能用 TAB 键缩进;

-  缩进级别必须一致,同样的缩进代表同样的级别,程序判断配置的级别是通过缩进结合换行来实现的;

-  同行使用" :"加空格分隔,换行写需要以 " - " 分割;

创建并配置交换机自动备份脚本:

[root@ansible ~]# cd /etc/ansible/
[root@ansible ~]# touch backup.yml
[root@ansible ~]# vi backup.yml

---
- hosts: cisco_switchs
 gather_facts: false
 tasks:
 - name: save config
   ios_config:
     save_when: modified
 - name: backup switch config
   ios_config:
     backup: true

配置文件功能介绍:

hosts:指定需要操作的主机,这里配置的是我们先前定义好的组名;

gather_facts:默认Ansible会自动收集远端设备的信息,这个操作会消耗很长时间,一般没有特殊需求就设置为false关闭

tasks:定义任务;

name:定义任务名称;

ios_config:这是一个Ansible的模块,用来对Cisco的IOS设备进行配置的修改、备份;

save_when:设置为modified,当检测到运行配置和配置文件不一致时,会执行保存指令;

backup:设置为yes,则会启用该模块的备份功能,会在运行Playbook的当前目录下自动创建一个backup目录,文件会以设备别名命名自动备份到该目录下;


运行 Playbooks


[root@ansible ~]# cd /etc/ansible/
[root@ansible ~]# ansible-playbook backup.yml #使用ansible-playbook运行之前配置好的脚本文件

PLAY [all] ************************

TASK [save config] ************************
changed: [cisco_2960X_01]
changed: [cisco_2960X_02]

TASK [backup switch config] ************************
ok: [cisco_2960X_01]
ok: [cisco_2960X_02]

PLAY RECAP ************************
cisco_2960X_01      : ok=2    changed=1    unreachable=0    failed=0
cisco_2960X_02      : ok=2    changed=1    unreachable=0    failed=0


验证结果

查看当前目录,可以看到自动创建了backup目录,并且该目录下有以别名+日期时间为后缀的备份文件,说明备份成功。

[root@ansible ~]# ll
-rw-r--r--. 1 root root 104 Jul 6 20:01 ansible.cfg
-rw-r--r--. 1 root root 217 Jul 6 20:41 backup
-rw-r--r--. 1 root root 113 Jul 6 20:10 hosts
-rw-r--r--. 1 root root 151 Jul 6 20:01 roles
-rw-r--r--. 1 root root 179 Jul 6 20:35 backup.yml
[root@ansible ~]# cd backup
[root@ansible ~]# ll
-rw-r--r--. 1 root root 30169 Jul 6 20:41 cisco_2960X_01_config.2020-7-06@20:41:33
-rw-r--r--. 1 root root 29584 Jul 6 20:41 cisco_2960X_01_config.2020-7-06@20:41:33

运行 Playbooks


[root@ansible ~]# cd /etc/ansible/
[root@ansible ~]# ansible-playbook backup.yml #使用ansible-playbook运行之前配置好的脚本文件

PLAY [all] ************************

TASK [save config] ************************
changed: [cisco_2960X_01]
changed: [cisco_2960X_02]

TASK [backup switch config] ************************
ok: [cisco_2960X_01]
ok: [cisco_2960X_02]

PLAY RECAP ************************
cisco_2960X_01      : ok=2    changed=1    unreachable=0    failed=0
cisco_2960X_02      : ok=2    changed=1    unreachable=0    failed=0


配置定时任务


[root@ansible ~]# crontab -e #进入定时任务编辑模式
00 01 * * * ansible-playbook /etc/ansible/backup.yml
# 配置每天早上1点自动执行backup.yml 脚本

[root@ansible ~]# crontab -l #查看定时任务
00 01 * * * ansible-playbook /etc/ansible/backup.yml

注:本文仅是开源技术分享,没有任何商业目的,如有版权问题请联系小编删除处理,我们并表示歉意


END




看完本文有收获,请分享给更多的人

Ansible 网络自动化:自动备份 Cisco 交换机配置_定时任务_03