[PYTHON] J'ai créé un outil de collecte de configuration de routeur Config Collecor

Aperçu

J'ai modifié l'outil de collecte de configuration de routeur que j'ai posté plus tôt et l'ai publié sur PyPI. [Outil pour acquérir de manière centralisée la configuration du routeur Cisco / Juniper] (http://qiita.com/taijijiji/items/620908c1bec27e1ea933)

https://pypi.python.org/pypi/ConfigCollector https://github.com/taijiji/ConfigCollector

Cela a pris du temps car c'était ma première inscription PyPI, mais j'ai réussi à faire mes débuts avec PyPI.

motivation

Je voulais gérer la configuration du routeur avec Git, mais avant Git, il était difficile de collecter la configuration du groupe de routeurs d'exploitation, j'ai donc créé un collecteur de configuration qui peut collecter la configuration de tous les routeurs avec une seule commande. J'ai fait.

J'ai pensé à l'automatiser en incluant la commande Git, mais "Si vous confilct, vous devez le sélectionner manuellement." "Si vous téléchargez de force la configuration du routeur, qui est une information confidentielle, vous risquez d'avoir des problèmes lorsque vous faites une erreur." La cible de cet outil est la "connexion SSH à plusieurs routeurs" car il était difficile d'implémenter des fonctions optionnelles telles que git remove au moment de l'erreur (je ne suis pas sûr si une implémentation gênante est nécessaire). Obtenir la configuration ・ Limité à la "collecte".

Installation

En le publiant sur PyPI, il peut être installé avec la commande pip.

pip install configcolletctor

Si vous n'avez jamais utilisé pip, veuillez installer pip en vous référant à cet article. [Les premiers packages à inclure dans Python setuptools et pip] (http://www.lifewithpython.com/2012/11/Python-package-setuptools-pip.html)

Comment utiliser

Après l'installation, exécutez l'outil de cette manière.

configcollector -i [inventory_file] -o [output_dirctory]
[
    {
        "hostname" : "router1",
        "username" : "user1",
        "password" : "aaabbbccc",
        "ipv4"     : "192.168.0.1",
        "os"       : "JUNOS"
    },
    {
        "hostname" : "router2",
        "username" : "user2",
        "password" : "aaabbbccc",
        "ipv4"     : "192.168.0.2",
        "os"       : "IOS-XR"
    },
    {
        "hostname" : "router3",
        "username" : "user3",
        "password" : "aaabbbccc",
        "ipv4"     : "192.168.0.3",
        "os"       : "IOS"
    }
]

Exemple d'utilisation

Utilisez ConfigCollector comme suit.

Tout d'abord, créez un répertoire de destination de sortie dans lequel la configuration du routeur est enregistrée.

    % mkdir router_config

Exécutez ConfigCollector

    % configcollector -i sample_routers.json -o router_config/

    Accessing router: router1...
    Writing output file "router_config/router1"...
    Success : "router_config/router1"!
    Accessing router: router2...
    Writing output file "router_config/router2"...
    Success : "router_config/router2"!
    Accessing router: router3...
    Writing output file "router_config/router3"...
    Success : "router_config/router3"!

Vérifiez le fichier créé.

    % ls router_config
    router1.txt  router2.txt  router3.txt
    % less router1.txt

    show configuration | no-more
    ## Last commit: 2015-05-01 17:00:00 JST by user1
    version x.x.x;
    system {
        host-name router1;
        time-zone Asia/Tokyo;
    (snip)

c'est tout.

Gestion Git de la configuration du routeur à l'aide de cet outil

Vous pouvez gérer la configuration du routeur acquise par cet outil avec la procédure suivante.

  1. Créez un référentiel pour la configuration du routeur à l'aide du serveur de gestion Git
  2. Obtenez la configuration du routeur
 % configcollector -i sample_routers.json -o router_config/
  1. Ajouté à git staging (désigné comme candidat à la mise à jour)
 % git add router_config/ . 

4.git commit (effectuer la mise à jour)

 % git commit 
  1. Télécharger dans le référentiel distant git (télécharger sur le serveur de gestion Git)
 % git push
 (Première fois seulement% git push origin master)
  1. Vérifiez auprès du serveur de gestion Git

Impressions

Je me suis inscrit à PyPI pour la première fois de ma vie. Je suis heureux d'avoir pu rejoindre pour la première fois les rangs des committeers décents de l'OSS. Il y a de nombreux endroits où je ne sais pas encore comment utiliser PyPI et OSS, je vous serais donc reconnaissant de bien vouloir me donner quelques commentaires. https://pypi.python.org/pypi/ConfigCollector https://github.com/taijiji/ConfigCollector

Recommended Posts

J'ai créé un outil de collecte de configuration de routeur Config Collecor
J'ai créé un outil d'estampage automatique du navigateur.
〇✕ J'ai fait un jeu
J'ai créé un outil utile pour Digital Ocean
J'ai créé un outil pour compiler nativement Hy
J'ai joué avec Diamond, un outil de collecte de métriques
J'ai créé un outil pour obtenir de nouveaux articles
Création de l'outil de gestion des utilisateurs Let's Chat
J'ai créé un outil de génération de données texte répétitif "rpttxt"
J'ai fait un texte Python
J'ai fait un robot discord
J'ai créé un outil pour créer un nuage de mots à partir de wikipedia
[Titan Craft] J'ai créé un outil pour invoquer un géant sur Minecraft
J'ai créé un site d'apprentissage C ++
J'ai fait un Line-bot avec Python!
J'ai créé un script de traduction basé sur CUI (2)
J'ai fait une loterie avec Python.
J'ai créé un script de traduction basé sur CUI
Outil pour convertir la configuration Juniper
J'ai créé un démon avec Python
J'ai créé une bibliothèque qui lit facilement les fichiers de configuration avec Python
Création d'un outil CLI client / serveur WebSocket (comme WebSocket version netcat)
J'ai essayé de créer un outil d'échafaudage pour le framework Web Python Bottle
[Kaggle] J'ai fait une collection de problèmes en utilisant le didacticiel Titanic
J'ai créé un nouveau compartiment AWS S3
J'ai créé un docset de tableau de bord pour Holoviews
J'ai créé un outil pour parcourir automatiquement plusieurs sites avec Selenium (Python)
J'ai fait un programme de gestion de la paie en Python!
J'ai touché "Orator" alors j'ai fait une note
J'ai fait un compteur de caractères avec Python
Débutant: j'ai créé un lanceur à l'aide d'un dictionnaire
J'ai créé un outil CLI pour convertir les images de chaque répertoire en PDF
J'ai fait une sorte d'outil de traitement d'image simple en langage Go.
J'ai fait un interlocuteur comme Siri
J'ai fait un script pour afficher des pictogrammes
J'ai fait une carte hexadécimale avec Python
J'ai créé un outil pour convertir Jupyter py en ipynb avec VS Code
J'ai fait un jeu de vie avec Numpy
J'ai créé un outil qui facilite un peu la décompression avec CLI (Python3)
J'ai fait un générateur Hanko avec GAN
Après avoir étudié Python3, j'ai créé un Slackbot
J'ai créé un outil de mot de passe en Python.
J'ai fait un jeu rogue-like avec Python
J'ai fait un simple blackjack avec Python
J'ai créé un fichier de configuration avec Python
J'ai fait une bibliothèque pour l'assurance actuarielle
J'ai fait une application WEB avec Django
J'ai fait un simulateur de neurones avec Python
J'ai fait un outil pour estimer le temps d'exécution de cron (+ débuts de PyPI)
J'ai créé un outil pour informer Slack des événements Connpass et en ai fait Terraform
Je viens de créer un outil pour afficher facilement les données sous forme de graphique par opération GUI
J'ai créé un outil pour générer du Markdown à partir du fichier JSON Scrapbox exporté
J'ai créé un outil pour sauvegarder automatiquement les métadonnées de l'organisation Salesforce
J'ai fait un robot de remplacement de tampon avec une ligne
J'ai créé un fichier de dictionnaire python pour Neocomplete
J'ai fait une prévision météo de type bot avec Python.
J'ai fait un algorithme de rechange2 moins cher pour uWSGI
J'ai créé une application graphique avec Python + PyQt5
J'ai essayé de créer un bloqueur de filles pourries sur Twitter avec Python ①
J'ai fait un truc fou appelé tuple typé
[Python] J'ai créé un téléchargeur Youtube avec Tkinter.