VyOSのバックアップをGitHubとTFTPに自動でアップする

f:id:komeiy:20141203144036p:plain

この記事はVyOS AdventCalendar2014の5日目の記事です。
3日目も担当しておりまして、記事はこちらです。

VyOSのEvent_Handlerとzabbix_senderで独自監視を実装する - ぽぽぽぽーんのネットワークとOSS

はじめに

さて本題ですが、コンフィグのバックアップどうしていますか?
VyOSに限らず個人的にはGitHubへのアップロードが好きです。

メリット

  • 差分管理がしやすい
  • 更新分だけがアップされる

デメリット

  • プライベートレポジトリが必要
  • いろいろマスクしないと不安

さすがにコンフィグレーションが公開されるのはまずいので、プライベートレポジトリを使用しましょう。

今回はシンプルにVyOS上に作成するパターンです。バックアップサーバで統合的に実施がオススメです。

Agenda

GitHubレポジトリ作成と準備

では、まずはGiuHubのレポジトリを作成してください。本題ではないので手順は省きますが、空のレポジトリを用意してください。

その後、VyOS上でgit cloneを実施します。ここでは/tmpフォルダに作成しました。

vyosへのgitインストール方法は以前にqiitaに書いたのでリンク貼っておきます。 VyOS(Vyatta)にgitをインストールする - Qiita

vyos@vyos:/tmp$ git clone git@github.com:<repositories>/config.git
Cloning into config...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.

権限がvyosになっていることを確認してください。

vyos@vyos:/tmp$ ls -la | grep config
drwxr-xr-x 3 vyos users       80 Dec  5 21:26 config

VyOS Command Scripting

今回、特に難しいことはしていませんが、vyosのこの機能を紹介したくて書きました、

VyOS側のスクリプトを準備します。VyOSはベースOSのコマンドとは別にVyOS用のコマンド体系があるわけですが、以下のように/bin/vbashを指定して実行することができます。

#!/bin/vbash
source /opt/vyatta/etc/functions/script-template

ルーティングを追加する場合は以下のように設定します。痒いところに手が届いて素晴らしいです。

$ cat route_add.sh
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template

configure

set protocols static route 192.168.1.0/24 next-hop 10.1.1.1

commit

肝心のバックアップ部分はこちらです。ついでにTFTPサーバにもコンフィグとshowコマンドのバックアップをしておきます。

  • 昨日の日付を入れているのはAM3:00とかにバックアップする想定だからです。
  • /config配下にuser-dataというディレクトリがあったので、ありがたく使用しました。
  • GitHub上にアップするのはコンフィグファイルだけにしました
vyos@vyos:~$ cat backup_task.sh
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template

#Environment
BACKUPDIR=/tmp/config
HOSTNAME=vy01
kinou=`date -d '1 days ago' +%Y%m%d`

#Backup TFTP SERVER
run show ip bgp summary > /config/user-data/bgp.txt
run copy file /config/user-data/bgp.txt to tftp://10.10.10.10/bgp.txt
run copy file running://config/config.boot to tftp://10.10.10.10$HOSTNAME-$kinou.cfg

#Backup Github
cd $BACKUPDIR

cp /config/config.boot $HOSTNAME.cfg
git add *.cfg
git commit -m "config_upload_$kinou"
git push origin master

動作確認

それでは実行してみましょう。

vyos@vyos:~$ ./backup_task.sh
######################################################################## 100.0%

######################################################################## 100.0%

はい、うまくアップロードできたようです。

GitHub上にもこの通りアップされています。

f:id:komeiy:20141205193756j:plain

念のため、TFTPサーバも確認してみます。

[komei@tftp backup]$ ls
bgp.txt  vy01-20141204.cfg

[komei@tftp backup]$ cat bgp.txt
BGP router identifier 192.168.1.1, local AS number 64520
IPv4 Unicast - max multipaths: ebgp 1 ibgp 1
RIB entries 0, using 0 bytes of memory
Peers 1, using 4560 bytes of memory

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/P
fxRcd
192.168.2.1  4 64521     655    2770        0    0    0 2d07h45m Active


Total number of neighbors 1

では、コンフィグを更新してみてみます。先ほどのルーティング追加スクリプトを使用します。

vyos@vyos:~$ ./route_add.sh
vyos@vyos:~$ show configuration commands | grep route
set protocols static route 192.168.1.0/24 next-hop '10.1.1.1'

vyos@vyos:~$ ./backup_task.sh
######################################################################## 100.0%

######################################################################## 100.0%

GitHub上にも以下の通りアップされていました。

f:id:komeiy:20141205193820j:plain

差分もきれいに見えています。とても便利です。CronなりJenkinsなりで自動化すると、より良いと思います。 VyOSもこのバックアップ方法も流行ってくれると嬉しいです。

f:id:komeiy:20141205193838j:plain


シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。

このエントリーをはてなブックマークに追加

Vyatta仮想ルータ活用ガイド

Vyatta仮想ルータ活用ガイド

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)