hashicorp otto で ruby & mysql 環境構築
otto ではotto compile
時に自動でアプリケーションのタイプ(言語等)を判別する機能がある。
Ruby 環境の判別基準は以下。
- *.rb のファイルがある
- Gemfile がある
- config.ru がある
自動判別ではなく、明示的にRubyであることを伝える方法もある。 以下のようにAppfileを作成する。
application { name = "test-app" type = "ruby" }
これで、otto compile
時にRubyと判別されるようになる、
ottoでRubyアプリだと判断した場合に、 自動でRubyアプリに必要なミドルウェア、ライブラリ等を含めた上でVMを立ち上げてくれるわけだが、 Rubyに必要なモノはなんなのか? デフォルトで入るモノは以下。
- Ruby(現在は 2.2.3 の最新) and RubyGems
- bundler
- node.js
- git,mercurial
- postgreSQL dev headers
また、Rubyのgem install
に必要なライブラリ等も入っている。(libxmlとか)
以下のように記述することで特定のversionを指定することもできます。
customization "ruby" { ruby_version = "2.1" }
mysql を含めたtype ruby のvm作成
otto では dependency として別でcompileしたAppfileを含める事ができる。 以下は、type docker で、mysqlを起動するAppfileを依存として記載している。 (このやり方が正しいのかはわかりませんが、好きではない・・・。)
application { name = "test-app" type = "ruby" dependency { source = "github.com/tamai/otto-mysql" } }
以下のコマンドでvmを作成
otto compile otto dev
作成されたvmに入ります。 残念ながら、mysqlクライアントは入らない為、手動で入れます。
otto dev ssh sudo apt-get install mysql-client-core-5.5
以下のコマンドでdb接続可能
mysql -h 172.16.1.92 -u root -p
IPアドレスは以下のコマンドで確認可能。
otto dev address