Spec-Zone.ru › Ansible

Модуль cisco.ios.ios_l2_interfaces — модуль ресурсов для настройки интерфейсов L2.

Примечание

Этот модуль входит в коллекцию cisco.ios (версия 11.4.1).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install cisco.ios.

Чтобы использовать её в плейбуке, укажите: cisco.ios.ios_l2_interfaces.

Добавлено в cisco.ios 1.0.0

  • Краткое описание
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения

Краткое описание

  • Этот модуль обеспечивает декларативное управление интерфейсами уровня 2 на устройствах Cisco IOS.

Примечание

Этому модулю соответствует плагин действия.

Псевдонимы: l2_interfaces

Параметры

Параметр

Комментарии

config

list / elements=dictionary

Словарь параметров интерфейса уровня 2

access

dictionary

Команда switchport mode access для настройки интерфейса как порта доступа уровня 2.

vlan

integer

Настройка указанной VLAN на порту доступа. Используется как идентификатор VLAN доступа.

vlan_name

string

Задать VLAN, если интерфейс работает в режиме доступа.

app_interface

boolean

Включить порт для размещения приложений (switchport app-interface)

Варианты:

  • false
  • true

block_options

dictionary

Отключить пересылку неизвестных одноадресных и многоадресных адресов.

multicast

boolean

Блокировать неизвестные многоадресные адреса

Варианты:

  • false
  • true

unicast

boolean

Блокировать неизвестные одноадресные адреса

Варианты:

  • false
  • true

encapsulation

dictionary

Настроить инкапсуляцию для интерфейса.

type

string

Тип инкапсуляции (например, dot1q).

vlan_id

integer

Идентификатор VLAN для инкапсуляции.

host

boolean

Настроить порт как хост (switchport host)

Варианты:

  • false
  • true

mode

string

Режим, в котором необходимо настроить интерфейс.

Интерфейс, для которого инкапсуляция транка задана как «Auto», нельзя настроить в режиме «trunk».

Варианты:

  • "access"
  • "trunk"
  • "dot1q_tunnel"
  • "dynamic"
  • "dynamic_auto"
  • "dynamic_desirable"
  • "private_vlan_host"
  • "private_vlan_promiscuous"
  • "private_vlan_trunk"

name

string / обязательный

Полное имя интерфейса без номера логического устройства, например GigabitEthernet0/1.

nonegotiate

boolean

Устройство не будет участвовать в протоколе согласования на этом интерфейсе (switchport nonegotiate)

Варианты:

  • false
  • true

private_vlan

dictionary

Задать конфигурацию частной VLAN.

add

boolean

Добавить VLAN в список частных VLAN.

Варианты:

  • false
  • true

association

boolean

Задать ассоциацию частной VLAN.

Варианты:

  • false
  • true

host

boolean

Задать ассоциацию хоста частной VLAN.

Варианты:

  • false
  • true

host_association

boolean

Задать ассоциацию хоста частной VLAN.

Варианты:

  • false
  • true

mapping

boolean

Задать отображение частной VLAN для promiscuous-порта.

Варианты:

  • false
  • true

primary_range

integer

Идентификатор VLAN из основного расширенного/обычного диапазона для отображения частной VLAN на promiscuous-порту.

remove

boolean

Удалить VLAN из списка частных VLAN.

Варианты:

  • false
  • true

secondary_range

integer

Идентификатор VLAN из вторичного расширенного/обычного диапазона для отображения частной VLAN на promiscuous-порту.

secondary_vlan_id

string

Идентификаторы вторичных VLAN для отображения частной VLAN на promiscuous-порту.

protected

boolean

Настроить интерфейс как защищенный порт (switchport protected)

Варианты:

  • false
  • true

spanning_tree

dictionary

Параметры протокола связующего дерева

bpdufilter

dictionary

Не отправлять и не принимать BPDU на этом интерфейсе

disabled

boolean

Отключить фильтрацию BPDU для этого интерфейса

Варианты:

  • false
  • true

enabled

boolean

Включить фильтрацию BPDU для этого интерфейса

