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
- Para instalar estos requisitos, ejecuta:
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:
- Abrir un issue en Github
- Unirte a nuestro Grupo de Slack y publicar una pregunta
Contribuidores
Intentionet está contribuyendo y manteniendo este repositorio.
Ansible modules for Batfish (www.batfish.org)
ansible-galaxy install batfish.base