vrf_command
vrf_command
Эта роль Ansible Network предоставляет возможность динамически отправлять зависимые от VRF сетевые команды на сетевые устройства. В настоящее время поддерживается на устройствах IOS / EOS / NXOS.
Роль предназначена для улучшения стандартного поведения следующих модулей:
ios_command
nxos_command
eos_command
Демонстрация
Смотрите Пример Playbook 2 для получения подробностей о сценарии этой демонстрации.
Требования
Нет.
Переменная роли
Следующее значение следует обновить в зависимости от ваших требований (см. defaults/main.yml
):
vrf_command_list:
- "show ip route vrf <vrf>"
- "show version"
vrf_command_list
следует обновить, чтобы включить все команды, которые вы хотите выполнить на ваших сетевых устройствах. Чтобы команда для отображения работала в зависимом от VRF режиме, следует использовать синтаксис <vrf>
, как показано выше.
<vrf>
в команде будет заменяться на доступные VRF на устройстве, включая глобальную таблицу. Например, если на устройстве есть VRF dev
и prod
, команда show ip route vrf <vrf>
будет динамически расширяться на следующее:
show ip route
show ip route vrf dev
show ip route vrf prod
Обратите внимание, что вы также можете выполнять обычные команды, не связанные с VRF, с помощью этой роли.
Переменная вывода
Роль генерирует пользовательскую переменную вывода для удобства пользователя, называемую vrf_command_output
.
Формат структуры данных выглядит следующим образом:
vrf_command_output:
- command: "show ip route vrf dev"
failed: False
output: "...77.77.77.0 is directly connected, FastEthernet1/0\n..." (опущено)
- command: "show blah blah"
failed: True
output: "...% Invalid input detected at..." (опущено)
Структура данных возвращает список значений. В каждом элементе списка содержатся три ключа.
command
- Команда отображения, которая была выполнена на сетевом устройстве.failed
- Булевый параметр, гдеtrue
означает, что команда не удалась, аfalse
- что команда была выполнена успешно.output
- Вывод команды отображения.
Пример Playbook 1
Приведенный ниже пример playbook демонстрирует базовое использование роли.
- hosts: all
vars:
vrf_command_list:
- "show ip interface brief vrf <vrf>"
- "show ip route vrf <vrf>"
- "show interface status"
- "show version"
roles:
- syedur_rahman.vrf_command
Пример Playbook 2
Приведенный ниже пример playbook демонстрирует манипуляцию с vrf_command_output
для записи в текстовые файлы.
- hosts: all
vars:
vrf_command_list:
- "show ip route vrf <vrf>"
roles:
- syedur_rahman.vrf_command
- hosts: localhost
tasks:
- template:
src: "show_command.j2"
dest: "{{ item }}.txt"
loop: "{{ groups['all'] }}"
Шаблон show_command.j2
выглядит следующим образом.
{% for show_command_info in hostvars[item]['vrf_command_output'] %}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{{ show_command_info['command'] }}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{{ show_command_info['output'] }}
{% endfor %}
Это приведет к созданию файлов вывода следующего типа для каждого устройства.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
show ip route vrf management
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IP Route Table for VRF "management"
'*' обозначает лучший унифицированный следующий переход
'**' обозначает лучший многокаст следующий переход
'[x/y]' обозначает [предпочтение/метрика]
'%<string>' в выводе via обозначает VRF <string>
192.168.12.0/24, ubest/mbest: 1/0, присоединенный
*через 192.168.12.135, mgmt0, [0/0], 05:12:12, прямое
192.168.12.135/32, ubest/mbest: 1/0, присоединенный
*через 192.168.12.135, mgmt0, [0/0], 05:12:12, локальный
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
show ip route
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IP Route Table for VRF "default"
'*' обозначает лучший унифицированный следующий переход
'**' обозначает лучший многокаст следующий переход
'[x/y]' обозначает [предпочтение/метрика]
'%<string>' в выводе via обозначает VRF <string>
2.2.2.0/24, ubest/mbest: 1/0, присоединенный
*через 2.2.2.2, Lo100, [0/0], 05:12:28, прямое
2.2.2.2/32, ubest/mbest: 1/0, присоединенный
*через 2.2.2.2, Lo100, [0/0], 05:12:28, локальный
2.3.4.0/24, ubest/mbest: 1/0, присоединенный
*через 2.3.4.5, Lo23, [0/0], 05:12:28, прямое
2.3.4.5/32, ubest/mbest: 1/0, присоединенный
*через 2.3.4.5, Lo23, [0/0], 05:12:28, локальный
Лицензия
MIT
Информация об авторе
Эта роль была создана в 2020 году Сайедом Рахманом.
VRF-aware network commands.
ansible-galaxy install syedur-rahman/ansible-role-vrf-command