Варианты:

  • false
  • true

bpduguard

dictionary

Не принимать BPDU на этом интерфейсе

disabled

boolean

Отключить защиту BPDU для этого интерфейса

Варианты:

  • false
  • true

enabled

boolean

Включить защиту BPDU для этого интерфейса

Варианты:

  • false
  • true

cost

integer

Изменить стоимость пути порта интерфейса в протоколе связующего дерева

guard

dictionary

Изменить режим защиты протокола связующего дерева для интерфейса

loop

boolean

Установить для интерфейса режим защиты от петель

Варианты:

  • false
  • true

none

boolean

Установить режим защиты «нет»

Варианты:

  • false
  • true

root

boolean

Установить для интерфейса режим защиты корневого моста

Варианты:

  • false
  • true

link_type

dictionary

Указать тип канала для протокола связующего дерева

point_to_point

boolean

Считать интерфейс соединением «точка-точка»

Варианты:

  • false
  • true

shared

boolean

Считать интерфейс общим

Варианты:

  • false
  • true

mst

dictionary

Множественное связующее дерево

cost

string

<1-200000000> Изменить стоимость пути интерфейса в протоколе связующего дерева для экземпляра

instance_range

string

Список экземпляров MST, например 0,2-4,6,8-12

port_priority

integer

Изменить приоритет порта в протоколе связующего дерева для экземпляра

port_priority

integer

Изменить приоритет порта интерфейса в протоколе связующего дерева

portfast

dictionary

Разрешить интерфейсу сразу переходить в состояние пересылки при поднятии канала

disabled

boolean

Отключить PortFast для этого интерфейса

Варианты:

  • false
  • true

trunk

boolean

Включить PortFast на интерфейсе, даже если он работает в режиме транка

Варианты:

  • false
  • true

rootguard

boolean

Включить защиту корневого моста на интерфейсе

Варианты:

  • false
  • true

vlan

dictionary

Протокол связующего дерева для VLAN коммутатора

cost

string

<1-200000000> Изменить стоимость пути интерфейса в протоколе связующего дерева для экземпляра

port_priority

integer

Изменить приоритет порта в протоколе связующего дерева для экземпляра

vlan_range

string

Список экземпляров MST, например 1,3-5,7,9-11

trunk

dictionary

Команда switchport mode trunk для настройки интерфейса как транка уровня 2. Примечание: инкапсуляция всегда задается как dot1q.

allowed_vlans

list / elements=string

Список разрешенных VLAN на указанном порту транка. На транке будут настроены только эти VLAN.

encapsulation

string

Инкапсуляция транка, если интерфейс работает в режиме транка.

Варианты:

  • "dot1q"
  • "isl"
  • "negotiate"

native_vlan

integer

Нативная VLAN для настройки на порту транка. Используется как идентификатор нативной VLAN транка.

pruning_vlans

list / elements=string

VLAN для отсечения на порту транка. Используется как идентификатор VLAN отсечения транка.

vepa

boolean

Настройка отражающей ретрансляции (switchport vepa enabled)

Варианты:

  • false
  • true

voice

dictionary

Команда switchport mode voice для настройки интерфейса с голосовой VLAN.

vlan

integer

Настроить указанную голосовую VLAN на порту доступа. Используется в качестве идентификатора голосовой VLAN.

vlan_name

string

Задать VLAN, если интерфейс работает в режиме доступа.

vlan_tag

string

Задать тег VLAN. dot1p (тег с приоритетом на PVID) none (не сообщать телефону о голосовой VLAN) untagged (без тега на PVID)

Варианты:

  • "dot1p"
  • "none"
  • "untagged"

xconnect

dictionary

Настроить ссылку xconnect для интерфейса.

address

string

IP-адрес удалённого узла.

encapsulation

string

Тип инкапсуляции для xconnect.

Варианты:

  • "mpls"
  • "l2tpv3"

manual

boolean

Настроить xconnect вручную.

Варианты:

  • false
  • true

pw_class

string

Имя класса псевдопровода.

sequencing

string

Параметры упорядочивания для xconnect.

