半自動でサーバ移行

週末、このブログを動かしているさくらのVPSを石狩リージョンに移行した。ほとぼりが冷めるまでブログ書いたりデータの更新は控えてたけど今のところ問題なさそう。

Chef Soloでセットアップしたけど今まではVagrantでの開発環境や設定ファイルの更新でつかっていただけなので、なにげに本番サーバを1から構成するのは今回が初めてだったかも。Vagrantで同じOSで環境つくってるので特に問題なかった。今のところは。

で、結局サーバの移行もChef Soloでやった。migrationってcookbookをつくって<hostname>YYYYmmという名前でrecipeとattributeを作って実行してみた。まぁやってることはexecuteリソースやbashリソースでrsyncしたりsshからのmysqldumpしたりしてるだけなんだけど。移行元のサーバを一時的にrootでsshできるようにして、移行先のサーバに対して
knife solo cook newhost.example.com -o migration::newhost201408を実行した。

Chefにかぎらずなんでもツールで解決するのは良くないとはわかっているし、何年に一回の作業でも自動化してみたくなる症候群。Chefはrubyが使えるからどうしても頼ってしまう。例えば移行レシピを間違えて実行したら大変なことになると思ってリソースの実行は以下のようなifで囲ったりした。

if node[:ipaddress] == attr[:new_ipaddress] && Time.now <= Time.new(2014,9,1) then

rubyで書けるのでこういうことをやりたいと思ったときにあまり悩まずに解決できるというメリットがある。自分のようなソフトウェアエンジニアがChefに惹かれるのはこういうところだろう。ただ、それでも何でもChefで解決しないように気をつける。

というか、今回は自動化したいというより、構築の備忘録をChefのレシピで一元管理したかったというのが正しい。そして今回さくらのVPS 2GからSSD 2Gに奮発してみた。気持ち速くなったかもしれないが気のせいかもしれない。