raspberry piで遊びたい
raspberry piが好きです。 計測器を付けて遊ぶほか、AirPlayのサーバーにするなど、 いろいろと遊びたい事があります。
遊ぶにあたって、chefで設定できるようにしておくと、 安心して壊すことができますね。
それでは、raspberry piにchefを導入するまでの ワークフローを紹介しましょう。
まずはこのページを参照
今回参考にしたページを紹介します。 ChefでRaspberry Piをセットアップする
やりたい事は違えど、大まかな流れは、上記のページの通りです。
- Vagrantで仮想環境を用意
- chefのセットアップ
- Cookbookの作成とテスト(ServerSpecを使用)
- 本物のRaspberryPiを環境構築
ワークフロー通りにやっていく中で、 いろいろと調べ事をしたので、その足あとを追ってゆきましょう。
1.Vagrantで仮想環境を用意
まず、Vagrantの環境構築について。
この記事執筆時点ではすでに終わっていますので、
まだの方は、仮想環境構築ツール「Vagrant」で開発環境を仮想マシン上に自動作成するなどを参考にしてください。
余談
Vagrantについて思うところ。
仮想環境は長いことVMWareでやってきたので、
仮想マシンを本番環境として使う場合は、
VMWareが慣れてて楽だなぁと思っています。
しかし、実機の本番環境の練習台としての仮想マシンは、
VirtualBoxでやるのがよさそうです。
メリットは、いくつもあります。
- VirtualBoxなら無償
- Saharaプラグインが使える
- 仮想マシンからのBox構築が可能
最後はともかく、無償でしかもやり直しができるのは、
練習台としてはメリットが大きいと思います。
閑話休題
今回は、仮想環境の用意には、参照記事のおすすめに従い、 これを使いました。
$ git clone https://github.com/nickhutchinson/raspberry-devbox raspberry_pi
$ cd rasbperry_pi
$ vagrant up
2.chefのセットアップ
お約束通りにやりました。
$ vagrant ssh-config --host vm-raspberry_pi >> ~/.ssh/config
$ knife solo init chef-repo
$ knife solo prepare vm-raspberry_pi
ローカルマシン側のsshの設定を、ここでvagrantがやってくれるのって、
非常にありがたい事ですね。
実機の環境構築では、1行目にあたる部分を自分でごにょごにょします。
3.Cookbookの作成とテスト(ServerSpecを使用)
ここの基本の考えかたは、参照記事 の3. クックブックの作成とテストを参照して下さい。
引用:
書いたクックブックを実行する前にVagrantをサンドボックスモードにしておく。
こうすると、失敗したときに実行した部分だけやり直すこと(ロールバック)ができる。
サンドボックスモードにするためにはsaharaというVagrantのプラグインが必要なのでインストールしておく。サンドボックスモードをオンにしてクックブックを実行したあと、本当に期待した通りに環境構築できたかどうかをServerspecを使ってテストする。 Serverspecにはいくつかテストを実行する方法があるようだけど、今回はSSHでログインしてテストを実行する形式を採った。 テストを通らなかった場合は、saharaを使ってロールバックしてやり直す。
テストが通った場合は、saharaを使って変更を確定させる(コミット)。これをサイクルさせながら、どんどんクックブックを追加していく。以上をコマンドで表すとこんな感じ。
$ knife cookbook create ruby -o site-cookbooks
$ vi site-cookbooks/ruby/recipes/default.rb
$ vi nodes/vm-raspberry_pi.json
$ vi spec/vm-raspberry_pi/ruby_spec.rb
$ vagrant sandbox on
$ knife solo cook vm-raspberry_pi
$ rspec
$ vagrant sandbox commit
(引用終わり)
ここで書いたレシピの内容や困り事については、
別の記事で紹介します。
とにかく上記の流れが参考になりまくったので、 ここに記すことにしました。
4. 本物のRaspberryPiを環境構築
引用:
仮想環境での環境構築が完了したら、いよいよ本物のRaspberry Piにクックブックを適用する。
そのためにはnodes以下に本物用の設定を追加するだけでいい。
$ vi nodes/raspberry_pi.json
$ knife solo cook raspberry_pi
(引用終わり)
基本の流れは、上記の通りです。 本番環境を作る上でも、sshの設定など、多少の試行錯誤があったので、 別の記事で書きます。