Варианты:

  • "both"
  • "receive"
  • "transmit"

vcid

integer

Идентификатор виртуального канала.

running_config

string

Этот параметр используется только при состоянии parsed.

Значением этого параметра должен быть вывод, полученный от устройства IOS при выполнении команды show running-config | section ^interface.

Состояние parsed считывает конфигурацию из параметра running_config и преобразует её в структурированные данные Ansible согласно спецификации аргументов модуля ресурсов; затем значение возвращается в ключе parsed результата.

state

string

Состояние, в котором должна остаться конфигурация

Состояния rendered, gathered и parsed не вносят изменений на устройстве.

Состояние rendered преобразует конфигурацию из параметра config в специфичные для платформы команды CLI, которые будут возвращены в ключе rendered результата. Для состояния rendered активное подключение к удалённому хосту не требуется.

Состояние gathered получает текущую конфигурацию с устройства и преобразует её в структурированные данные в соответствии со спецификацией аргументов модуля ресурсов; значение возвращается в ключе gathered результата.

Состояние parsed считывает конфигурацию из параметра running_config и преобразует её в формат JSON в соответствии с параметрами модуля ресурсов; значение возвращается в ключе parsed результата. Значение параметра running_config должно иметь тот же формат, что и вывод команды show running-config | include ip route|ipv6 route, выполненной на устройстве. Для состояния parsed активное подключение к удалённому хосту не требуется.

Варианты:

  • "merged" ← (по умолчанию)
  • "replaced"
  • "overridden"
  • "deleted"
  • "rendered"
  • "gathered"
  • "parsed"

Примечания

Примечание

  • Проверено на Cisco IOSv версии 15.2 в CML.
  • Этот модуль работает с подключением network_cli. См. https://docs.ansible.com/ansible/latest/network/user_guide/platform_ios.html
  • В примерах модуля используется плагин обратного вызова (stdout_callback = yaml) для вывода результатов задачи в формате YAML.

Примеры

# Using merged

# Before state:
# -------------
#
# viosl2#show running-config | section ^interface
# interface GigabitEthernet0/1
#  description Configured by Ansible
#  negotiation auto
# interface GigabitEthernet0/2
#  description This is test
#  switchport access vlan 20
#  media-type rj45
#  negotiation auto

- name: Merge provided configuration with device configuration
  cisco.ios.ios_l2_interfaces:
    config:
      - name: GigabitEthernet0/1
        mode: access
        access:
          vlan: 10
        voice:
          vlan: 40
      - name: GigabitEthernet0/2
        mode: trunk
        trunk:
          allowed_vlans: 10-20,40
          native_vlan: 20
          pruning_vlans: 10,20
          encapsulation: dot1q
    state: merged

# Task Output
# -----------
#
# before:
# - name: GigabitEthernet0/1
# - access:
#     vlan: 20
#   name: GigabitEthernet0/2
# commands:
# - interface GigabitEthernet0/1
# - switchport access vlan 10
# - switchport voice vlan 40
# - switchport mode access
# - interface GigabitEthernet0/2
# - switchport mode trunk
# - switchport trunk encapsulation dot1q
# - switchport trunk native vlan 20
# - switchport trunk allowed vlan 10-20,40
# - switchport trunk pruning vlan 10,20
# after:
# - access:
#     vlan: 10
#   mode: access
#   name: GigabitEthernet0/1
#   voice:
#     vlan: 40
# - mode: trunk
#   name: GigabitEthernet0/2
#   trunk:
#     allowed_vlans:
#     - 10-20
#     - '40'
#     encapsulation: dot1q
#     native_vlan: 20
#     pruning_vlans:
#     - '10'
#     - '20'

# After state:
# ------------
#
# viosl2#show running-config | section ^interface
# interface GigabitEthernet0/1
#  description Configured by Ansible
#  switchport access vlan 10
#  switchport voice vlan 40
#  switchport mode access
#  negotiation auto
# interface GigabitEthernet0/2
#  description This is test
#  switchport trunk allowed vlan 10-20,40
#  switchport trunk encapsulation dot1q
#  switchport trunk native vlan 20
#  switchport trunk pruning vlan 10,20
#  switchport mode trunk
#  media-type rj45
#  negotiation auto

