batfish.base
Rôles Ansible pour Batfish
Intentionet a créé ce rôle Ansible pour permettre aux utilisateurs d'intégrer la validation de pré-déploiement de Batfish ou de Batfish Enterprise dans n'importe quel playbook Ansible. Ce rôle est hébergé sur Ansible Galaxy sous le nom batfish.base
. Le rôle comprend un ensemble de modules Ansible qui analysent les fichiers de configuration pour un réseau entier (ou un sous-ensemble), permettant aux utilisateurs d'extraire des données de configuration et d'effectuer des tests de validation à l'échelle du réseau de manière totalement indépendante du fournisseur.
Vue d'ensemble des modules
Voici quelques modules inclus dans le rôle :
bf_session - Configure la connexion au serveur exécutant Batfish ou Batfish Enterprise
bf_init_snapshot - Initialise un snapshot du réseau
bf_extract_facts - Récupère les faits de configuration pour les équipements dans le snapshot
bf_validate_facts - Valide les faits de configuration pour les équipements dans le snapshot
bf_assert - Valide le comportement du réseau
Consultez les docs pour une liste complète des modules et leur documentation, ainsi que les instructions pour empaqueter vos snapshots de réseau
Exemples
Le playbook d'exemple ci-dessous décrit comment utiliser le rôle batfish.base
pour extraire la liste des interfaces de tous les équipements du réseau. Consultez les tutoriels pour d'autres exemples.
---
- name: Extraire les faits des équipements réseau avec Batfish et Ansible
hosts: localhost
connection: local
gather_facts: no
roles:
- batfish.base
tasks:
- name: Configurer la connexion au service Batfish
bf_session:
host: localhost
name: local_batfish
- name: Initialiser le réseau d'exemple
bf_init_snapshot:
network: example_network
snapshot: example_snapshot
snapshot_data: ../networks/example
overwrite: true
- name: Récupérer les faits de Batfish
bf_extract_facts:
output_directory: data/bf_facts
register: bf_facts
- name: Afficher la configuration pour toutes les interfaces sur tous les nœuds
debug: msg=" {{item.value.Interfaces}} "
with_dict: "{{bf_facts.result.nodes}}"
loop_control:
label: " {{item.key}}.Interfaces "
when: bf_facts.failed|bool == false
Note : pour se connecter à un service Batfish Enterprise, ajoutez simplement session_type: bfe
sous parameters:
dans la tâche de configuration, par exemple :
- name: Configurer la connexion au service Batfish Enterprise
bf_session:
host: localhost
name: local_batfish
parameters:
session_type: bfe
Dépendances
Ce module nécessite l'installation des paquets suivants sur la machine de contrôle Ansible :
Python 3.6 ou 3.7
Ansible >=2.7 <=2.9.9
Exigences du module Batfish listées dans
requirements.txt
- Pour installer ces exigences, exécutez :
python3 -m pip install -r https://raw.githubusercontent.com/batfish/ansible/master/requirements.txt
- Pour installer ces exigences, exécutez :
Service et client Batfish
Pour les utilisateurs open source : pour installer Batfish et Pybatfish, vous pouvez utiliser le playbook de configuration de Batfish ou exécuter les commandes suivantes pour mettre à jour et exécuter 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
Pour les utilisateurs entreprise : suivez les instructions fournies avec Batfish Enterprise
Installation
Assurez-vous que les dépendances ci-dessus sont satisfaites, puis obtenez la dernière version du rôle depuis Ansible Galaxy.
ansible-galaxy install --force batfish.base
Licence
Apache 2.0
Support
Pour les rapports de bogues et les demandes de fonctionnalités, vous pouvez :
- Ouvrir un problème sur Github
- Rejoindre notre groupe Slack et poser une question
Contributeurs
Intentionet contribue à ce dépôt et en assure la maintenance.
ansible-galaxy install batfish.base