cisco.iosxr.iosxr_interfaces module – Resource module to configure interfaces.

Note

This module is part of the cisco.iosxr collection (version 10.2.2).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install cisco.iosxr.

To use it in a playbook, specify: cisco.iosxr.iosxr_interfaces.

New in cisco.iosxr 1.0.0

Synopsis

  • This module manages the interface attributes on Cisco IOS-XR network devices.

Parameters

Parameter

Comments

config

list / elements=dictionary

A dictionary of interface options

description

string

Interface description.

duplex

string

Configures the interface duplex mode. Default is auto-negotiation when not configured.

Choices:

  • "full"

  • "half"

enabled

boolean

Administrative state of the interface.

Set the value to True to administratively enable the interface or False to disable it.

Choices:

  • false

  • true ← (default)

mtu

integer

Sets the MTU value for the interface. Applicable for Ethernet interfaces only.

Refer to vendor documentation for valid values.

name

string / required

Full name of the interface to configure in type + path format. e.g. GigabitEthernet0/0/0/0

speed

integer

Configure the speed for an interface. Default is auto-negotiation when not configured.

running_config

string

This option is used only with state parsed.

The value of this option should be the output received from the IOS-XR device by executing the command show running-config interface.

The state parsed reads the configuration from running_config option and transforms it into Ansible structured data as per the resource module’s argspec and the value is then returned in the parsed key within the result.

state

string

The state of the configuration after module completion

Choices:

  • "merged" ← (default)

  • "parsed"

  • "deleted"

  • "replaced"

  • "rendered"

  • "gathered"

  • "overridden"

Notes

Note

Examples

# Using merged

# Before state:
# -------------
#
# viosxr#show running-config interface
# interface Loopback888
# !
# interface Loopback999
# !
# interface MgmtEth0/RP0/CPU0/0
#  ipv4 address dhcp
# !

- name: Configure Ethernet interfaces
  cisco.iosxr.iosxr_interfaces:
    config:
      - name: GigabitEthernet0/0/0/2
        description: Configured by Ansible
        enabled: true
      - name: GigabitEthernet0/0/0/3
        description: Configured by Ansible Network
        enabled: false
        duplex: full
    state: merged

# Task Output
# -----------
#
# before:
# - enabled: true
#   name: Loopback888
# - enabled: true
#   name: Loopback999
# commands:
# - interface GigabitEthernet0/0/0/2
# - description Configured by Ansible
# - no shutdown
# - interface GigabitEthernet0/0/0/3
# - description Configured by Ansible Network
# - duplex full
# - shutdown
# after:
# - enabled: true
#   name: Loopback888
# - enabled: true
#   name: Loopback999
# - description: Configured by Ansible
#   enabled: true
#   name: GigabitEthernet0/0/0/2
# - description: Configured by Ansible Network
#   duplex: full
#   enabled: false
#   name: GigabitEthernet0/0/0/3

# After state:
# ------------
#
# viosxr#show running-config interface
# interface Loopback888
# !
# interface Loopback999
# !
# interface MgmtEth0/RP0/CPU0/0
#  ipv4 address dhcp
# !
# interface preconfigure GigabitEthernet0/0/0/2
#  description Configured by Ansible
# !
# interface preconfigure GigabitEthernet0/0/0/3
#  description Configured by Ansible Network
#  duplex full
#  shutdown
# !

# Using replaced

# Before state:
# ------------
#
# viosxr#show running-config interface
# interface Loopback888
# !
# interface Loopback999
# !
# interface MgmtEth0/RP0/CPU0/0
#  ipv4 address dhcp
# !
# interface preconfigure GigabitEthernet0/0/0/2
#  description Configured by Ansible
# !
# interface preconfigure GigabitEthernet0/0/0/3
#  description Configured by Ansible Network
#  duplex full
#  shutdown
# !

- name: Replace their existing configuration per interface
  cisco.iosxr.iosxr_interfaces:
    config:
      - name: GigabitEthernet0/0/0/2
        description: Configured by Ansible
        enabled: true
        mtu: 2000
      - name: GigabitEthernet0/0/0/3
        description: Configured by Ansible Network
        enabled: false
        duplex: auto
    state: replaced