# Using replaced

# Before state:
# -------------
#
# viosl2#show running-config | section ^interface
# interface GigabitEthernet0/1
#  description Configured by Ansible
#  switchport access vlan 20
#  negotiation auto
# interface GigabitEthernet0/2
#  description This is test
#  switchport access vlan 20
#  media-type rj45
#  negotiation auto

- name: Replaces device configuration with provided configuration
  cisco.ios.ios_l2_interfaces:
    config:
      - name: GigabitEthernet0/2
        trunk:
          allowed_vlans: 20-25,40
          native_vlan: 20
          pruning_vlans: 10
          encapsulation: isl
    state: replaced

# Task Output
# -----------
#
# before:
# - name: GigabitEthernet0/1
# - access:
#     vlan: 20
#   name: GigabitEthernet0/2
# commands:
# - interface GigabitEthernet0/2
# - no switchport access vlan
# - switchport trunk encapsulation isl
# - switchport trunk native vlan 20
# - switchport trunk allowed vlan 20-25,40
# - switchport trunk pruning vlan 10
# after:
# - access:
#     vlan: 20
#   name: GigabitEthernet0/1
# - name: GigabitEthernet0/2
#   trunk:
#     allowed_vlans:
#     - 20-25
#     - '40'
#     encapsulation: isl
#     native_vlan: 20
#     pruning_vlans:
#     - '10'

# After state:
# -------------
#
# viosl2#show running-config | section ^interface
# interface GigabitEthernet0/1
#  description Configured by Ansible
#  switchport access vlan 20
#  negotiation auto
# interface GigabitEthernet0/2
#  description This is test
#  switchport trunk allowed vlan 20-25,40
#  switchport trunk encapsulation isl
#  switchport trunk native vlan 20
#  switchport trunk pruning vlan 10
#  media-type rj45
#  negotiation auto

# Using overridden

# Before state:
# -------------
#
# viosl2#show running-config | section ^interface
# interface GigabitEthernet0/1
#  description Configured by Ansible
#  switchport trunk encapsulation dot1q
#  switchport trunk native vlan 20
#  negotiation auto
# interface GigabitEthernet0/2
#  description This is test
#  switchport access vlan 20
#  switchport trunk encapsulation dot1q
#  switchport trunk native vlan 20
#  media-type rj45
#  negotiation auto

- name: Override device configuration of all l2 interfaces with provided configuration
  cisco.ios.ios_l2_interfaces:
    config:
      - name: GigabitEthernet0/2
        access:
          vlan: 20
        voice:
          vlan: 40
    state: overridden

# Task Output
# -----------
#
# before:
# - name: GigabitEthernet0/1
#   trunk:
#     encapsulation: dot1q
#     native_vlan: 20
# - access:
#     vlan: 20
#   name: GigabitEthernet0/2
#   trunk:
#     encapsulation: dot1q
#     native_vlan: 20
# commands:
# - interface GigabitEthernet0/1
# - no switchport trunk encapsulation
# - no switchport trunk native vlan
# - interface GigabitEthernet0/2
# - switchport voice vlan 40
# - no switchport trunk encapsulation
# - no switchport trunk native vlan
# after:
# - name: GigabitEthernet0/1
# - access:
#     vlan: 20
#   name: GigabitEthernet0/2
#   voice:
#     vlan: 40

# After state:
# -------------
#
# viosl2#show running-config | section ^interface
# interface GigabitEthernet0/1
#  description Configured by Ansible
#  negotiation auto
# interface GigabitEthernet0/2
#  description This is test
#  switchport access vlan 20
#  switchport voice vlan 40
#  media-type rj45
#  negotiation auto

# Using deleted

