#概要
以前投稿したルータコンフィグ収集ツールを修正して、PyPIで公開しました。
[Cisco/Juniperルータのコンフィグを一元取得するツール]
(http://qiita.com/taijijiji/items/620908c1bec27e1ea933)
https://pypi.python.org/pypi/ConfigCollector
https://github.com/taijiji/ConfigCollector
初めてのPyPI登録だったので手間取りましたが、なんとかPyPIデビューすることができました。
#モチベーション
ルータコンフィグをGitで管理したかったのですが、Gitの前に、運用しているルータ群のコンフィグのコンフィグを集めるのが手間だったので、1コマンドで全ルータのコンフィグ収集ができるConfigCollectorを作りました。
Gitコマンドも含めて自動化しようとも考えたのですが、「confilctした場合は人手で取捨選択したほうがよい」「機密情報であるルータコンフィグを強制アップロードさせると操作を間違った時にトラブルが出そう」「エラー時にgit removeなどのオプション機能を実装するのがめんどくさかった(実装が面倒な割に、ニーズがあるかよくわからない)」といった理由から、本ツールのターゲットは「複数のルータに対してSSHログインしてコンフィグを取得
・収集する」ことに限定しています。
#インストール
PyPIで公開したことで、pipコマンドでインストールできるようになりました。
pip install configcolletctor
pipを使ったことがない方はこちらの記事を参考にpipをインストールしてください。
[Pythonで一番最初に入れるべきパッケージ setuptools と pip]
(http://www.lifewithpython.com/2012/11/Python-package-setuptools-pip.html)
#使い方
インストール後、このようにしてツールを動かします。
configcollector -i [inventory_file] -o [output_dirctory]
- inventory_file
- ルータ情報をJson形式で記述します。
- ルータOSは下記の中から選びます。
- JUNOS
- IOS
- IOS-XE
- IOS-XR
- inventory_file記述例
[
{
"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"
}
]
- output_directory
取得したルータコンフィグが出力されるディレクトリです。
デフォルトでは、カレントディレクリが指定されます。
#使用例
ConfigCollectorは下記のようにして使います。
まずルータコンフィグが保存される出力先のディレクトリを作成します。
% mkdir router_config
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"!
作成されたファイルを確認します。
% 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)
以上で完了です。
#本ツールを使ってルータコンフィグをGit管理する
本ツールで取得したルータコンフィグを以下の手順でGit管理することができます。
1.Git管理サーバを使ってルータコンフィグ用レポジトリを作成
2.ルータコンフィグの取得
% configcollector -i sample_routers.json -o router_config/
3.git ステージングに追加 (更新候補として指定)
% git add router_config/ .
4.git コミット (更新を実行)
% git commit
5.git リモートレポジトリにアップロード (Git管理サーバにアップロード)
% git push
(初回のみ % git push origin master)
6.Git管理サーバで確認
所感
人生で初めてPyPIに登録しました。はじめてまともなOSSコミッターの仲間入りができたような気持ちで嬉しい限りです。
まだPyPIやOSSのお作法がわかっていないところが多分にあるので、ぜひフィードバックいただけると嬉しいです。
https://pypi.python.org/pypi/ConfigCollector
https://github.com/taijiji/ConfigCollector