VyOSのバックアップをGitHubとTFTPに自動でアップする
この記事は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上にもこの通りアップされています。
念のため、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上にも以下の通りアップされていました。
差分もきれいに見えています。とても便利です。CronなりJenkinsなりで自動化すると、より良いと思います。 VyOSもこのバックアップ方法も流行ってくれると嬉しいです。
シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。
- 作者: 松本直人
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/26
- メディア: Kindle版
- この商品を含むブログを見る
GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)
- 作者: 大塚弘記
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (13件) を見る