arista.eos.eos_l2_interfaces – L2 interfaces resource module

Note

This plugin is part of the arista.eos collection (version 2.2.0).

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 arista.eos.

To use it in a playbook, specify: arista.eos.eos_l2_interfaces.

New in version 1.0.0: of arista.eos

Synopsis

  • This module provides declarative management of Layer-2 interface on Arista EOS devices.

Note

This module has a corresponding action plugin.

Parameters

Parameter Choices/Defaults Comments
config
list / elements=dictionary
A dictionary of Layer-2 interface options
access
dictionary
Switchport mode access command to configure the interface as a layer 2 access.
vlan
integer
Configure given VLAN in access port. It's used as the access VLAN ID.
mode
string
    Choices:
  • access
  • trunk
Mode in which interface needs to be configured.
Access mode is not shown in interface facts, so idempotency will not be maintained for switchport mode access and every time the output will come as changed=True.
name
string / required
Full name of interface, e.g. Ethernet1.
trunk
dictionary
Switchport mode trunk command to configure the interface as a Layer 2 trunk.
native_vlan
integer
Native VLAN to be configured in trunk port. It is used as the trunk native VLAN ID.
trunk_allowed_vlans
list / elements=string
List of allowed VLANs in a given trunk port. These are the only VLANs that will be configured on the trunk.
running_config
string
This option is used only with state parsed.
The value of this option should be the output received from the EOS device by executing the command show running-config | section ^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
    Choices:
  • merged
  • replaced
  • overridden
  • deleted
  • parsed
  • rendered
  • gathered
The state of the configuration after module completion

Notes

Note

  • Tested against Arista EOS 4.20.10M
  • This module works with connection network_cli. See the EOS Platform Options.

Examples

# Using merged

# Before state:
# -------------
#
# veos#show running-config | section interface
# interface Ethernet1
#    switchport access vlan 20
# !
# interface Ethernet2
#    switchport trunk native vlan 20
#    switchport mode trunk
# !
# interface Management1
#    ip address dhcp
#    ipv6 address auto-config
# !

- name: Merge provided configuration with device configuration.
  arista.eos.eos_l2_interfaces:
    config:
    - name: Ethernet1
      mode: trunk
      trunk:
        native_vlan: 10
    - name: Ethernet2
      mode: access
      access:
        vlan: 30
    state: merged

# After state:
# ------------
#
# veos#show running-config | section interface
# interface Ethernet1
#    switchport trunk native vlan 10
#    switchport mode trunk
# !
# interface Ethernet2
#    switchport access vlan 30
# !
# interface Management1
#    ip address dhcp
#    ipv6 address auto-config
# !

# Using replaced

# Before state:
# -------------
#
# veos2#show running-config | s int
# interface Ethernet1
#    switchport access vlan 20
# !
# interface Ethernet2
#    switchport trunk native vlan 20
#    switchport mode trunk
# !
# interface Management1
#    ip address dhcp
#    ipv6 address auto-config
# !

- name: Replace device configuration of specified L2 interfaces with provided configuration.
  arista.eos.eos_l2_interfaces:
    config:
    - name: Ethernet1
      mode: trunk
      trunk:
        native_vlan: 20
        trunk_vlans: 5-10, 15
    state: replaced

# After state:
# ------------
#
# veos#show running-config | section interface
# interface Ethernet1
#    switchport trunk native vlan 20
#    switchport trunk allowed vlan 5-10,15
#    switchport mode trunk
# !
# interface Ethernet2
#    switchport trunk native vlan 20
#    switchport mode trunk
# !
# interface Management1
#    ip address dhcp
#    ipv6 address auto-config
# !

# Using overridden

# Before state:
# -------------
#
# veos#show running-config | section interface
# interface Ethernet1
#    switchport access vlan 20
# !
# interface Ethernet2
#    switchport trunk native vlan 20
#    switchport mode trunk
# !
# interface Management1
#    ip address dhcp
#    ipv6 address auto-config
# !

- name: Override device configuration of all L2 interfaces on device with provided
    configuration.
  arista.eos.eos_l2_interfaces:
    config:
    - name: Ethernet2
      mode: access
      access:
        vlan: 30
    state: overridden

# After state:
# ------------
#
# veos#show running-config | section interface
# interface Ethernet1
# !
# interface Ethernet2
#    switchport access vlan 30
# !
# interface Management1
#    ip address dhcp
#    ipv6 address auto-config
# !

# Using deleted

# Before state:
# -------------
#
# veos#show running-config | section interface
# interface Ethernet1
#    switchport access vlan 20
# !
# interface Ethernet2
#    switchport trunk native vlan 20
#    switchport mode trunk
# !
# interface Management1
#    ip address dhcp
#    ipv6 address auto-config
# !

- name: Delete EOS L2 interfaces as in given arguments.
  arista.eos.eos_l2_interfaces:
    config:
    - name: Ethernet1
    - name: Ethernet2
    state: deleted

# After state:
# ------------
#
# veos#show running-config | section interface
# interface Ethernet1
# !
# interface Ethernet2
# !
# interface Management1
#    ip address dhcp
#    ipv6 address auto-config

# using rendered

- name: Use Rendered to convert the structured data to native config
  arista.eos.eos_l2_interfaces:
    config:
    - name: Ethernet1
      mode: trunk
      trunk:
        native_vlan: 10
    - name: Ethernet2
      mode: access
      access:
        vlan: 30
    state: merged

# Output :
# ------------
#
# - "interface Ethernet1"
# - "switchport trunk native vlan 10"
# - "switchport mode trunk"
# - "interface Ethernet2"
# - "switchport access vlan 30"
# - "interface Management1"
# - "ip address dhcp"
# - "ipv6 address auto-config"


# using parsed

# parsed.cfg

# interface Ethernet1
#    switchport trunk native vlan 10
#    switchport mode trunk
# !
# interface Ethernet2
#    switchport access vlan 30
# !

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

# Output:
#   parsed:
#      - name: Ethernet1
#        mode: trunk
#        trunk:
#          native_vlan: 10
#      - name: Ethernet2
#        mode: access
#        access:
#          vlan: 30


# Using gathered:
# Existing config on the device:
#
# veos#show running-config | section interface
# interface Ethernet1
#    switchport trunk native vlan 10
#    switchport mode trunk
# !
# interface Ethernet2
#    switchport access vlan 30
# !

- name: Gather interfaces facts from the device
  arista.eos.l2_interfaces:
    state: gathered
# output:
#   gathered:
#      - name: Ethernet1
#        mode: trunk
#        trunk:
#          native_vlan: 10
#      - name: Ethernet2
#        mode: access
#        access:
#          vlan: 30

Return Values

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

Key Returned Description
after
list / elements=string
when changed
The configuration as structured data after module completion.

Sample:
The configuration returned will always be in the same format of the parameters above.
before
list / elements=string
always
The configuration as structured data prior to module invocation.

Sample:
The configuration returned will always be in the same format of the parameters above.
commands
list / elements=string
always
The set of commands pushed to the remote device.

Sample:
['interface Ethernet2', 'switchport access vlan 20']


Authors

  • Nathaniel Case (@qalthos)

© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/arista/eos/eos_l2_interfaces_module.html