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 modules for Batfish (www.batfish.org)

Установить
ansible-galaxy install batfish/ansible
Лицензия
apache-2.0
Загрузки
8615
Владелец