batfish.base

Roles de Ansible para Batfish

Intentionet ha creado este rol de Ansible para permitir a los usuarios incrustar la validación previa al despliegue de Batfish o Batfish Enterprise en cualquier playbook de Ansible. Este rol está alojado en Ansible Galaxy como batfish.base. El rol incluye un conjunto de módulos de Ansible que analizan archivos de configuración para toda una red (o un subconjunto de ella), permitiendo a los usuarios extraer datos de configuración y realizar pruebas de validación a nivel de red de manera completamente independiente del proveedor.

Visión general de los módulos

Algunos de los módulos incluidos en el rol son:

  • bf_session - Configurar la conexión al servidor que ejecuta Batfish o Batfish Enterprise

  • bf_init_snapshot - Inicializar un snapshot de red

  • bf_extract_facts - Recuperar hechos de configuración para dispositivos en el snapshot

  • bf_validate_facts - Validar hechos de configuración para dispositivos en el snapshot

  • bf_assert - Validar el comportamiento de la red

Consulta la documentación para obtener una lista completa de módulos y su documentación, así como instrucciones para empaquetar tus snapshots de red

Ejemplos

El siguiente playbook de ejemplo muestra cómo usar el rol batfish.base para extraer la lista de interfaces para todos los dispositivos en la red. Consulta los tutoriales para obtener ejemplos adicionales.

---
- name: Extraer hechos de dispositivos de red usando Batfish y Ansible
  hosts: localhost
  connection: local
  gather_facts: no
  roles:
    - batfish.base

  tasks:

  - name: Configurar conexión al servicio de Batfish
    bf_session:
      host: localhost
      name: local_batfish

  - name: Inicializar la red de ejemplo
    bf_init_snapshot:
      network: example_network
      snapshot: example_snapshot
      snapshot_data: ../networks/example
      overwrite: true

  - name: Recuperar hechos de Batfish
    bf_extract_facts:
      output_directory: data/bf_facts
    register: bf_facts

  - name: Mostrar configuración de todas las interfaces en todos los nodos
    debug: msg=" {{item.value.Interfaces}} "
    with_dict: "{{bf_facts.result.nodes}}"
    loop_control:
      label: " {{item.key}}.Interfaces "
    when: bf_facts.failed|bool == false

Nota: para conectarte a un servicio de Batfish Enterprise, solo agrega session_type: bfe bajo parameters: en la tarea de configuración, por ejemplo:

  - name: Configurar conexión al servicio de Batfish Enterprise
    bf_session:
      host: localhost
      name: local_batfish
      parameters:
        session_type: bfe

Dependencias

Este módulo requiere que los siguientes paquetes estén instalados en la máquina de control de Ansible:

  • Python 3.6 o 3.7

  • Ansible >=2.7 <=2.9.9

  • Requisitos del módulo Batfish listados en requirements.txt

    • Para instalar estos requisitos, ejecuta:
      python3 -m pip install -r https://raw.githubusercontent.com/batfish/ansible/master/requirements.txt
      
  • Servicio y cliente de Batfish

    • Para usuarios de código abierto: para instalar Batfish y Pybatfish, puedes usar el playbook de configuración de batfish o ejecutar los siguientes comandos para actualizar y ejecutar 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
      
    • Para usuarios empresariales: sigue las instrucciones proporcionadas con Batfish Enterprise

Instalación

Asegúrate de que se cumplan las dependencias anteriores y luego obtén la última versión del rol desde Ansible Galaxy.

ansible-galaxy install --force batfish.base

Licencia

Apache 2.0

Soporte

Para informes de errores y solicitudes de características, puedes:

Contribuidores

Intentionet está contribuyendo y manteniendo este repositorio.

Acerca del proyecto

Ansible modules for Batfish (www.batfish.org)

Instalar
ansible-galaxy install batfish.base
Licencia
apache-2.0
Descargas
8.8k
Propietario