Resource module to configure L3 interfaces.
Version added: 1.0.0
- This module provides declarative management of Layer-3 interface on Cisco IOS devices.
Note
- Tested against Cisco IOSXE Version 17.3 on CML.
- Using deleted state without config will delete all l3 attributes from all the interfaces.
- This module works with connection
network_cli
. See https://docs.ansible.com/ansible/latest/network/user_guide/platform_ios.html - The module examples uses callback plugin (stdout_callback = yaml) to generate task output in yaml format.
# Using merged
# Before state:
# -------------
#
# Router#show running-config | section ^interface
# interface Loopback999
# no ip address
# shutdown
# interface GigabitEthernet1
# description Management interface do not change
# ip address dhcp
# negotiation auto
# interface GigabitEthernet2
# ip address dhcp
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3
# description Configured and Overridden by Ansible Network
# no ip address
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet4
# no ip address
# shutdown
# negotiation auto
- name: Merge provided configuration with device configuration
cisco.ios.ios_l3_interfaces:
config:
- name: GigabitEthernet0/1
ipv4:
- address: 192.168.0.1/24
secondary: true
- name: GigabitEthernet2
ipv4:
- address: 192.168.0.2/24
- name: GigabitEthernet3
ipv6:
- address: fd5d:12c9:2201:1::1/64
- name: GigabitEthernet3.100
ipv4:
- address: 192.168.0.3/24
- name: Vlan901
autostate: false
ipv4:
- source_interface:
name: Loopback1
ipv6:
- enable: true
state: merged
# Task Output
# -----------
#
# before:
# - ipv4:
# - dhcp:
# enable: true
# name: GigabitEthernet1
# - ipv4:
# - dhcp:
# enable: true
# name: GigabitEthernet2
# - name: GigabitEthernet3
# - name: GigabitEthernet4
# - name: Loopback999
# commands:
# - interface GigabitEthernet2
# - ip address 192.168.0.2 255.255.255.0
# - interface GigabitEthernet3
# - ipv6 address fd5d:12c9:2201:1::1/64
# - interface GigabitEthernet3.100
# - ip address 192.168.0.3 255.255.255.0
# - interface Vlan901
# - ip unnumbered Loopback1
# - ipv6 enable
# - no autostate
# after:
# - ipv4:
# - dhcp:
# enable: true
# name: GigabitEthernet1
# - ipv4:
# - address: 192.168.0.2/24
# name: GigabitEthernet2
# - ipv6:
# - address: FD5D:12C9:2201:1::1/64
# name: GigabitEthernet3
# - name: GigabitEthernet3.100
# ipv4:
# - address: 192.168.0.3/24
# - name: GigabitEthernet4
# - name: Loopback999
# ipv4:
# - source_interface:
# name: Loopback1
# ipv6:
# - enable: true
# autostate: false
# - name: Vlan901
# After state:
# ------------
#
# Router#show running-config | section ^interface
# interface Loopback999
# no ip address
# shutdown
# interface GigabitEthernet1
# description Management interface do not change
# ip address dhcp
# negotiation auto
# interface GigabitEthernet2
# ip address 192.168.0.2 255.255.255.0
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3
# description Configured and Overridden by Ansible Network
# no ip address
# shutdown
# speed 1000
# no negotiation auto
# ipv6 address FD5D:12C9:2201:1::1/64
# interface GigabitEthernet3.100
# ip address 192.168.0.3 255.255.255.0
# interface GigabitEthernet4
# no ip address
# shutdown
# negotiation auto
# interface Vlan901
# ip unnumbered Loopback1
# ipv6 enable
# no autostate
# Using replaced
# Before state:
# -------------
#
# Router#show running-config | section ^interface
# interface Loopback999
# no ip address
# shutdown
# interface GigabitEthernet1
# description Management interface do not change
# ip address dhcp
# negotiation auto
# interface GigabitEthernet2
# ip address 192.168.0.2 255.255.255.0
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3
# description Configured and Overridden by Ansible Network
# no ip address
# shutdown
# speed 1000
# no negotiation auto
# ipv6 address FD5D:12C9:2201:1::1/64
# interface GigabitEthernet3.100
# interface GigabitEthernet4
# no ip address
# shutdown
# negotiation auto
- name: Replaces device configuration of listed interfaces with provided configuration
cisco.ios.ios_l3_interfaces:
config:
- name: GigabitEthernet2
ipv4:
- address: 192.168.2.0/24
- name: GigabitEthernet3
ipv4:
- dhcp:
client_id: GigabitEthernet2
hostname: test.com
state: replaced
# Task Output
# -----------
#
# before:
# - ipv4:
# - dhcp:
# enable: true
# name: GigabitEthernet1
# - ipv4:
# - address: 192.168.0.2/24
# name: GigabitEthernet2
# - ipv6:
# - address: FD5D:12C9:2201:1::1/64
# name: GigabitEthernet3
# - name: GigabitEthernet3.100
# - name: GigabitEthernet4
# - name: Loopback999
# commands:
# - interface GigabitEthernet2
# - ip address 192.168.0.3 255.255.255.0
# - no ip address 192.168.0.2 255.255.255.0
# - interface GigabitEthernet3
# - ip address dhcp client-id GigabitEthernet2 hostname test.com
# - no ipv6 address fd5d:12c9:2201:1::1/64
# after:
# - ipv4:
# - dhcp:
# enable: true
# name: GigabitEthernet1
# - ipv4:
# - address: 192.168.0.3/24
# name: GigabitEthernet2
# - ipv4:
# - dhcp:
# client_id: GigabitEthernet2
# enable: true
# hostname: test.com
# name: GigabitEthernet3
# - name: GigabitEthernet3.100
# - name: GigabitEthernet4
# - name: Loopback999
# After state:
# ------------
#
# router-ios#show running-config | section ^interface
# interface Loopback999
# no ip address
# shutdown
# interface GigabitEthernet1
# description Management interface do not change
# ip address dhcp
# negotiation auto
# interface GigabitEthernet2
# ip address 192.168.0.3 255.255.255.0
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3
# description Configured and Overridden by Ansible Network
# ip address dhcp client-id GigabitEthernet2 hostname test.com
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3.100
# interface GigabitEthernet4
# no ip address
# shutdown
# negotiation auto
# Using overridden
# Before state:
# -------------
#
# router-ios#show running-config | section ^interface
# interface Loopback999
# no ip address
# shutdown
# interface GigabitEthernet1
# description Management interface do not change
# ip address dhcp
# negotiation auto
# interface GigabitEthernet2
# ip address 192.168.0.3 255.255.255.0
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3
# description Configured and Overridden by Ansible Network
# ip address dhcp client-id GigabitEthernet2 hostname test.com
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3.100
# interface GigabitEthernet4
# no ip address
# shutdown
# negotiation auto
- name: Override device configuration of all interfaces with provided configuration
cisco.ios.ios_l3_interfaces:
config:
- ipv4:
- dhcp:
enable: true
name: GigabitEthernet1
- name: GigabitEthernet2
ipv4:
- address: 192.168.0.1/24
- name: GigabitEthernet3
state: overridden
# Task Output
# -----------
# before:
# - ipv4:
# - dhcp:
# enable: true
# name: GigabitEthernet1
# - ipv4:
# - address: 192.168.0.3/24
# name: GigabitEthernet2
# - ipv4:
# - dhcp:
# client_id: GigabitEthernet2
# enable: true
# hostname: test.com
# name: GigabitEthernet3
# - name: GigabitEthernet3.100
# - name: GigabitEthernet4
# - name: Loopback999
# commands:
# - interface GigabitEthernet2
# - ip address 192.168.0.1 255.255.255.0
# - no ip address 192.168.0.3 255.255.255.0
# - interface GigabitEthernet3
# - no ip address dhcp client-id GigabitEthernet2 hostname test.com
# after:
# - ipv4:
# - dhcp:
# enable: true
# name: GigabitEthernet1
# - ipv4:
# - address: 192.168.0.1/24
# name: GigabitEthernet2
# - name: GigabitEthernet3
# - name: GigabitEthernet3.100
# - name: GigabitEthernet4
# - name: Loopback999
# After state:
# ------------
#
# router-ios#show running-config | section ^interface
# interface Loopback999
# no ip address
# shutdown
# interface GigabitEthernet1
# description Management interface do not change
# ip address dhcp
# negotiation auto
# interface GigabitEthernet2
# ip address 192.168.0.1 255.255.255.0
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3
# description Configured and Overridden by Ansible Network
# no ip address
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3.100
# interface GigabitEthernet4
# no ip address
# shutdown
# negotiation auto
# Using deleted
# Before state:
# -------------
#
# router-ios#show running-config | section ^interface
# interface Loopback999
# no ip address
# shutdown
# interface GigabitEthernet1
# description Management interface do not change
# ip address dhcp
# negotiation auto
# interface GigabitEthernet2
# ip address 192.168.0.1 255.255.255.0
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3
# description Configured and Overridden by Ansible Network
# no ip address
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3.100
# interface GigabitEthernet4
# no ip address
# shutdown
# negotiation auto
- name: "Delete attributes of given interfaces (NOTE: This won't delete the interfaces)"
cisco.ios.ios_l3_interfaces:
config:
- name: GigabitEthernet2
- name: GigabitEthernet3.100
state: deleted
# Task Output
# -----------
#
# before:
# - ipv4:
# - dhcp:
# enable: true
# name: GigabitEthernet1
# - ipv4:
# - address: 192.168.0.1/24
# name: GigabitEthernet2
# - name: GigabitEthernet3
# - name: GigabitEthernet3.100
# - name: GigabitEthernet4
# - name: Loopback999
# commands:
# - interface GigabitEthernet2
# - no ip address 192.168.0.1 255.255.255.0
# after:
# - ipv4:
# - dhcp:
# enable: true
# name: GigabitEthernet1
# - name: GigabitEthernet2
# - name: GigabitEthernet3
# - name: GigabitEthernet3.100
# - name: GigabitEthernet4
# - name: Loopback999
# After state:
# -------------
#
# router-ios#show running-config | section ^interface
# interface Loopback999
# no ip address
# shutdown
# interface GigabitEthernet1
# description Management interface do not change
# ip address dhcp
# negotiation auto
# interface GigabitEthernet2
# no ip address
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3
# description Configured and Overridden by Ansible Network
# no ip address
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3.100
# interface GigabitEthernet4
# no ip address
# shutdown
# negotiation auto
# Using deleted without config passed, only interface's configuration will be negated
# Before state:
# -------------
# router-ios#show running-config | section ^interface
# interface Loopback999
# no ip address
# shutdown
# interface GigabitEthernet1
# description Management interface do not change
# ip address dhcp
# negotiation auto
# interface GigabitEthernet2
# ip address 192.168.0.2 255.255.255.0
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3
# description Configured and Overridden by Ansible Network
# no ip address
# shutdown
# speed 1000
# no negotiation auto
# ipv6 address FD5D:12C9:2201:1::1/64
# interface GigabitEthernet3.100
# interface GigabitEthernet4
# no ip address
# shutdown
# negotiation auto
- name: "Delete L3 config of all interfaces"
cisco.ios.ios_l3_interfaces:
state: deleted
# Task Output
# -----------
#
# before:
# - ipv4:
# - dhcp:
# enable: true
# name: GigabitEthernet1
# - ipv4:
# - address: 192.168.0.2/24
# name: GigabitEthernet2
# - ipv6:
# - address: FD5D:12C9:2201:1::1/64
# name: GigabitEthernet3
# - name: GigabitEthernet3.100
# - name: GigabitEthernet4
# - name: Loopback999
# commands:
# - interface GigabitEthernet1
# - no ip address dhcp
# - interface GigabitEthernet2
# - no ip address 192.168.0.2 255.255.255.0
# - interface GigabitEthernet3
# - no ipv6 address fd5d:12c9:2201:1::1/64
# after:
# - name: GigabitEthernet1
# - name: GigabitEthernet2
# - name: GigabitEthernet3
# - name: GigabitEthernet3.100
# - name: GigabitEthernet4
# - name: Loopback999
# After state:
# -------------
#
# interface Loopback999
# no ip address
# shutdown
# interface GigabitEthernet1
# description Management interface do not change
# negotiation auto
# interface GigabitEthernet2
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3
# description Configured and Overridden by Ansible Network
# no ip address
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3.100
# interface GigabitEthernet4
# no ip address
# shutdown
# negotiation auto
# Using gathered
# Before state:
# -------------
#
# Router#show running-config | section ^interface
# interface Loopback999
# no ip address
# shutdown
# interface GigabitEthernet1
# description Management interface do not change
# ip address dhcp
# negotiation auto
# interface GigabitEthernet2
# ip address 192.168.0.3 255.255.255.0
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3
# description Configured and Overridden by Ansible Network
# ip address dhcp client-id GigabitEthernet2 hostname test.com
# shutdown
# speed 1000
# no negotiation auto
# interface GigabitEthernet3.100
# interface GigabitEthernet4
# no ip address
# shutdown
# negotiation auto
- name: Gather facts for l3 interfaces
cisco.ios.ios_l3_interfaces:
state: gathered
# Task Output
# -----------
#
# gathered:
# - ipv4:
# - dhcp:
# enable: true
# name: GigabitEthernet1
# - ipv4:
# - address: 192.168.0.3/24
# name: GigabitEthernet2
# - ipv4:
# - dhcp:
# client_id: GigabitEthernet2
# enable: true
# hostname: test.com
# name: GigabitEthernet3
# - name: GigabitEthernet3.100
# - name: GigabitEthernet4
# - name: Loopback999
# Using rendered
- name: Render the commands for provided configuration
cisco.ios.ios_l3_interfaces:
config:
- name: GigabitEthernet1
ipv4:
- dhcp:
client_id: GigabitEthernet0/0
hostname: test.com
- name: GigabitEthernet2
ipv4:
- address: 198.51.100.1/24
secondary: true
- address: 198.51.100.2/24
ipv6:
- address: 2001:db8:0:3::/64
state: rendered
# Task Output
# -----------
#
# rendered:
# - interface GigabitEthernet1
# - ip address dhcp client-id GigabitEthernet0/0 hostname test.com
# - interface GigabitEthernet2
# - ip address 198.51.100.1 255.255.255.0 secondary
# - ip address 198.51.100.2 255.255.255.0
# - ipv6 address 2001:db8:0:3::/64
# Using parsed
# File: parsed.cfg
# ----------------
#
# interface GigabitEthernet0/1
# ip address dhcp client-id GigabitEthernet 0/0 hostname test.com
# interface GigabitEthernet0/2
# ip address 198.51.100.1 255.255.255.0
# ip address 198.51.100.2 255.255.255.0 secondary
# ipv6 address 2001:db8:0:3::/64
- name: Parse the provided configuration
cisco.ios.ios_l3_interfaces:
running_config: "{{ lookup('file', 'parsed.cfg') }}"
state: parsed
# Task Output
# -----------
#
# parsed:
# - ipv4:
# - dhcp:
# client_id: GigabitEthernet0/0
# hostname: test.com
# name: GigabitEthernet0/1
# - ipv4:
# - address: 198.51.100.1/24
# secondary: true
# - address: 198.51.100.2/24
# ipv6:
# - address: 2001:db8:0:3::/64
# name: GigabitEthernet0/2
Common return values are documented here, the following are the fields unique to this module:
- Sagar Paul (@KB-perByte)
- Sumit Jaiswal (@justjais)