120 lines
3.3 KiB
YAML
120 lines
3.3 KiB
YAML
---
|
|
- name: parser meta data
|
|
parser_metadata:
|
|
version: 1.0
|
|
command: show interfaces
|
|
network_os: ios
|
|
|
|
- name: match sections
|
|
pattern_match:
|
|
regex: "^\\S+ is (up|down|administratively down),"
|
|
match_all: true
|
|
match_greedy: true
|
|
register: context
|
|
|
|
- name: match interface values
|
|
pattern_group:
|
|
- name: match name
|
|
pattern_match:
|
|
regex: "^(\\S+)"
|
|
content: "{{ item }}"
|
|
register: name
|
|
|
|
- name: match hardware
|
|
pattern_match:
|
|
regex: "Hardware is (.*(?=,)|.*)"
|
|
content: "{{ item }}"
|
|
register: type
|
|
|
|
- name: match mtu
|
|
pattern_match:
|
|
regex: "MTU (\\d+)"
|
|
content: "{{ item }}"
|
|
register: mtu
|
|
|
|
- name: match interface description
|
|
pattern_match:
|
|
regex: "Description: (.+)"
|
|
content: "{{ item }}"
|
|
register: description
|
|
|
|
- name: match administrative state
|
|
pattern_match:
|
|
regex: "(administratively down)"
|
|
content: "{{ item }}"
|
|
register: enabled
|
|
|
|
- name: match line protocol
|
|
pattern_match:
|
|
regex: "line protocol is (\\S+)"
|
|
content: "{{ item }}"
|
|
register: operstatus
|
|
|
|
- name: match in packets
|
|
pattern_match:
|
|
regex: "(\\d+) packets input, (\\d+)"
|
|
content: "{{ item }}"
|
|
register: in_pkts_octets
|
|
|
|
- name: match input broadcast
|
|
pattern_match:
|
|
regex: "Received (\\d+) broadcasts \\(\\d+"
|
|
content: "{{ item }}"
|
|
register: in_bcast_mcast
|
|
|
|
- name: match out packets
|
|
pattern_match:
|
|
regex: "(\\d+) packets output, (\\d+) bytes"
|
|
content: "{{ item }}"
|
|
register: out_pkts_octets
|
|
|
|
- name: match out errors
|
|
pattern_match:
|
|
regex: "(\\d+) output errors"
|
|
content: "{{ item }}"
|
|
register: out_errors
|
|
|
|
loop: "{{ context }}"
|
|
register: values
|
|
|
|
- name: template interface values
|
|
loop: "{{ values }}"
|
|
register: interfaces
|
|
export: true
|
|
export_as: dict
|
|
extend: cisco_ios
|
|
json_template:
|
|
template:
|
|
- key: "{{ item.name.matches.0 }}"
|
|
object:
|
|
- key: name
|
|
value: "{{ item.name.matches.0 }}"
|
|
- key: type
|
|
value: "{{ item.type.matches.0 }}"
|
|
- key: mtu
|
|
value: "{{ item.mtu.matches.0 }}"
|
|
- key: description
|
|
value: "{{ item.description.matches.0 }}"
|
|
- key: enabled
|
|
value: "{{ item.enabled.matches.0 is undefined }}"
|
|
- key: admin-status
|
|
value: "{{ item.enabled.matches.0 is undefined | ternary ('enabled', 'disabled') }}"
|
|
- key: oper-status
|
|
value: "{{ item.operstatus.matches.0 }}"
|
|
- key: counters
|
|
object:
|
|
- key: in-octets
|
|
value: "{{ item.in_pkts_octets.matches.0 }}"
|
|
- key: in-unicast-pkts
|
|
value: "{{ item.in_pkts_octets.matches.1 }}"
|
|
- key: in-broadcast-pkts
|
|
value: "{{ item.in_bcast_mcast.matches.0 }}"
|
|
- key: in-multicast-pkts
|
|
value: "{{ item.in_bcast_mcast.matches.1 }}"
|
|
- key: out-octets
|
|
value: "{{ item.out_pkts_octets.matches.0 }}"
|
|
- key: out-unicast-pkts
|
|
value: "{{ item.out_pkts_octets.matches.1 }}"
|
|
- key: out-errors
|
|
value: "{{ item.out_errors.matches.0 }}"
|