ansible模块: cisco.ios.ios_config .note
·该模块的 幂等性:
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.1002、./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: 22223、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配置文件到控制端:


