先决条件

- 了解ansible基本操作

- 了解网络设备相关操作

- 了解linux相关操作

安装

安装EPEL
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
安装ansible
yum install ansible
确认ansible正确安装
ansible --version

测试ssh连接

在使用ansible之前,测试一下ssh连接网络设备,保证网络设备的ssh协议开启,账号密码正确。

1是账号,2是网络设备的ip。

创建inventory

inventory文件用来存放设备的相关信息,如ip地址、用户名、密码等。

文件名字可以叫inventory,也可以叫任何其它的名字,不加后缀。

文件内容如下:

1. 创建一个switches组,包含两台交换机, 第一列是交换机名(名字随便起),第二列的ansible_host是设备ip地址;

2. vars下面配置了switches组通用的变量,ansible_connection是连接方式,之后是操作系统类型ios,最后是登录的用户名。

[switches]
cisco_2960_06 ansible_host=x.x.x.x
cisco_2960_07 ansible_host=x.x.x.x [switches:vars]
ansible_connection=network_cli
ansible_network_os=ios
ansible_user=username

创建playbook

playbook的文件名后缀必须以.yml或.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目录,配置会自动备份到该目录下。

---

- name: Network Getting Started First Playbook
connection: network_cli
gather_facts: false
hosts: all
tasks: - name: backup ios devices
ios_config:
backup: yes

运行playbook

ansible-playbook -i inventory -k -e ansible_network_os=ios first_playbook.yml

ansible-playbook 是可执行程序,用于执行playbook文件;

-i 调用inventory文件,这是之前配置的存放设备信息的文件;

-k 运行时提示输入密码。推荐使用这个参数,不要在inventory里存放设备密码,都是明文的,不安全;

-e 是extra的意思,额外参数。这里指定了设备操作系统版本ios(此处不是必须的,只是为了演示这个参数的用法);

最后一个参数是playbook文件的名字,此处是first_playbook.yml。

输出如下:

首先,由于指定了-k参数,系统会提示你输入SSH密码,这个密码是网络设备的登录密码。

最后显示ok,说明执行成功,没有报错。

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

最新文章

  1. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q112-Q115)
  2. asp.net发邮件功能
  3. Web安全之点击劫持(ClickJacking)
  4. android 判断网络是否连接
  5. JQuery Pagenation 知识点整理——arguments,callee,caller,apply应用(20150517)(转)
  6. linux笔记_20150417_ubuntu 常见问题_文件_音乐播放器
  7. 【转】html input radio取得被选中项的value
  8. nginx的autoindex-目录浏览还有其它两个参数
  9. python中实现多线程的几种方式
  10. 使用STM8SF103 ADC采样电压(转)
  11. PHP实现二维数组排序(按照数组中的某个字段)
  12. 微信小程序之表单验证
  13. ant gradle curl等工具原理以及使用记录
  14. jQuery轮播图--不使用插件
  15. debian下 Hadoop 1.0.4 集群配置及运行WordCount
  16. UIWebView使用app内自定义字体
  17. Domain Adaptation (3)论文翻译
  18. 连接db2数据库出现No buffer space available (maximum connections reached?)
  19. ppt标题排版
  20. WDA编译失败问题

热门文章

  1. java练习---2
  2. Python中文本文件读写操作的编码问题
  3. java - 如何使一个类不能被继承
  4. spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析
  5. 快速清理maven仓库中下载错误的文件
  6. Android的简述3
  7. markdown常用方法
  8. Apache ActiveMQ 实践 <二>
  9. hdoj 4712 Hamming Distance(靠人品过的)
  10. gdb调试和编译后运行结果不一致