暇人じゃない

Raspberry Pi + Ansible で Tiarra サーバーを構築した
AnsibleRaspberry PiTiarra

DigitalOcean で運用している古いブログ用のサーバーに Tiarra を同居させていたが、WordPress から Middleman + S3 に移行したことで、 Tiarra のためにインスタンスを起動しているという勿体無い状況になった。 そこで、Raspberry Pi で Tiarra を動かすことにした。ついでに環境構築に Ansible を使った。

以下、構築した時のメモを残しておく。

環境

  • Raspberry Pi: Type B
  • OS: Raspbian (Version: June 2014)

開発方法、Playbook の確認

Vagrant, Sahara で確認しながら Playbook を書いた。

Raspberry Pi に流しながら確認するのは非効率だなと思ったので、 Vagrantbox.es に公開されている Debian Wheezy 7.2 あたりのイメージを使用して、ローカルで Playbook を流して確認しつつ、 ひと通り完成したら Raspberry Pi に流す、という方法をとった。

Raspbian との環境差異はあると思うが、今回は問題は起きなかった。

Route 53 で DDNS

ドメインは Route 53 で管理している。Raspberry Pi は自宅で動かすため、IP アドレスが 変化しても問題ないように DDNS っぽいことをしたい。

「route53 ddns」などで検索すると、Perl スクリプト + Bash スクリプトを使用して Route 53 のレコードを更新する方法が多く見られるが、結構面倒くさそうな感じだった。

そこで、今回は DDNS53 というツールを Heroku にデプロイし、 所定の URL を GET することでレコードを更新する、という方法を取った。 詳しい話については作者である @riywo さんの記事をどうぞ。

AWS の Route53 で簡単 Dynamic DNS with Heroku - As a Futurist… http://blog.riywo.com/2013/07/29/073516

DDNS53 はとても便利で、設定を行った後は、 Raspberry Pi からは cron を使って一定時間ごとに curl で GET すれば良い。

また、DDNS53 は複数のゾーンを操作することを想定しているので、すべてのゾーンに対する権限が必要になる。

今回は、アップデート対象となるゾーンは 1 つのみであること、ゾーン、レコードの一覧表示は使用しないことから、 特定のゾーンのみ権限を割り当てれば良いように、DDNS53 を一部修正して使用している。良い感じになったら Pull Request を送りたい。

参考にしたリンク

以下のリンクを参考にした。ありがとうございます。

ApplePi-Baker を使用して GUI で SD カードに Raspbian のイメージを焼く方法の説明。zip のまま焼けるので便利。 テレビなどに Raspberry Pi を接続せずに、ping, arp を使用して Raspberry Pi の IP アドレスを特定し SSH する方法の説明。

ApplePi-Baker の動作が不安定なのか、起動しなくなることがあった。 @key3 曰く、Mac をリブートすれば直るとのことだったが、リブートするのが面倒なので dd を使用してイメージを焼いた。

Tiarra のインストールについて。今までホームディレクトリ以下に置くことが多かったが、 今回は本体を /usr/local 、設定ファイルは /etc 、ログは /var/log 以下に置くようにした。 また、tiarrad の起動スクリプトを拝借した。

まとめ

  • Ansible も Chef 同様覚えることはあるが、シンプルで良い。今度からは Ansible で書いてみようかと思っている。
  • Raspberry Pi は小さい可愛い。もっと活用していきたい。
  • DDNS53 が便利。良いアイデアだと思う。

raspi-config で設定する項目の自動化とか、WLAN を使用した接続とか、他にもやりたい事はあるが、 最低限の目標は達成できたので、暇のあるときにぼちぼち進めていこうと思う。

About

chocoby (GitHub / Twitter)

フリーのソフトウェア開発者です。 Ruby を使った Web 開発を得意としています。