cisco.ios.ios_l2_interfaces – Модуль ресурсов интерфейсов L2
Примечание
Этот плагин входит в коллекцию cisco.ios (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install cisco.ios.
Для использования в плейбуке укажите: cisco.ios.ios_l2_interfaces.
Новое в версии 1.0.0: модуля cisco.ios
Обзор
- Этот модуль предоставляет средства декларативного управления интерфейсами второго уровня на устройствах Cisco IOS.
Примечание
Данному модулю соответствует соответствующий плагин действия.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | ||
|---|---|---|---|---|
| config список / элементы=словарь | Словарь параметров интерфейса второго уровня | |||
| access словарь | Команда switchport mode access для настройки интерфейса как доступа второго уровня. | |||
| vlan целое число | Настройка указанного VLAN на порту доступа. Используется как идентификатор VLAN доступа. | |||
| mode строка |
| Режим настройки интерфейса. Интерфейс, у которого инкапсуляция trunk — "Авто", не может быть настроен в режиме "trunk". | ||
| name строка / обязательно | Полное имя интерфейса без номера логического блока, например, GigabitEthernet0/1. | |||
| trunk словарь | Команда switchport mode trunk для настройки интерфейса как канала второго уровня. Примечание: инкапсуляция всегда устанавливается в dot1q. | |||
| allowed_vlans список / элементы=строка | Список разрешенных VLAN на данном порту канала. Это единственные VLAN, которые будут настроены на канале. | |||
| encapsulation строка |
| Инкапсуляция trunking, когда интерфейс находится в режиме trunking. | ||
| native_vlan целое число | VLAN по умолчанию для настройки на порту канала. Используется как идентификатор VLAN по умолчанию для канала. | |||
| pruning_vlans список / элементы=строка | VLAN обрезки для настройки на порте канала. Используется как идентификатор VLAN обрезки для канала. | |||
| voice словарь | Команда switchport mode voice для настройки интерфейса с VLAN голосовой связи. | |||
| vlan целое число | Настройка указанного VLAN голосовой связи на порте доступа. Используется как идентификатор VLAN голосовой связи. | |||
| running_config строка | Этот параметр используется только со статусом parsed. Значение этого параметра должно быть результатом выполнения команды show running-config | section ^interface на устройстве IOS. Статус parsed считывает конфигурацию из параметра running_config и преобразует ее в структурированные данные Ansible в соответствии с argspec модуля ресурса, а затем возвращает значение в ключе parsed в результате. | |||
| state строка |
| Состояние, в котором должна сохраниться конфигурация. Состояния rendered, gathered и parsed не вносят изменений на устройстве. Состояние rendered преобразует конфигурацию в параметре config в платформенно-специфичные команды CLI, которые будут возвращены в ключе rendered в результате. Для состояния rendered активное подключение к удаленному узлу не требуется.Состояние gathered извлекает рабочую конфигурацию с устройства и преобразует ее в структурированные данные в формате, соответствующем argspec модуля ресурса, а значение возвращается в ключе gathered в результате. Состояние parsed считывает конфигурацию из параметра running_config и преобразует ее в формат JSON в соответствии с параметрами модуля ресурса, а значение возвращается в ключе parsed в результате. Значение параметра running_config должно иметь такой же формат, как вывод команды show running-config | include ip route|ipv6 route, выполненной на устройстве. Для состояния parsed активное подключение к удаленному узлу не требуется. | ||
Примечания
Примечание
- Проверено на Cisco IOSv версии 15.2 в VIRL.
Примеры
# 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
# 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 of listed l2 interfaces 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
# 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
# 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
# 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 any config passed
#"(NOTE: This will delete all of configured resource module attributes from each configured interface)"
# 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
# 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
# switchport access vlan 10
# interface GigabitEthernet0/2
# switchport trunk allowed vlan 10-20,40
# switchport trunk encapsulation dot1q
# switchport trunk native vlan 10
# switchport trunk pruning vlan 10,20
# switchport mode trunk
- name: Gather listed l2 interfaces with provided configurations
cisco.ios.ios_l2_interfaces:
config:
state: gathered
# Module Execution Result:
# ------------------------
#
# "gathered": [
# {
# "name": "GigabitEthernet0/0"
# },
# {
# "access": {
# "vlan": 10
# },
# "name": "GigabitEthernet0/1"
# },
# {
# "mode": "trunk",
# "name": "GigabitEthernet0/2",
# "trunk": {
# "allowed_vlans": [
# "10-20",
# "40"
# ],
# "encapsulation": "dot1q",
# "native_vlan": 10,
# "pruning_vlans": [
# "10",
# "20"
# ]
# }
# }
# ]
# After state:
# ------------
#
# vios#sh running-config | section ^interface
# interface GigabitEthernet0/1
# switchport access vlan 10
# interface GigabitEthernet0/2
# switchport trunk allowed vlan 10-20,40
# switchport trunk encapsulation dot1q
# switchport trunk native vlan 10
# switchport trunk pruning vlan 10,20
# switchport mode trunk
# 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
# Module Execution Result:
# ------------------------
#
# "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
# switchport mode access
# switchport access vlan 30
# interface GigabitEthernet0/2
# switchport trunk allowed vlan 15-20,40
# switchport trunk encapsulation dot1q
# switchport trunk native vlan 20
# switchport trunk pruning vlan 10,20
- name: Parse the commands for provided configuration
cisco.ios.ios_l2_interfaces:
running_config: "{{ lookup('file', 'parsed.cfg') }}"
state: parsed
# Module Execution Result:
# ------------------------
#
# "parsed": [
# {
# "access": {
# "vlan": 30
# },
# "mode": "access",
# "name": "GigabitEthernet0/1"
# },
# {
# "name": "GigabitEthernet0/2",
# "trunk": {
# "allowed_vlans": [
# "15-20",
# "40"
# ],
# "encapsulation": "dot1q",
# "native_vlan": 20,
# "pruning_vlans": [
# "10",
# "20"
# ]
# }
# }
# ]
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| after список / элементы=строка | при изменении | Конфигурация в виде структурированных данных после завершения модуля. Пример: Возвращаемая конфигурация всегда будет в том же формате, что и вышеуказанные параметры. |
| before список / элементы=строка | всегда | Конфигурация в виде структурированных данных до вызова модуля. Пример: Возвращаемая конфигурация всегда будет в том же формате, что и вышеуказанные параметры. |
| commands список / элементы=строка | всегда | Набор команд, отправленных на удаленное устройство Пример: ['interface GigabitEthernet0/1', 'switchport access vlan 20'] |
Авторы
- Sumit Jaiswal (@justjais)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/cisco/ios/ios_l2_interfaces_module.html