# Task Output
# -----------
#
# before:
# - enabled: true
#   name: Loopback888
# - enabled: true
#   name: Loopback999
# - description: Configured by Ansible
#   enabled: true
#   name: GigabitEthernet0/0/0/2
# - description: Configured by Ansible Network
#   duplex: full
#   enabled: false
#   name: GigabitEthernet0/0/0/3
# commands:
# - interface GigabitEthernet0/0/0/2
# - mtu 2000
# - interface GigabitEthernet0/0/0/3
# - duplex half
# after:
# - enabled: true
#   name: Loopback888
# - enabled: true
#   name: Loopback999
# - description: Configured by Ansible
#   enabled: true
#   mtu: 2000
#   name: GigabitEthernet0/0/0/2
# - description: Configured by Ansible Network
#   duplex: half
#   enabled: false
#   name: GigabitEthernet0/0/0/3

# After state:
# ------------
#
# viosxr#show running-config interface
# interface Loopback888
# !
# interface Loopback999
# !
# interface MgmtEth0/RP0/CPU0/0
#  ipv4 address dhcp
# !
# interface preconfigure GigabitEthernet0/0/0/2
#  description Configured by Ansible
#  mtu 2000
# !
# interface preconfigure GigabitEthernet0/0/0/3
#  description Configured by Ansible Network
#  duplex half
#  shutdown
# !

# Using overridden

# Before state:
# ------------
#
# viosxr#show running-config interface
# interface Loopback888
# !
# interface Loopback999
# !
# interface MgmtEth0/RP0/CPU0/0
#  ipv4 address dhcp
# !
# interface preconfigure GigabitEthernet0/0/0/2
#  description Configured by Ansible
#  mtu 2000
# !
# interface preconfigure GigabitEthernet0/0/0/3
#  description Configured by Ansible Network
#  duplex half
#  shutdown
# !

- name: Override interfaces configuration
  cisco.iosxr.iosxr_interfaces:
    config:
      - name: GigabitEthernet0/0/0/2
        description: Configured by Ansible
        enabled: true
        duplex: auto
      - name: GigabitEthernet0/0/0/3
        description: Configured by Ansible Network
        enabled: false
        speed: 1000
    state: overridden

# Task Output
# -----------
#
# before:
# - enabled: true
#   name: Loopback888
# - enabled: true
#   name: Loopback999
# - description: Configured by Ansible
#   enabled: true
#   mtu: 2000
#   name: GigabitEthernet0/0/0/2
# - description: Configured by Ansible Network
#   duplex: half
#   enabled: false
#   name: GigabitEthernet0/0/0/3
# commands:
# - interface GigabitEthernet0/0/0/2
# - no mtu
# - duplex half
# - interface GigabitEthernet0/0/0/3
# - no description
# - no shutdown
# - no duplex
# after:
# - enabled: true
#   name: Loopback888
# - enabled: true
#   name: Loopback999
# - description: Configured by Ansible
#   duplex: half
#   enabled: true
#   name: GigabitEthernet0/0/0/2
# - enabled: true
#   name: GigabitEthernet0/0/0/3

# After state:
# ------------
#
# viosxr#show running-config interface
# interface Loopback888
# !
# interface Loopback999
# !
# interface MgmtEth0/RP0/CPU0/0
#  ipv4 address dhcp
# !
# interface preconfigure GigabitEthernet0/0/0/2
#  description Configured by Ansible
#  duplex half
# !
# interface preconfigure GigabitEthernet0/0/0/3
# !

# Using deleted

# Before state:
# ------------
#
# viosxr#show running-config interface
# interface Loopback888
# !
# interface Loopback999
# !
# interface MgmtEth0/RP0/CPU0/0
#  ipv4 address dhcp
# !
# interface preconfigure GigabitEthernet0/0/0/2
#  description Configured by Ansible
#  duplex half
# !
# interface preconfigure GigabitEthernet0/0/0/3
# !

- name: Delete interfaces arguments
  cisco.iosxr.iosxr_interfaces:
    config:
      - name: GigabitEthernet0/0/0/2
      - name: GigabitEthernet0/0/0/3
    state: deleted

# Task Output
# -----------
#
# before:
# - enabled: true
#   name: Loopback888
# - enabled: true
#   name: Loopback999
# - description: Configured by Ansible
#   duplex: half
#   enabled: true
#   name: GigabitEthernet0/0/0/2
# - enabled: true
#   name: GigabitEthernet0/0/0/3
# commands:
# - interface GigabitEthernet0/0/0/2
# - no description
# - no duplex
# after:
# - enabled: true
#   name: Loopback888
# - enabled: true
#   name: Loopback999
# - enabled: true
#   name: GigabitEthernet0/0/0/2
# - enabled: true
#   name: GigabitEthernet0/0/0/3