# Before state:
# -------------
#
# viosl2#show running-config | section ^interface
# interface GigabitEthernet0/1
#  description Configured by Ansible
#  switchport access vlan 20
#  negotiation auto
# interface GigabitEthernet0/2
#  description This is test
#  switchport access vlan 20
#  switchport trunk allowed vlan 20-40,60,80
#  switchport trunk encapsulation dot1q
#  switchport trunk native vlan 10
#  switchport trunk pruning vlan 10
#  media-type rj45
#  negotiation auto

- name: Delete IOS L2 interfaces as in given arguments
  cisco.ios.ios_l2_interfaces:
    config:
      - name: GigabitEthernet0/1
    state: deleted

# Task Output
# -----------
#
# before:
# - access:
#     vlan: 20
#   name: GigabitEthernet0/1
# - access:
#     vlan: 20
#   name: GigabitEthernet0/2
#   trunk:
#     allowed_vlans:
#     - 20-40
#     - '60'
#     - '80'
#     encapsulation: dot1q
#     native_vlan: 10
#     pruning_vlans:
#     - '10'
# commands:
# - interface GigabitEthernet0/1
# - no switchport access vlan
# after:
# - name: GigabitEthernet0/1
# - access:
#     vlan: 20
#   name: GigabitEthernet0/2
#   trunk:
#     allowed_vlans:
#     - 20-40
#     - '60'
#     - '80'
#     encapsulation: dot1q
#     native_vlan: 10
#     pruning_vlans:
#     - '10'

# After state:
# -------------
#
# viosl2#show running-config | section ^interface
# interface GigabitEthernet0/1
#  description Configured by Ansible
#  negotiation auto
# interface GigabitEthernet0/2
#  description This is test
#  switchport access vlan 20
#  switchport trunk allowed vlan 20-40,60,80
#  switchport trunk encapsulation dot1q
#  switchport trunk native vlan 10
#  switchport trunk pruning vlan 10
#  media-type rj45
#  negotiation auto

# Using deleted without config - delete all configuration

# Before state:
# -------------
#
# viosl2#show running-config | section ^interface
# interface GigabitEthernet0/1
#  description Configured by Ansible
#  switchport access vlan 20
#  negotiation auto
# interface GigabitEthernet0/2
#  description This is test
#  switchport access vlan 20
#  switchport trunk allowed vlan 20-40,60,80
#  switchport trunk encapsulation dot1q
#  switchport trunk native vlan 10
#  switchport trunk pruning vlan 10
#  media-type rj45
#  negotiation auto

- name: Delete IOS L2 interfaces as in given arguments
  cisco.ios.ios_l2_interfaces:
    state: deleted

# Task Output
# -----------
#
# before:
# - access:
#     vlan: 20
#   name: GigabitEthernet0/1
# - access:
#     vlan: 20
#   name: GigabitEthernet0/2
#   trunk:
#     allowed_vlans:
#     - 20-40
#     - '60'
#     - '80'
#     encapsulation: dot1q
#     native_vlan: 10
#     pruning_vlans:
#     - '10'
# commands:
# - interface GigabitEthernet0/1
# - no switchport access vlan
# - interface GigabitEthernet0/2
# - no switchport access vlan
# - no switchport trunk encapsulation
# - no switchport trunk native vlan
# - no switchport trunk allowed vlan
# - no switchport trunk pruning vlan
# after:
# - name: GigabitEthernet0/1
# - name: GigabitEthernet0/2

# After state:
# -------------
#
# viosl2#show running-config | section ^interface
# interface GigabitEthernet0/1
#  description Configured by Ansible
#  negotiation auto
# interface GigabitEthernet0/2
#  description This is test
#  media-type rj45
#  negotiation auto

# Using gathered

# Before state:
# -------------
#
# vios#sh running-config | section ^interface
# interface GigabitEthernet0/1
#  description Configured by Ansible
#  switchport access vlan 20
#  negotiation auto
# interface GigabitEthernet0/2
#  description This is test
#  switchport access vlan 20
#  switchport trunk allowed vlan 20-40,60,80
#  switchport trunk encapsulation dot1q
#  switchport trunk native vlan 10
#  switchport trunk pruning vlan 10
#  media-type rj45
#  negotiation auto

