设为首页收藏本站language 语言切换
查看: 3204|回复: 6
收起左侧

[分享] Ansible是什么?如何用Ansible配置思科设备?

[复制链接]
 成长值: 64925
发表于 2021-6-17 11:08:32 | 显示全部楼层 |阅读模式
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等工具。  
    7e84c8a632b5c15c5105cadbfa22171b.png    
一、 思科设备要设定ssh登录
aaa new-model
username admin privilege 15 password 7 142713
ip domain name vmise.com
crypto key generate rsa modulus 1024
line vty 0 4
transport input telnet ssh

二、ansible book
1.建立switchhost文件,switchhost文件内容格式如下:
  
  备注:router表示设备分组,此可以自行定义,这个名字要跟后面的配置文档的名称一至。如下图就表示两个分组
2.建立三种类型的配置方案,文件结构如下:
   99ef89876460b9493a3586449644bb6d.png    56dd9920a509ca80f92b232ebd12d0b7.png   
3. 配置设定以router_acl这个为案例说明,router_acl目录结构如下:
   aeb0c366e56c444fae7e08a615cd102d.png
4. router_acl中的tasks(即是需要执行的任务),配置如下:
[root@host05 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配置文档
[root@host05 vars]# cat main.yml
username: admin             ----->定义用户名
password: Password.123       ----->定义用户密码
router_interface:            --->定义路由器接口组名称,后面执行作任务是要调用
  - Ethernet1/0
  - Ethernet1/1
  - Ethernet1/2
6.router_acl中的templates 部分配置config.j2,即是路由器配置脚本
[root@host05 templates]# cat config.j2
ip access-list extended ingress-filter
  remark Unassigned IANA address
  1 deny ip 1.0.0.0 0.255.255.255 any
  2 deny ip 2.0.0.0 0.255.255.255 any
  3 deny ip 5.0.0.0 0.255.255.255 any
  4 deny ip 7.0.0.0 0.255.255.255 any
  5 deny ip 23.0.0.0 0.255.255.255 any
  6 deny ip 27.0.0.0 0.255.255.255 any
  7 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的配置如下:
[root@host05 ansible]# cat router_acl.yml
---
-  hosts: router        --->设备组,就是switchhost配置组
    gather_facts: no
    connection: local
    roles:
      - router_acl      
8. 执行脚本命令 ansible-playbook -i switchhost  router_acl.yml ,如成功如下图所示
   117ce7b233b2ebb77148b71f2791b399.png

评分

参与人数 1好评度 +1 收起 理由
bossxue + 1

查看全部评分

发表于 2021-6-17 11:42:54 | 显示全部楼层
很好的学习材料
板凳 2021-6-17 11:42:54 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2021-8-22 14:45:56 | 显示全部楼层
好东西  值得收藏
6# 2021-8-22 14:45:56 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-5-15 22:39 , Processed in 0.084248 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表