ansible 对思科交换机备份
ansible版本
[root@test ansible]# ansible --version
ansible 2.9.10
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
inventory清单创建
在使用ansible之前,测试一下ssh连接网络设备,保证网络设备的ssh协议开启,账号密码正确
创建inventory文件:
inventory文件用来存放设备的相关信息,如ip地址、用户名、密码等。
文件名字可以叫inventory,也可以叫任何其它的名字,不加后缀。
文件内容如下:
- 创建一个switches组,包含两台交换机, 第一列是交换机名(名字随便起),第二列的ansible_host是设备ip地址;
- vars下面配置了switches组通用的变量,ansible_connection是连接方式,之后是操作系统类型ios,最后是登录的用户名
[root@test ansible_network]# cat inventory
[switches]
C2960-01 ansible_host=xx.xx.xx.xx
C2960-02 ansible_host=xx.xx.xx.xx
[switches:vars]
ansible_connection=network_cli
ansible_network_os=ios
ansible_user=xxxx
创建playbook
playbook的文件名后缀必须以.yaml结尾。
内容如下:
name:playbook的名字,一般用于描述整个playbook的作用即可;
connection:连接方式,cisco ios必须用network_cli;
gather_facts:ansible会自动收集远端设备的信息,这个操作会消耗很长时间,一般没有特殊需求就设置为false关闭;
hosts:指定主机范围,这里是all,所有主机;
tasks:真正执行的任务都在这下面;
ios_config:这是一个ansible的模块,用来对cisco的ios设备进行配置的修改、备份。
backup:设置为yes,则会启用该模块的备份功能,会在运行playbook的当前目录下自动创建一个backup目录,配置会自动备份到该目录下。
[root@test ansible_network]# cat cisco_backup_playbook.yaml
---
- name: Network Getting Started First Playbook
connection: network_cli
gather_facts: false
hosts: all
tasks:
- name: backup ios devices
ios_config:
backup: yes
[root@test ansible_network]# ansible-playbook --syntax-check cisco_backup_playbook.yaml
playbook: cisco_backup_playbook.yaml
运行playbook
ansible-playbook -i inventory -k -e ansible_network_os=ios cisco_backup_playbook.yaml
ansible-playbook 是可执行程序,用于执行playbook文件;
-i 调用inventory文件,这是之前配置的存放设备信息的文件;
-k 运行时提示输入密码。推荐使用这个参数,不要在inventory里存放设备密码,都是明文的,不安全;
-e 是extra的意思,额外参数。这里指定了设备操作系统版本ios(此处不是必须的,只是为了演示这个参数的用法);
最后一个参数是playbook文件的名字,此处是first_playbook.yml
[root@test ansible_network]# ansible-playbook -i inventory -k -e ansible_network_os=ios cisco_backup_playbook.yaml
SSH password:
PLAY [Network Getting Started First Playbook] ***********************************************************
TASK [backup ios devices] *******************************************************************************
changed: [C2960-01]
changed: [C2960-02]
PLAY RECAP **********************************************************************************************
C2960-01 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
C2960-02 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@test ansible_network]#
查看当前目录,可以看到ansible自动创建了backup目录,并且该目录下有以日期时间为后缀的备份文件,说明备份成功。
[root@test ansible_network]# pwd
/etc/ansible/ansible_network
[root@test ansible_network]# tree
.
├── backup
│ ├── C2960-01_config.2020-11-07@13:53:40
│ └── C2960-02_config.2020-11-07@13:53:41
├── cisco_backup_playbook.yaml
└── inventory
1 directory, 4 files
[root@test ansible_network]#