- name: Gather facts for l2 interfaces
  cisco.ios.ios_l2_interfaces:
    config:
    state: gathered

# Task Output
# -----------
#
# gathered:
# - access:
#     vlan: 20
#   name: GigabitEthernet0/1
# - access:
#     vlan: 20
#   name: GigabitEthernet0/2
#   trunk:
#     allowed_vlans:
#     - 20-40
#     - '60'
#     - '80'
#     encapsulation: dot1q
#     native_vlan: 10
#     pruning_vlans:
#     - '10'

# Using rendered

- name: Render the commands for provided  configuration
  cisco.ios.ios_l2_interfaces:
    config:
      - name: GigabitEthernet0/1
        access:
          vlan: 30
      - name: GigabitEthernet0/2
        trunk:
          allowed_vlans: 10-20,40
          native_vlan: 20
          pruning_vlans: 10,20
          encapsulation: dot1q
    state: rendered

# Task Output
# -----------
#
# rendered:
# - interface GigabitEthernet0/1
# - switchport access vlan 30
# - interface GigabitEthernet0/2
# - switchport trunk encapsulation dot1q
# - switchport trunk native vlan 20
# - switchport trunk allowed vlan 10-20,40
# - switchport trunk pruning vlan 10,20

# Using Parsed

# File: parsed.cfg
# ----------------
#
# interface GigabitEthernet0/1
#  description Configured by Ansible
#  switchport access vlan 20
#  negotiation auto
# interface GigabitEthernet0/2
#  description This is test
#  switchport access vlan 20
#  switchport trunk allowed vlan 20-40,60,80
#  switchport trunk encapsulation dot1q
#  switchport trunk native vlan 10
#  switchport trunk pruning vlan 10
#  media-type rj45
#  negotiation auto

- name: Parse the commands for provided configuration
  cisco.ios.ios_l2_interfaces:
    running_config: "{{ lookup('file', 'parsed.cfg') }}"
    state: parsed

# Task Output
# -----------
#
# parsed:
# - access:
#     vlan: 20
#   name: GigabitEthernet0/1
# - access:
#     vlan: 20
#   name: GigabitEthernet0/2
#   trunk:
#     allowed_vlans:
#     - 20-40
#     - '60'
#     - '80'
#     encapsulation: dot1q
#     native_vlan: 10
#     pruning_vlans:
#     - '10'

Возвращаемые значения

Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:

Ключ

Описание

after

dictionary

Конфигурация после выполнения модуля.

Возвращается: при наличии изменений

Пример: "This output will always be in the same format as the module argspec.\n"

before

dictionary

Конфигурация до выполнения модуля.

Возвращается: когда state имеет значение merged, replaced, overridden, deleted или purged

Пример: "This output will always be in the same format as the module argspec.\n"

commands

list / elements=string

Набор команд, отправленных на удалённое устройство.

Возвращается: когда state имеет значение merged, replaced, overridden, deleted или purged

Пример: ["interface GigabitEthernet0/2", "switchport trunk allowed vlan 15-20,40", "switchport trunk encapsulation dot1q"]

gathered

list / elements=string

Факты о сетевом ресурсе, собранные с удалённого устройства в виде структурированных данных.

Возвращается: когда state имеет значение gathered

Пример: ["This output will always be in the same format as the module argspec.\n"]

parsed

list / elements=string

Собственная конфигурация устройства, указанная в параметре running_config и разобранная в структурированные данные согласно спецификации аргументов модуля.

Возвращается: когда state имеет значение parsed

Пример: ["This output will always be in the same format as the module argspec.\n"]

rendered

list / elements=string

Конфигурация, указанная в задаче и преобразованная в собственный формат устройства (в автономном режиме).

Возвращается: когда state имеет значение rendered

Пример: ["interface GigabitEthernet0/1", "switchport access vlan 30", "switchport trunk encapsulation dot1q"]

Авторы

  • Sagar Paul (@KB-petByte)
  • Sumit Jaiswal (@justjais)
  • Nikhil Bhasin (@nickbhasin)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/cisco/ios/ios_l2_interfaces_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API