itamaeを使ってvagrant上のUbuntuをよしなにする

開発環境の管理に chef-solo をいじってしばらく使っていましたが, chef-zero がどうとかという話になり段々とついていけなくなっていました。少し前に目にした itamae が簡単そうだったので使ってみました。Ubuntu 上でパッケージをあれこれ試す場合のベースになる box を作ることが目的です。

repos: yterajima/vagrant-itamae-ubuntu

使ってみて

  • 私に必要なのは chef ではなく itamae だった感
  • ファイル全体の見通しがいいので気が楽
    • chef でいじっていた時は利用しないディレクトリとか良くわからないまま使っていたファイルがあったが, なくなった
  • 普通に書けた(特に難しくはなかった

chef っぽい recipe をガリガリ書いて組み合わせて動作するようにして, node.json を書いて変数を分離する。といった手順で作業を行いました。特にハマるところもなく快適でした。vagrant up 時にプロビジョニングが走るようにする設定も vagrant-itamae を使い README 通りの設定を書くことで問題なく動作しました。

recipe を書いている間は itamae コマンドを使って 1 つずつ実行させていたんですが, コマンドのオプションが多いので shell スクリプトにして対応してみました。Ruby っぽく Rakefile でもよかったかもしれません。

bin/provision

ついでに serverspec 書いてみた

思ったよりも早く終わってしまったので serverspec も使ってみました。「書ける!書けるぞぉぉおお」みたいな気持ちになりました。便利サイコーだった。

ところどころ雑なのと Ubuntu 専用で書いてしまっているので時間をみて centos も一緒に対応できるように recipe の書き換えとテストの書き換えをしてみたいと思います。itamae 側で用意している node.json をテスト側で読み込んで変数を利用する方法がイマイチよくわからなかったので後で調べて対応したい。

vagrant + Ubuntu + itamae + DigitalOcean について

MBA をもって外で作業をする場合が多いので DigitalOcean を多用しています。今回の recipe が動作するのか調べてもよくわからなかったのですが, vagrant-digitalocean を入れて provider を書けば普通に動作しました。当たり前といえば当たり前の話な気がしますが動いてくれて嬉しかったです。

追記: vagrant-digitaloceanについて

~/.ssh/known_hosts に同一のIPアドレスの情報が登録されている場合, 処理が落ちる場合があります。known_hosts の該当するIPアドレスを含む行を削除して vagrant up すると動作します。