sweli 发表于 2018-7-29 09:05:20

用Ansible配置思科网络设备

  ansible:Ansible is Simple IT Automation”——简单的自动化IT工具。这个工具的目标有这么几项:让我们自动化部署APP;自动化管理配置项;自动化的持续交付。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-model
  username admin privilege 15 password 7 142713181F1325392066626771
  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.建立三种类型的配置方案,文件结构如下:
   
  3. 配置设定以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/2
  6.router_acl中的templates 部分配置config.j2,即是路由器配置脚本
  # 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的配置如下:
  # cat router_acl.yml
  ---
  -hosts: router      --->设备组,就是switchhost配置组
  gather_facts: no
  connection: local
  roles:
  - router_acl
  8. 执行脚本命令 ansible-playbook -i switchhostrouter_acl.yml ,如成功如下图所示
页: [1]
查看完整版本: 用Ansible配置思科网络设备