base
Роли Ansible для Batfish
Компания Intentionet создала эту роль Ansible, чтобы пользователи могли встроить предварительную проверку развертывания Batfish или Batfish Enterprise в любой плейбук Ansible. Эта роль размещена на Ansible Galaxy под названием batfish.base
. Роль включает набор модулей Ansible, которые анализируют конфигурационные файлы для всей сети (или ее части), позволяя пользователям извлекать данные конфигурации и проводить тесты проверки конфигурации по всей сети независимо от вендора.
Обзор модулей
Некоторые модули, включенные в роль:
bf_session - Настроить соединение с сервером, на котором работает Batfish или Batfish Enterprise
bf_init_snapshot - Инициализировать снимок сети
bf_extract_facts - Получить конфигурационные факты для устройств в снимке
bf_validate_facts - Проверить конфигурационные факты для устройств в снимке
bf_assert - Проверить поведение сети
Смотрите документацию для полного списка модулей и их описания, а также инструкции по упаковке ваших сетевых снимков
Примеры
Ниже приведен пример плейбука, который описывает, как использовать роль batfish.base
для извлечения списка интерфейсов всех устройств в сети. Ознакомьтесь с учебниками для получения дополнительных примеров.
---
- name: Извлечение фактов сетевых устройств с помощью Batfish и Ansible
hosts: localhost
connection: local
gather_facts: no
roles:
- batfish.base
tasks:
- name: Настройка соединения с Batfish
bf_session:
host: localhost
name: local_batfish
- name: Инициализация примерной сети
bf_init_snapshot:
network: example_network
snapshot: example_snapshot
snapshot_data: ../networks/example
overwrite: true
- name: Получение фактов Batfish
bf_extract_facts:
output_directory: data/bf_facts
register: bf_facts
- name: Отображение конфигурации для всех интерфейсов на всех узлах
debug: msg=" {{item.value.Interfaces}} "
with_dict: "{{bf_facts.result.nodes}}"
loop_control:
label: " {{item.key}}.Interfaces "
when: bf_facts.failed|bool == false
Примечание: чтобы подключиться к службе Batfish Enterprise, просто добавьте session_type: bfe
под parameters:
в задаче настройки, например:
- name: Настройка соединения с Batfish Enterprise
bf_session:
host: localhost
name: local_batfish
parameters:
session_type: bfe
Зависимости
Этот модуль требует, чтобы на управляющей машине Ansible были установлены следующие пакеты:
Python 3.6 или 3.7
Ansible >=2.7 <=2.9.9
Требования модуля Batfish, указанные в
requirements.txt
- Чтобы установить эти требования, выполните:
python3 -m pip install -r https://raw.githubusercontent.com/batfish/ansible/master/requirements.txt
- Чтобы установить эти требования, выполните:
Сервис и клиент Batfish
Для пользователей с открытым исходным кодом: чтобы установить Batfish и Pybatfish, вы можете использовать плейбук настройки batfish или выполнить следующие команды для обновления и запуска Batfish:
python3 -m pip install --upgrade pybatfish docker pull batfish/allinone docker run -v batfish-data:/data -p 8888:8888 -p 9997:9997 -p 9996:9996 batfish/allinone
Для пользователей корпоративной версии: следуйте инструкциям, предоставленным с Batfish Enterprise
Установка
Убедитесь, что выполнены условия зависимостей выше, а затем получите последнюю версию роли из Ansible Galaxy.
ansible-galaxy install --force batfish.base
Лицензия
Apache 2.0
Поддержка
Для сообщений об ошибках и запросов на функции вы можете:
- Открыть issue на Github
- Присоединиться к нашей группе Slack и задать вопрос
Участники
Intentionet способствует развитию и поддержке этого репозитория.
ansible-galaxy install batfish/ansible