RANCIDっていってもティム・アームストロングのランシドではないです。
最強のネットワーク機器のコンフィグ差分ツールです。
何がいいかっていちいち、機器にtelnetやsshでログインしてshowコマンドを叩いて確認しなくてもいいんです。
ほぼ、大事な機器の情報をブラウザで一発で見れちゃう。
しかも、cronで定期的に機器に確認に行き、差分を確認しブラウザで簡単に確認することができるんです。
RANCIDの特徴
冒頭にも記載したように、各ベンダーの機器に入ってshowコマンドで情報を取ってきてデータベースに保管ができる。
しかも、コンフィグに変更があった際に差分を即座にチェックできるという超最強ツールであります!
ciscoの例でいうと下記のコマンドを一塊で引っ張ってきます。
- show version
- show boot
- show flash:(dir)
- show interface系コマンド
- show vtp status
- show vlan
- show running-config
RANCID対応ベンダー機器
今回は以下のソフトのバージョンで動作確認をしています。
- CentOS バージョンrelease 6.5 (Final)
- RANCID バージョン(2.3.8)
- ViewVC バージョン(1.1.22)
また、管理できるネットワーク機器は、ほとんどの機器で対応可能になっています。
- cisco系(ほとんどの機械で使用可能)
- 3500系、IOS、IOS-XR
- Nexusシリーズ(スイッチ、ルータ)
- catalystシリーズ(5000、4000。catOS)
- XRシリーズ
- css(ciscoスイッチ)
- Juniper
- ERX(Juniper)
- netscreen(firewall)
- F5 BIGIPシリーズ
- force10
- Brocad(foundly)
- 日立ルータ
- alteon
- arista
- avocent
- baynet
- enterasys
- extreme
- ezt3
- fortigate
- hp
- mikrotik
- mrtd
- netscalar(ロードバランサー)
- procket
- redback
- riverstone(RS43000系など)
- smc
- tnt
- zebra
今のところ、以下の機器(ベンダー)の動作確認はできました。
- cisco
- juniper、netscreen
- F5
- Brocad(foundly)
RANCIDインストール
RANCIDをインストールする前の事前の注意事項です。
これからインストールを行う際、順番を前後させたり、別の権限(adminなど)でファイルを作成すると正常に動作しなくなっちゃいます。
必ず、決められた権限(今回はrancid:root)で設定を行ってください。
登録するネットワーク機器をhostsに登録
# vi /etc/hosts 192.168.1.1 t-test01 192.168.1.2 t-test02
※アドレスをいちいち指定するのがめんどくさいので書きました。
DNSがあれば書かなくて結構です。
yum でパッケージ群をインストール
#yum -y install rancid httpd viewvc mod_python subversion cronie No package rancid available.
※rancidのパッケージが入っていなかったのでパッケージをダウンロードすることにします。
rancidのファイルをダウンロード
今回のRANCIDの最新バージョンは2.3.8だったのでそいつをダウンロードすることにします。
最新版確認
こちらのサイトから最新版が確認できます。
ダウンロード実施
wgetコマンドでダウンロードを実施します。
# wget ftp://ftp.shrubbery.net/pub/rancid/rancid-2.3.8.tar.gz --2014-03-12 11:40:00-- ftp://ftp.shrubbery.net/pub/rancid/rancid-2.3.8.tar.gz => `rancid-2.3.8.tar.gz' ftp.shrubbery.net をDNSに問いあわせています... 129.250.47.99 ftp.shrubbery.net|129.250.47.99|:21 に接続しています... 接続しました。 anonymous としてログインしています... ログインしました! ==> SYST ... 完了しました。 ==> PWD ... 完了しました。 ==> TYPE I ... 完了しました。 ==> CWD (1) /pub/rancid ... 完了しました。 ==> SIZE rancid-2.3.8.tar.gz ... 379908 ==> PASV ... 完了しました。 ==> RETR rancid-2.3.8.tar.gz ... 完了しました。 長さ: 379908 (371K) (確証はありません) 100%[=====================================================================================>] 379,908 613K/s 時間 0.6s 2014-03-12 11:40:03 (613 KB/s) - `rancid-2.3.8.tar.gz' へ保存終了 [379908]
rancidの解凍を実施
ダウンロードしたRANCIDのファイルを解凍します。
tar zxvf rancid-2.3.8.tar.gz
解凍後にmake installを実施します。
# ./configure # make # make install
※ついでに再インストールするときの削除方法です。(じぶんがやっちまったので)
make uninstall make clean make distclean -- ./configureで作成したファイルも削除する
RANCIDのファイル完成!
# ll /usr/local/rancid/etc/rancid.conf -rw-r--r-- 1 root root 3803 3月 12 13:15 2014 /usr/local/rancid/etc/rancid.conf
ここまでくればとりあえずはOKっす。
それでは、設定編に行きます!
RANCIDの初期設定
ここからが重要になってくるので頑張ってください。
ド素人のじぶんでも行けました。
バックアップ実施
事前にバックアップを取っておきます。
後々、悲惨な目に合わないようにしときましょう。
# cp -p /usr/local/rancid/etc/rancid.conf /usr/local/rancid/etc/_rancid.conf_original
差分確認
# sdiff -s /usr/local/rancid/etc/rancid.conf /usr/local/rancid/etc/_rancid.conf_original
差分がないことを確認
権限をrancidに変更
ここは重要です。
権限が通ってないとうまく動かない場合があります。
今回、じぶんは(rancid:root)にしました。
cd /usr/local/ chown -R rancid:root rancid
rancid.confを変更
ここではどこにどのディレクトリやファイルを作成するかなどを設定していきます。
今回は以下を編集したのでご参考に。
# vi /usr/local/rancid/etc/rancid.conf BASEDIR=/usr/local/rancid/var; export BASEDIR CVSROOT=$BASEDIR/CVS; export CVSROOT LOGDIR=/usr/local/rancid/var/logs/; export LOGDIR RCSSYS=svn; export RCSSYS FILTER_PWDS=ALL; export FILTER_PWDS NOCOMMSTR=YES; export NOCOMMSTR LIST_OF_GROUPS="cisco" ←今回はcisco機器を使用するためリストグループを”Cisco”にします。
複数のグループを作成する際は
LIST_OF_GROUPS="cisco juniper F5"
という感じでスペース区切りで作成します。
管理するネットワーク機器に関する設定
ここでは管理するネットワーク機器の登録をします。
ネットワーク機器にどのようにアクセスするか(telnet、ssh)を設定します。
まずは、バックアップから。
cloginrcファイルを検索すると今回はここにありやした。
# find / -name cloginrc.sample /usr/local/rancid/share/rancid/cloginrc.sample
/usr/local/rancid/配下にcloginr.sampleをコピー
# cp -p /usr/local/rancid/share/rancid/cloginrc.sample /usr/local/rancid/.cloginrc
バックアップファイル作成
# cp -p .cloginrc _.cloginrc.sample_original # ls -la 合計 8 -rw-r--r-- 1 root root 3772 3月 12 13:15 2014 _.cloginrc.sample_original -rw-r--r-- 1 root root 3772 3月 12 13:15 2014 .cloginrc
telnet接続する為のコマンド作成
対象機器にtelnet接続するために.cloginrcファイルに追記します。
書き方は以下のような感じ。
”add password (アドレス)(vtyPassWord)(enablePassWord)”
[root@t-bobo011 var]# vi .cloginrc # add password add password 10.1.10.123 test testenable
ssh接続するためのコマンド作成
ssh接続の際は少し形式が変わるのでご注意ください。
# vi .cloginrc # add password #cisco系 add user t-taggsw011 admin #username add method t-taggsw011 ssh add password t-taggsw011 test test #netscreen(juniper)※ciscoでもいけます。 add user a-frw011 admin add method a-frw011 ssh add password a-frw011 q61254th add autoenable a-frw011 1 #enableコマンドを聞かないようにします。
パーミッションを変更
# chmod 600 .cloginrc
リポジトリの作成
ここ重要です!
srvadminでは作成しないこと!RANCIDがうまく動作しないです。
/usr/local/rancid/etcancid/rancid.conf の設定内容にしたがって、rancid-cvs コマンドで リポジトリを作成します。
#su - rancid # /usr/local/rancid/bin/rancid-cvs リビジョン 1 をコミットしました。 リビジョン 1 をチェックアウトしました。 リビジョン 1 です。 A configs 追加しています configs リビジョン 2 をコミットしました。 A router.db 追加しています router.db ファイルのデータを送信しています . リビジョン 3 をコミットしました。
これ出力結果がでればOKです。
ネットワーク機器のリストを設定
ここはかなり重要です!
(device_type)は各ベンダーによって書式が違います!
とりあえずciscoなので以下を参考にしてください。
※書式
(hostname):(device_type):up
# cd /usr/local/rancid/var/cisco/ # vi router.db t-test01:cisco:up t-test02:cisco:up ~
その他のベンダーの
- juniper = juniper
- netscreen = netscreen
- F5 = f5
- ADX = foundly
ディレクトリの内容を確認する
先ほど、実施したリポトロジ作成でできたディレクトリが確認できます。
# cd /usr/local/rancid/var/ # ll 合計 20 drwxr-x--- 6 root root 4096 3月 12 18:18 2014 CVS drwxr-x--- 4 root root 4096 3月 12 18:18 2014 cisco drwxr-x--- 3 root root 4096 3月 12 17:57 2014 logs
※rancid.conf の LIST_OF_GROUPS、CVSROOT、LOGDIR の内容にそってディレクトリが作成されました。
ログインテスト
さあ、後は動作確認です。
まずはコマンドで対象の機器にログインできるか確認します。
su - rancid -bash-4.1$ /usr/local/rancid/bin/clogin t-test01 t-test01 spawn telnet t-test01 Trying 192.168.1.1... Connected to t-test01. Escape character is '^]'. User Access Verification Password: t-test01>enable Password: t-test01# 正常にログインできたことを確認
RANCIDの動作テスト
ログインが成功すればRANCIDの動作確認です。
実際に機器に入り情報を取ってこれるか確認します。
su - rancid /usr/local/rancid/bin/rancid-run
ログ確認
ログは以下フォルダに保存されます。
# ll /usr/local/rancid/var/logs/ 合計 16 -rw-r----- 1 root root 212 3月 12 18:02 2014 cisco.20140312.180238 -rw-r----- 1 root root 212 3月 12 18:05 2014 cisco.20140312.180518 -rw-r----- 1 root root 212 3月 12 18:07 2014 cisco.20140312.180700 -rw-r----- 1 root root 270 3月 12 18:23 2014 cisco.20140401.170101
正常なログ
# cat /usr/local/rancid/var/logs/cisco.20140401.170101 starting: Tue Apr 1 17:01:01 JST 2014 Trying to get all of the configs. All routers sucessfully completed. ending: Tue Apr 1 17:01:08 JST 2014
※エラーが出ていた場合。
.cloginrcが指定の場所にないと下記のエラーが発生。
Trying to get all of the configs. 10.1.10.123 clogin error: Error: password file (/usr/local/rancid/.cloginrc) does not exist
.cloginrcを指定の場所に置きましょう。じぶんがやっちまったことです。
※データベースが間違っている場合
Trying to get all of the configs. unknown router manufacturer for t-vlb011: adx ===================================== Getting missed routers: round 1. unknown router manufacturer for t-vlb011: adx ===================================== Getting missed routers: round 2. unknown router manufacturer for t-vlb011: adx ===================================== Getting missed routers: round 3. unknown router manufacturer for t-vlb011: adx ===================================== Getting missed routers: round 4. unknown router manufacturer for t-vlb011: adx 送信しています router.db ファイルのデータを送信しています . リビジョン 41 をコミットしました。
router.dbのdevice_typeがまちがっている可能性がありますので確認しましょう。
RANCIDをcron.dに登録
定期的にネットワーク機器を監視するため(1時間ごとに監視)します。
以下の感じで書いてください。
# vi /etc/cron.d/rancid SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/usr/local/rancid # Run config differ hourly 1 * * * * rancid /usr/local/rancid/bin/rancid-run 50 23 * * * rancid /usr/bin/find /usr/local/rancid/var/logs -type f -mtime +2 -exec rm {} \;
RANCIDをブラウザで出力します
RANCIDの設定が終わり、いよいよブラウザで管理するソフトをインストールします。
今回はViewVCをインストールしましたので手順を以下でまとめます。
ViewVCのインストール
ViewVCのパッケージを以下からダウンロードします。
# wget http://viewvc.tigris.org/files/documents/3330/49347/viewvc-1.1.22.tar.gz # tar zxvf viewvc-1.1.22.tar.gz
ダウンロードが成功すればあとはインストールだけ!
# cd viewvc-1.1.22 # ./viewvc-install This is the ViewVC 1.1.22 installer. It will allow you to choose the install path for ViewVC. You will now be asked some installation questions. Defaults are given in square brackets. Just hit [Enter] if a default is okay. Installation path [/usr/local/viewvc-1.1.22]: /usr/local/viewvc ←名前はバージョンを削除しただけ DESTDIR path (generally only used by package maintainers) []: 何もしないで実行
ViewVCの設定
viewvc.confファイルを以下のように設定します。
[root@t-bobo011 viewvc]# vi /usr/local/viewvc/viewvc.conf #svn_roots = svn_roots = rancid:/usr/local/rancid/var/CVS #default_root = default_root = rancid
後は、以下のURLで確認すれば見えるはずです!
http://x.x.x.x/cgi-bin/viewvc.cgi
バグがありますのでご確認を
Viewvcのインストール時、エラーが出るので確認以下のようなエラーが出るときがあります。
Invalid command 'PythonHandler', perhaps misspelled or defined by a module not included in the server configuration
要は、mod_pythonのモジュールがないのでエラーを履いている模様でした。
ということでpythonモジュールをインストールします。
wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz tar xzvf Python-2.6.6.tgz cd Python-2.6.6 ./configure --enable-shared make make install
pythonを確認
うまく入ったようです。
# cat /etc/redhat-release CentOS release 6.4 (Final) # python -V Python 2.6.6
しかし、まだ同じエラーを吐くのでmod_pythonのみをインストールします。
mod_pythonインストール
やっとこさ、モジュールが見つかったのでダウンロードとインストールをします。
#wget http://archive.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz #wget http://dist.modpython.org/dist/mod_python-3.5.0.tgz --2014-03-14 15:41:33-- http://archive.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz archive.apache.org をDNSに問いあわせています... 2001:610:1:80bc:192:87:106:229, 140.211.11.131, 192.87.106.229 archive.apache.org|2001:610:1:80bc:192:87:106:229|:80 に接続しています... 失敗しました: ホストへの経路がありません. archive.apache.org|140.211.11.131|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 447954 (437K) [application/x-tar] `mod_python-3.3.1.tgz' に保存中 100%[=====================================================================================>] 447,954 383K/s 時間 1.1s 2014-03-14 15:41:38 (383 KB/s) - `mod_python-3.3.1.tgz' へ保存完了 [447954/447954] tar xzvf mod_python-3.5.0.tgz
まだまだエラーを吐きやがる
以下でも全然うまくいきません。
# cd mod_python-3.3.1 ./configure --with-python=/usr/local/bin/python2.6 --with-apxs=/usr/sbin/apxs make make install ※makeでエラーが発生 make[1]: *** [mod_python.so] エラー 1 make[1]: ディレクトリ `/root/mod_python-3.3.1/src' から出ます make: *** [do_dso] エラー 2
make installできない理由はpython-develが無かったため
問題はここでした。
python-develはyumでインストールできるので事前に入れておいてください!!!
前提パッケージとして以下を必ずインストールしておくこと!
# yum install gcc # yum install httpd # yum install httpd-devel # yum install python-devel #これを入れないとmakeできない
mod_python-3.3.1はバグがある為、makeする前にファイル修正をすること。
mod_pythonは以下のように142行目でのバグがあります。
ここを修正すれば。。。
# cd mod_python-3.3.1 # vim src/connobject.c 142行目 while ((bytes_read < len || len == 0) && - !(b == APR_BRIGADE_SENTINEL(b) || + !(b == APR_BRIGADE_SENTINEL(bb) || APR_BUCKET_IS_EOS(b) || APR_BUCKET_IS_FLUSH(b))) { # ./configure # make # make install ←python-develをyumインストールしていないと上記エラーが再度発生するので注意する
それではもう一度ご確認を!
きたーーーー!!!!!
以上です!
お疲れでやんした!
以上です。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す