Skip to content

eos_l3_interfaces

Collection Note

This module is part of the arista.eos collection. To install the collection, use:

ansible-galaxy collection install arista.eos
Added in version 1.0.0.

Synopsis

  • This module provides declarative management of Layer 3 interfaces on Arista EOS devices.

Parameters

Parameter Defaults / Choices Comments
config
list / elements=dict
A dictionary of Layer 3 interface options
config.ipv4 List of IPv4 addresses to be set for the Layer 3 interface mentioned in I(name) option.
config.ipv6 List of IPv6 addresses to be set for the Layer 3 interface mentioned in I(name) option.
config.name Full name of the interface, i.e. Ethernet1.
running_config
str
This option is used only with state I(parsed).
The value of this option should be the output received from the EOS device by executing the command B(show running-config | section ^interface).
The state I(parsed) reads the configuration from C(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 I(parsed) key within the result.
state
str
Default: merged
Choices: merged, replaced, overridden, deleted, parsed, gathered, rendered
The state of the configuration after module completion

Notes

Note

  • Tested against Arista EOS 4.24.6F
  • This module works with connection C(network_cli). See U(https://docs.ansible.com/ansible/latest/network/user_guide/platform_eos.html) 'eos_l2_interfaces/eos_interfaces' should be used for preparing the interfaces, before applying L3 configurations using this module (eos_l3_interfaces).

Examples

# Using merged

# Before state:
# -------------
#
# test#show running-config | section interface
# interface Ethernet1
# !
# interface Ethernet2
#    description Configured by Ansible
#    shutdown
# !
# interface Management1
#    ip address dhcp
#    dhcp client accept default-route

- name: Merge provided configuration with device configuration.
  arista.eos.eos_l3_interfaces:
    config:
      - name: Ethernet1
        ipv4:
          - address: 198.51.100.14/24
      - name: Ethernet2
        ipv4:
          - address: 203.0.113.27/24
    state: merged

# Task Output
# -----------
#
# before:
# - name: Ethernet1
# - name: Ethernet2
# - ipv4:
#   - address: dhcp
#   name: Management1
# commands:
# - interface Ethernet1
# - ip address 198.51.100.14/24
# - interface Ethernet2
#   - ip address 203.0.113.27/24
# after:
# - ipv4:
#   - address: 198.51.100.14/24
#   name: Ethernet1
# - ipv4:
#   - address: 203.0.113.27/24
#   name: Ethernet2
# - ipv4:
#   - address: dhcp
#   name: Management1

# After state:
# ------------
#
# test#show running-config | section interface
# interface Ethernet1
#    ip address 198.51.100.14/24
# !
# interface Ethernet2
#    description Configured by Ansible
#    shutdown
#    ip address 203.0.113.27/24
# !
# interface Management1
#    ip address dhcp
#    dhcp client accept default-route

# Using overridden

# Before state:
# -------------
#
# test#show running-config | section interface
# interface Ethernet1
#    ip address 198.51.100.14/24
# !
# interface Ethernet2
#    ip address 203.0.113.27/24
# !
# interface Management1
#    ip address dhcp
#    dhcp client accept default-route

- name: Override device configuration of all L2 interfaces on device with provided
    configuration.
  arista.eos.eos_l3_interfaces:
    config:
      - name: Ethernet1
        ipv6:
          - address: 2001:db8:feed::1/96
      - name: Ethernet2
        ipv4:
          - address: 203.0.113.27/24
      - ipv4:
          - address: dhcp
        name: Management1
    state: overridden

# Task Output
# -----------
#
# before:
# - ipv4:
#   - address: 198.51.100.14/24
#   name: Ethernet1
# - ipv4:
#   - address: 203.0.113.27/24
#   name: Ethernet2
# - ipv4:
#   - address: dhcp
#   name: Management1
# commands:
# - interface Ethernet1
# - ipv6 address 2001:db8:feed::1/96
# - no ip address
# after:
# - ipv6:
#   - address: 2001:db8:feed::1/96
#   name: Ethernet1
# - ipv4:
#   - address: 203.0.113.27/24
#   name: Ethernet2
# - ipv4:
#   - address: dhcp
#   name: Management1

# After state:
# ------------
#
# test#show running-config | section interface
# interface Ethernet1
#    ipv6 address 2001:db8:feed::1/96
# !
# interface Ethernet2
#    ip address 203.0.113.27/24
# !
# interface Management1
#    ip address dhcp
#    dhcp client accept default-route

# Using replaced

# Before state:
# -------------
#
# test#show running-config | section interface
# interface Ethernet1
#    ipv6 address 2001:db8:feed::1/96
# !
# interface Ethernet2
#    ip address 203.0.113.27/24
# !
# interface Management1
#    ip address dhcp
#    dhcp client accept default-route

- name: Replace device configuration of specified L2 interfaces with provided configuration.
  arista.eos.eos_l3_interfaces:
    config:
      - name: Ethernet2
        ipv4:
          - address: 203.0.113.27/24
    state: replaced

# Task Output
# -----------
#
# before:
# - ipv6:
#   - address: 2001:db8:feed::1/96
#   name: Ethernet1
# - ipv4:
#   - address: 203.0.113.27/24
#   name: Ethernet2
# - ipv4:
#   - address: dhcp
#   name: Management1
# commands:
# - interface Ethernet2
# - ip address 203.0.113.28/24
# after:
# - ipv6:
#   - address: 2001:db8:feed::1/96
#   name: Ethernet1
# - ipv4:
#   - address: 203.0.113.28/24
#   name: Ethernet2
# - ipv4:
#   - address: dhcp
#   name: Management1

# After state:
# ------------
#
# test#show running-config | section interface
# interface Ethernet1
#    ipv6 address 2001:db8:feed::1/96
# !
# interface Ethernet2
#    ip address 203.0.113.28/24
# !
# interface Management1
#    ip address dhcp
#    dhcp client accept default-route

# Using deleted

# Before state:
# -------------
#
# test#show running-config | section interface
# interface Ethernet1
#    ipv6 address 2001:db8:feed::1/96
# !
# interface Ethernet2
#    ip address 203.0.113.28/24
# !
# interface Management1
#    ip address dhcp
#    dhcp client accept default-route

- name: Delete L3 attributes of given interfaces.
  arista.eos.eos_l3_interfaces:
    config:
      - name: Ethernet1
      - name: Ethernet2
    state: deleted

# Task Output
# -----------
#
# before:
# - ipv6:
#   - address: 2001:db8:feed::1/96
#   name: Ethernet1
# - ipv4:
#   - address: 203.0.113.28/24
#   name: Ethernet2
# - ipv4:
#   - address: dhcp
#   name: Management1
# commands:
# - interface Ethernet1
# - no ipv6 address 2001:db8:feed::1/96
# - interface Ethernet2
# - no ip address
# after:
# - name: Ethernet1
# - name: Ethernet2
# - ipv4:
#   - address: dhcp
#   name: Management1

# After state:
# ------------
#
# test#show running-config | section interface
# interface Ethernet1
# !
# interface Ethernet2
# !
# interface Management1
#    ip address dhcp
#    dhcp client accept default-route

# Using Parsed

# File: parsed.cfg
# ----------------
#
# veos#show running-config | section interface
# interface Ethernet1
#    ip address 198.51.100.14/24
# !
# interface Ethernet2
#    ip address 203.0.113.27/24
# !

- name: Use parsed to convert native configs to structured data
  arista.eos.interfaces:
    running_config: "{{ lookup('file', 'parsed.cfg') }}"
    state: parsed

# Module Execution Result:
# ------------------------
#
# parsed:
#  - name: Ethernet1
#    ipv4:
#      - address: 198.51.100.14/24
#  - name: Ethernet2
#    ipv4:
#      - address: 203.0.113.27/24

# Using rendered:

- name: Use Rendered to convert the structured data to native config
  arista.eos.eos_l3_interfaces:
    config:
      - name: Ethernet1
        ipv4:
          - address: 198.51.100.14/24
      - name: Ethernet2
        ipv4:
          - address: 203.0.113.27/24
    state: rendered

# Module Execution Result:
# ------------------------
#
# rendered:
# - interface Ethernet1
# - ip address 198.51.100.14/24
# - interface Ethernet2
# - ip address 203.0.113.27/24

# using gathered:

# Before state:
# -------------
#
# test#show running-config | section interface
# interface Ethernet1
#    ip address 198.51.100.14/24
# !
# interface Ethernet2
#    ip address 203.0.113.27/24
# !

- name: Gather l3 interfaces facts from the device
  arista.eos.l3_interfaces:
    state: gathered

# Module Execution Result:
# ------------------------
#
# gathered:
#  - name: Ethernet1
#    ipv4:
#      - address: 198.51.100.14/24
#  - name: Ethernet2
#    ipv4:
#      - address: 203.0.113.27/24

Return Values

Key Data Type Description Returned
after dict The resulting configuration after module execution. when changed
before dict The configuration prior to the module execution. when I(state) is C(merged), C(replaced), C(overridden), C(deleted) or C(purged)
commands list The set of commands pushed to the remote device. when I(state) is C(merged), C(replaced), C(overridden), C(deleted) or C(purged)
gathered list Facts about the network resource gathered from the remote device as structured data. when I(state) is C(gathered)
parsed list The device native config provided in I(running_config) option parsed into structured data as per module argspec. when I(state) is C(parsed)
rendered list The provided configuration in the task rendered in device-native format (offline). when I(state) is C(rendered)

Authors

  • Nathaniel Case (@qalthos)