ansible模块: cisco.ios.ios_config .note

noteId: 2D2C097A7B8F4585808C11EA20A9A32D · 原始路径:/ALL/Ansible 自动化管理/Ansible 配置合集/Ansible 自动化管理-Network/Cisco 模块/ansible模块: cisco.ios.ios_config .note · 图片:4 · 附件待处理:0

·该模块的 幂等性:
cisco.ios.ios_config 模块的幂等性是通过匹配配置文件来达成幂等的
主要是通过:
match 字段
参数:
line:(默认)按照行进行匹配
strict:通过位置进行匹配(不常用)
exact:精确匹配(一般适用于 ACL)
none: 不匹配,直接进行输入(取消幂等性)
 
·常用的就两个:line、exact
 
·自动保存:‘save_when’
但是这个有一个弊端,就是它会一直显示 changed
与 changed_when同级
当该模块产生修改时,就会自动保存配置文件
语法:save_when: modified
 
 
·基础配置:
 
1、hosts:
all:
  hosts:
    R1:
      ansible_host: 192.168.1.100
 
2、./groups_vars/all.yml
ansible_connection: ansible.netcommon.network_cli
ansible_network_os: cisco.ios.ios
ansible_user: admin
ansible_password: Skills39!
ansible_become: true
ansible_become_method: enable
ansible_become_password: Skills39!
# ansible_port: 2222
 
3、ansible.cfg:
[default]
host_key_checking=false
stdout_callback=yaml
bin_ansible_callback=true
# ansible_port=2222
 
 
一、lines 基础使用:
lines: 直接输入的内容
 
1、剧本:
---
- name: Test
  hosts: all
  gather_facts: False
 
  tasks:
  - name: line
    block:
 
      - name: lines
        cisco.ios.ios_config:
          lines:
            - "hostname {{ inventory_hostname }}"
            - no ip domain lookup
            - clock timezone UTC 8 0
        tags: line1
 
 
 
二、lines + parents
parents:lines 命令的上一级,例如:
router ospf 1
network 1.1.1.1 255.255.255.0
 
router ospf 1 就是 network .. 的上一级,需要用 parents定义
network .. 则使用 lines 定义
 
 
 
 
---
- name: Test
  hosts: all
  gather_facts: False
 
  tasks:
  - name: line
    block:
 
      - name: lines
        cisco.ios.ios_config:
          lines:
            - "hostname {{ inventory_hostname }}"
            - no ip domain lookup
            - clock timezone UTC 8 0
        tags: line1
 
      - name: lines + parents
        cisco.ios.ios_config:
          lines:
            - logging synchronous
            - exec-timeout 0 0
          parents: line con 0
        tags: line2
 
      - name: lines + parents + before + save_when
        cisco.ios.ios_config:
          lines:
            - permit ip host 123.123.123.123 any
            - permit ip host 124.124.124.124 any
            - permit ip host 125.125.125.125 any
            - permit ip host 126.126.126.126 any
            - permit ip host 127.127.127.127 any
          # parents: ip access-list extended 123 当定义了多个 parents、before 语句时,将会使用最后一个执行的那个(采用最为置底的来执行)【如,当前的 123 和 elysia,如果取消注释,则只会执行 elysia 的 parents 字段,因为它在更下方】
          parents: ip access-list extended elysia
          before: no ip access-list extended elysia
          match: exact
          save_when: modified
        changed_when: False
        tags: line3
 
      - name: backup + backup_options
        cisco.ios.ios_config:
          lines:
            - permit ip host 123.123.123.123 any
            - permit ip host 124.124.124.124 any
            - permit ip host 125.125.125.125 any
          parents: ip access-list extended abc
          before: no ip access-list extended elysia
          match: exact
          backup: true
          backup_options:
            filename: backup.cfg
            dir_path: /etc/ansible/config_backup
        tags: backup          
 
      - name: diff_against
        cisco.ios.ios_config:
          lines:
            - network 192.168.1.0 0.0.0.255 area 0
          parents: router ospf 1
          diff_against: startup
        tags: diff
 
 
 
 
 
 
 
 
 
 
三、可以直接保存cisco配置文件到控制端: