vrf_command

vrf_command

Ansible Galaxy

Эта роль Ansible Network предоставляет возможность динамически отправлять зависимые от VRF сетевые команды на сетевые устройства. В настоящее время поддерживается на устройствах IOS / EOS / NXOS.

Роль предназначена для улучшения стандартного поведения следующих модулей:

  • ios_command
  • nxos_command
  • eos_command

Демонстрация

Смотрите Пример Playbook 2 для получения подробностей о сценарии этой демонстрации.

Пример 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 году Сайедом Рахманом.

Установить
ansible-galaxy install syedur-rahman/ansible-role-vrf-command
Лицензия
mit
Загрузки
78
Владелец
A network engineer with a passion for all things automation.