Help us understand the problem. What is going on with this article?

Excelで書いたパラメータシートから、ネットワーク機器(Catalyst)のコンフィグを自動生成する

More than 3 years have passed since last update.

1. はじめに

NetOpsCoding AdventCalendar2016の18日目の記事です。

当方は某SIerにてお客様のネットワーク設計・構築したり、ネットワークの維持管理をしていたりします。

構築の際に作る資料としてExcelで書かれたパラメータシートなるものがあります。
よくあるのはこんな感じの設定項目ごとにパラメータが記載されている資料です。

sample.jpg

このパラメータシートを基にネットワーク機器のコンフィグを作成、機器に設定します。

しかし数十~数百台のスイッチに設定を入れる場合、スイッチの設定をしつつ、
パラメータシートがちゃんと更新するというのは結構神経がすり減る作業です。

納品前のレビューで上司に「ここコンフィグとパラメータシートの値違うけど(またかよこいつ :anger: )」と指摘されないようにするには、パラメータシートからコンフィグを生成すればいいんじゃね?ということで今回の記事を書くことになりました1

NetOpsCodingか?というのはありますが、ソフトウェアでのNW機器の設定効率化ってことで…。

なおすべてのパラメータに対してコンフィグが生成できるようにするようには間に合わなかったため、プログラムは未完成です:fearful:2githubのレポジトリはこちらになります。

2. 使った道具

使った道具・環境は下記の通りです。

Software Version
OS Windows 10
Excel Excel 2013
Python 3.5.1
openpyxl 2.4.1
jinja2 2.8

Excelファイルは下記のリンクのものを例として使います。

excelファイル

スイッチはCatalyst2960-8TC-L(IOS 15.0(2)SE8)を使っています。

コンフィグ生成はExcelのマクロだけでできなくはないのですが、最近読んでるpython本3にopenpyxlというpythonからexcelを操作するライブラリがあるというのを知ったので勉強がてら、使うことにしました。

将来的にはCatalyst以外の機器もサポートするため、テンプレートエンジンのjinja2を使って生成元となるデフォルトコンフィグを分けておきます。

3. 使い方

# python pyxl2nwcfg.py sample_conf.xlsx

でsample_conf.xlsxのxlsxファイルをsample_conf.txtの名前のコンフィグを生成します。

4. プログラムの構造

------ pyxl2nwcfg.py
   +-- template ------ c2960-8tc-l.template.txt
   |               +-- etc
   +-- lib ----------- gennwconf.py
                   +-- pyxl2catalystcfg.py

pyxl2nwcfg.pyでは下記のように処理します。

1.excelファイルの読み込み
2.lib配下にある利用するジェネレータの選出
3.コンフィグの出力

gennwconf.pyでは将来的に機種によって利用するコンフィグ生成器を分けます。

pyxl2catalystcfg.pyでは

1.templateファイルを読み込み
2.xlsxの内容を解析
3.templateエンジンにrenderし、文字列を返す

といった処理をします。

5. まとめ

書いてみて気づきましたが、めちゃくちゃ課題があります。

1.Excelの形式が崩れるとすべて書き直しになる。->スクレイピングしやすいようにExcelの設計が必要
2.新しい設計項目、機種に対応するにはどうするか

プログラム自体については引数チェックや例外処理を全然書いていないので、ブラッシュアップが必要です。

まだまだ育てていく必要がある感じなので、アドバイスあればお願いします4


  1. パラメータシートからコンフィグを生成することを己に義務付けないとしないと結局一緒ですけどね 

  2. 基本設定しか生成できません 

  3. オライリーさんから翻訳出るらしいです 

  4. そもそも未完成ですけどね・・・ 

tossh
よくいるいるめがね族。
http://bochibochibocchi0095.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away