# After state:
# ------------
#
# viosxr#show running-config interface
# interface Loopback888
# !
# interface Loopback999
# !
# interface MgmtEth0/RP0/CPU0/0
#  ipv4 address dhcp
# !
# interface preconfigure GigabitEthernet0/0/0/2
# !
# interface preconfigure GigabitEthernet0/0/0/3
# !

# Using parsed

# File: parsed.cfg
# ----------------
#
# interface Loopback888
#  description test for ansible
#  shutdown
# !
# interface MgmtEth0/0/CPU0/0
#  ipv4 address 10.8.38.70 255.255.255.0
# !
# interface GigabitEthernet0/0/0/0
#  description Configured and Merged by Ansible-Network
#  mtu 110
#  ipv4 address 172.31.1.1 255.255.255.0
#  duplex half
# !
# interface GigabitEthernet0/0/0/3
#  shutdown
# !
# interface GigabitEthernet0/0/0/4
#  shutdown
# !

# - name: Parse provided configuration
#   cisco.iosxr.iosxr_interfaces:
#     running_config: "{{ lookup('file', './parsed.cfg') }}"
#     state: parsed

# Task Output
# -----------
#
# parsed:
# - name: MgmtEth0/RP0/CPU0/0
# - access_groups:
#   - acls:
#     - direction: in
#       name: acl_1
#     - direction: out
#       name: acl_2
#     afi: ipv4
#   - acls:
#     - direction: in
#       name: acl6_1
#     - direction: out
#       name: acl6_2
#     afi: ipv6
#   name: GigabitEthernet0/0/0/0
# - access_groups:
#   - acls:
#     - direction: out
#       name: acl_1
#     afi: ipv4
#   name: GigabitEthernet0/0/0/1


# Using rendered

- name: Render platform specific commands from task input using rendered state
  cisco.iosxr.iosxr_interfaces:
    config:
      - name: GigabitEthernet0/0/0/0
        description: Configured and Merged by Ansible-Network
        mtu: 110
        enabled: true
        duplex: half
      - name: GigabitEthernet0/0/0/1
        description: Configured and Merged by Ansible-Network
        mtu: 2800
        enabled: false
        speed: 100
        duplex: full
    state: rendered

# Task Output
# -----------
#
# rendered:
# - interface GigabitEthernet0/0/0/0
# - description Configured and Merged by Ansible-Network
# - mtu 110
# - duplex half
# - no shutdown
# - interface GigabitEthernet0/0/0/1
# - description Configured and Merged by Ansible-Network
# - mtu 2800
# - speed 100
# - duplex full
# - shutdown


# Using gathered

# Before state:
# ------------
#
# RP/0/0/CPU0:an-iosxr-02#show running-config  interface
# interface Loopback888
# description test for ansible
# shutdown
# !
# interface MgmtEth0/0/CPU0/0
# ipv4 address 10.8.38.70 255.255.255.0
# !
# interface GigabitEthernet0/0/0/0
# description Configured and Merged by Ansible-Network
# mtu 110
# ipv4 address 172.31.1.1 255.255.255.0
# duplex half
# !
# interface GigabitEthernet0/0/0/3
# shutdown
# !
# interface GigabitEthernet0/0/0/4
# shutdown
# !

- name: Gather facts for interfaces
  cisco.iosxr.iosxr_interfaces:
    config:
    state: gathered

# Task Output
# -----------
#
# gathered:
# - description: test for ansible
#   enabled: false
#   name: Loopback888
# - description: Configured and Merged by Ansible-Network
#   duplex: half
#   enabled: true
#   mtu: 110
#   name: GigabitEthernet0/0/0/0
# - enabled: false
#   name: GigabitEthernet0/0/0/3
# - enabled: false
#   name: GigabitEthernet0/0/0/4

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key

Description

after

list / elements=string

The configuration as structured data after module completion.

Returned: when changed

Sample: ["The configuration returned will always be in the same format of the parameters above."]

before

list / elements=string

The configuration as structured data prior to module invocation.

Returned: always

Sample: ["The configuration returned will always be in the same format of the parameters above."]

commands

list / elements=string

The set of commands pushed to the remote device

Returned: always

Sample: ["interface GigabitEthernet0/0/0/2", "description: Configured by Ansible", "shutdown"]

Authors

  • Sumit Jaiswal (@justjais)

  • Rohit Thakur (@rohitthakur2590)