Настройка Ansible для использования с оборудованием Juniper — Финал

В первой части о работе Ansible на машинах Juniper я показал, как создать инфраструктуру для использования Ansible на сервере под управлением FreeBSD, а также как подключиться к машине Juniper для выполнения задач Ansible. Теперь мы переходим к части, в которой я покажу, как настроить некоторые примеры задач, которые мы выполняем ежедневно и которые могут быть полезны для вас.

В этом посте мы создадим 3 различных типа задач, в одной из которых мы будем выполнять «буквальные» команды, как если бы мы работали через cli, в другой мы импортируем полный уровень конфигурации и, наконец, как создать и настроить BGP-соседа с помощью шаблона, который использует переменные для создания конфигурационного файла, в конце руководства мы выполним только конфигурацию ASN и BGP-соседа, чтобы показать удобство использования «тегов» в ansible.

Файлы шаблонов

Помните, что в первой части мы создали базовую структуру каталогов для использования Ansible, теперь давайте создадим еще один каталог для хранения наших шаблонов.

[ansible@ansible ~]$ mkdir roles/mx80/templates
Войдите в полноэкранный режим Выход из полноэкранного режима

После создания каталога мы создадим файл «routing.conf» внутри каталога шаблонов
[ansible@ansible ~]$ vim roles/mx80/templates/routing.conf

При доступе к файлу, в моем случае, я вставляю следующий конфиг:

Наконец, давайте создадим файл для использования в качестве шаблона для конфигураций BGP-соседей, этот файл будет содержать несколько значений, которые можно будет редактировать с помощью переменных, таким образом, его можно будет использовать повторно в другое время, просто изменив значения переменных.

[ansible@ansible ~]$ vim roles/mx80/templates/bgp-neigh.j2
Войдите в полноэкранный режим Выход из полноэкранного режима

В качестве хорошей практики, идеальным вариантом в новой BGP-сессии является то, что ничего не объявляется и не принимается до того, как мы подтвердим, что сессия поднялась правильно и все в порядке. Итак, в моем сценарии есть политика маршрутизации под названием «Nothing», где любой маршрут отбрасывается в BGP-сессии.
Если вам интересно воспроизвести его в своем сценарии, вот как он настроен.

ansible@mx80> show configuration policy-options policy-statement Nada | display set
set policy-options policy-statement Nada term End then reject
Войдите в полноэкранный режим Выход из полноэкранного режима

В основном, вышеупомянутая политика отбрасывает любой BGP-маршрут, если он вставлен в фильтр импорта или экспорта маршрутов.

Это гарантирует, что когда мы загружаем BGP-сессию, ничего не будет получено или переслано неправильно, кроме того, что это хорошая практика.

Заполнение переменных для создания задачи BGP

После того, как мы показали, как создавать задачи и как генерировать шаблон конфигурации BGP-соседа, давайте перейдем к файлу переменных Ansible и создадим поля, которые будут присутствовать в шаблоне и которые во время выполнения будут получать значение из файла vars.yml для использования в шаблоне, который при выполнении плейбука будет заполнять этот файл.

[ansible@ansible ~]$ vim roles/mx80/vars/main.yml
Войдите в полноэкранный режим Выход из полноэкранного режима

В файле будут следующие поля:

Создание задач

Когда мы войдем под пользователем на сервере с помощью команды на терминале нашего сервера, мы откроем файл задач ansible, чтобы начать создание задач

[root@ansible ~]# su - ansible
[ansible@ansible ~]$ vim roles/mx80/tasks/main.yml
Войдите в полноэкранный режим Выход из полноэкранного режима

В наших файлах я буду использовать сайт Carbon, потому что, на мой взгляд, это лучшая визуализация

Внутри файла мы создадим задачи, о которых я уже упоминал ранее

Модуль «tags», существующий в каждой задаче, может использоваться или не использоваться, в зависимости от того, кто запускает плейбук, не вызывая ни одного тега, он будет запускать плейбук сверху вниз от первой до последней задачи.

Выполнение игровой программы

Теперь, когда задачи уже созданы, шаблоны созданы и переменные заполнены, давайте запустим учебник и посмотрим, что произойдет.

[ansible@ansible ~]$ ansible-playbook -i hosts prov-mx80.yml --tags routing-conf,bgp-arq-neighbor,bgp-conf-neighbor

PLAY [mx80] *****************************************************************************************************************************************************************************************************
TASK [mx80 : Inserindo routing-options] *************************************************************************************************************************************************************************changed: [mx80]

TASK [mx80 : Gerando arquivo de configuração BGP] ***************************************************************************************************************************************************************changed: [mx80 -> 127.0.0.1]

TASK [mx80 : configurando bgp via arquivo .conf] ****************************************************************************************************************************************************************changed: [mx80]

PLAY RECAP ******************************************************************************************************************************************************************************************************mx80-03-ita001             : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
Войдите в полноэкранный режим Выход из полноэкранного режима

Сначала все работало правильно, давайте теперь посмотрим в Juniper, правильно ли вставлены router-id и ASN.

ansible@mx80> show configuration routing-options
router-id 172.16.11.203;
autonomous-system 65001;
Войдите в полноэкранный режим Выход из полноэкранного режима

Выше мы правильно указали настройки параметров маршрутизации, выполняемые нашим шаблоном routing.conf.

Теперь проверим, настроил ли BGP группу в соответствии с введенными переменными:

ansible@mx80> show configuration protocols bgp group ansible-teste
type internal;
import Nada;
export Nada;
peer-as 65001;
neighbor 192.168.100.100 {
    description "Teste vizinho bgp via .conf ansible";
    local-address 192.168.100.101;
    import Nada;
    family inet {
        unicast;
    }
    export Nada;
}
neighbor 2001:db8::100:100 {
    description "Teste vizinho v6 bgp via .conf ansible";
    local-address 2001:db8::100:101;
    import Nada;
    family inet6 {
        unicast;
    }
    export Nada;
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Теперь давайте проверим, отображается ли BGP-сессия, поскольку конфигурации были настроены правильно

ansible@mx80> op show-bgp-neat | match 100
192.168.100.100                    65001  Idle         1:36             0       0         0         Teste vizinho bgp via .conf ansible
2001:db8::100:100                  65001  Idle         1:36             0       0         0         Teste vizinho v6 bgp via .conf ansible
Войдите в полноэкранный режим Выход из полноэкранного режима

Логически, по причинам исследования, не было активного BGP-соседа для уже установленной сессии, поэтому состояние в «Idle».

В этом руководстве была дана преемственность в выполнении задач с помощью Ansible и автоматизации задач в Juniper, я думаю, что это хорошее руководство для тех, кто начинает и хочет углубиться в автоматизацию сети.

Ниже я оставляю несколько ссылок, которые могут быть полезны:

Модули Ansible для Juniper

Руководство Juniper по работе с Ansible на Junos OS

Модули Ansible для Junos на Github

Оцените статью
Procodings.ru
Добавить комментарий