LoginSignup
23
30

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-12-18

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. そもそも未完成ですけどね・・・ 

23
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
30