Ansible是什么?如何用Ansible配置思科设备?
Ansible 是新出现的自动化运维工具,基于 Python 开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等等功能。举个例子:
# 查看CPU 占用率的统计信息
display cpu-usage
# 查看内存的使用状态
display memory-usage
# 查看电源的工作状态
display power
# 查看接口是否工作在正常状态
display error-down recovery
# 查看VRRP的工作状态
display vrrp brief
# 查看NTP的工作状态
display ntp status
# 查看用户上线失败记录信息
display aaa online-fail-record
# 查看设备中的历史告警信息
display alarm history
以上是我们查看设备关键信息的常用命令,查看一台,可能还好,如果是100台,1000台呢?那我们是不是要重复执行100次、1000次?那可能我们这几天啥也不用干了!
Ansible就是一款自动化工具,通过一个命令完成一系列的操作,进而能减少重复性的工作和维护成本!
为了网工更高效工作,因此,就有了Ansible,一款自动化运维工具,通过一个命令完成一系列的操作,进而能减少重复性的工作和维护成本!
下面给大家简单说说Ansible的优点:
(1).轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
(2).批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
(3).使用python编写,维护更简单,ruby语法过于复杂;
(4).支持sudo。
Ansible一般通过ssh协议实现linux服务器的管理,但从2.1版本开始,ansible core modules加入了对cisco ios设备的支持,对应的模块为ios_command, ios_config, ios_template。以下拓扑图是用于ansible测试的的 其中右上角的LinuxCacti里面是通过桥接至EVE-NG,此服务器里集成了cacti、ansible等工具。 一、 思科设备要设定ssh登录aaa new-modelusername admin privilege 15 password 7 142713ip domain name vmise.comcrypto key generate rsa modulus 1024line vty 0 4transport input telnet ssh
二、ansible book 1.建立switchhost文件,switchhost文件内容格式如下:
https://s1.51cto.com/oss/201711/04/1df9aefd0e1af31f26092e08dbc0267a.png备注:router表示设备分组,此可以自行定义,这个名字要跟后面的配置文档的名称一至。如下图就表示两个分组 https://s1.51cto.com/oss/201711/04/2dbd66043ddd0f2deb73ec2536bd8ed6.png 2.建立三种类型的配置方案,文件结构如下:https://s1.51cto.com/oss/201711/04/090e29c289fe467ce2173d92dc0a6a24.png3. 配置设定以router_acl这个为案例说明,router_acl目录结构如下: 4. router_acl中的tasks(即是需要执行的任务),配置如下:# cat main.yml ---- name: description cli set_fact: cli: host: "`ansible_host`" username: "`username`" --->从vars中配置的传过来参数 password: "`password`" --->从vars中配置的传过来参数 transport: cli
- name: configure acl ios_template: src: config.j2 ---->templates里的配置文件,即是路由器的配置脚本 provider: "`cli`"
- name: save running-config ios_command: commands: write memory ----> 配置保存命令 provider: "`cli`" register: write_output
5. router_acl的vars配置文档# cat main.yml username: admin ----->定义用户名password: Password.123 ----->定义用户密码router_interface: --->定义路由器接口组名称,后面执行作任务是要调用- Ethernet1/0- Ethernet1/1- Ethernet1/26.router_acl中的templates 部分配置config.j2,即是路由器配置脚本# cat config.j2 ip access-list extended ingress-filterremark Unassigned IANA address1 deny ip 1.0.0.0 0.255.255.255 any2 deny ip 2.0.0.0 0.255.255.255 any3 deny ip 5.0.0.0 0.255.255.255 any4 deny ip 7.0.0.0 0.255.255.255 any5 deny ip 23.0.0.0 0.255.255.255 any6 deny ip 27.0.0.0 0.255.255.255 any7 deny ip 31.0.0.0 0.255{% for interface in router_interface %}--->router_interface调用vars里的参数interface `interface`ip access-group ingress-filter in{% endfor %}7.router_acl.yml的配置如下:# cat router_acl.yml --- -hosts: router --->设备组,就是switchhost配置组 gather_facts: no connection: local roles: - router_acl 8. 执行脚本命令 ansible-playbook -i switchhostrouter_acl.yml ,如成功如下图所示
{:6_299:}{:6_299:} 很好的学习材料 {:6_269:}{:6_267:} {:6_290:} 好东西值得收藏 {:6_267:}
页:
[1]