読者です 読者をやめる 読者になる 読者になる

Vagrantを使って検証環境を作る

VagrantVirtualBoxだったりEC2だったりをセットアップから起動まで簡単(?)にできるっぽいのでやってみた。

途中ハマりまくったので、徒然にメモを残しておくレベルでご勘弁。

リポジトリ

https://github.com/sugilog/vagrant.local

環境

クライアント: Mac OSX Yosemite 10.10.3

VirtualBox

Vagrant

  • v1.7.2
  • .dmgからセットアップ。
  • provision関連はドキュメントを参照。
  • Plugins
  • vagrant-berkshelfはとりあえず使わない。

Chef-DK

  • v0.4.0
  • Chefを使うのにこちらのほうが便利そうだったので。
  • Berkshelfもこみこみ。

EC2

手順

環境に描き上げたパッケージは予めインストール。

作業用のディレクトリを作成する。

metadata.rbを作成する。

  • Berkshelfをinitするときに必要。
  • 最低限必要なのはname 'NAME'のみ。

berks initする。

Berksfileに必要なcookbooksを追加してインストール。

  • berks vendor DIRNAME
  • chef.ioでレシピを探す。
  • 個人で使用するくらいなら、バージョンの指定は省略して良さそう。

Vagrantfileに設定を書き込む。

  • VirtualBox向けの設定
  • EC2向けの設定。
    • dummy boxの指定。
      • urlはhttps://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
    • アクセスキーなどのEC2へのアクセスデータ
    • リージョンやサブネットなど設定周りのID。
    • Chefの設定
    • Provisioningするときのシェルスクリプト的な。
  • VirtualBoxとEC2向けの設定はうまく設定すれば共通化できる。
    • VirtualBoxでセットアップをテストしておけば、EC2でのセットアップを必要最小限にできる。
  • Provisioningについて
    • rootユーザーでなく実際に作業するときのユーザー向けの設定をする場合は、privileged: falseにするのを忘れずに。
  • EC2向けのアクセスキーなどの管理。
    • バージョン管理の対象から外したファイルに設定を書き込んでおいた。
    • 本当はアクセスキーのファイル管理は危ないので、環境変数からの読み込みがいいか。
  • うまく行かなかったレシピ。
    • vim
    • mysql
    • redis
    • あとで手動で入れればいいのでスルー。

vagrant up

  • まずはVirtualBox向けに。
    • Chefでうまくいかないものはどんどん外したほうが良さそう。
  • AWSはマネジメントコンソールを開きっぱなしにして、変なリージョンにインスタンスが立ち上がってないかとか、確認しながらが吉。

Vagrantの後

個人利用のみなので、いろいろ手動ですがご容赦を。

参考

先に、参考にした記事とかを。