ラベル Vagrant の投稿を表示しています。 すべての投稿を表示
ラベル Vagrant の投稿を表示しています。 すべての投稿を表示

2013/10/06

MTDDC Meetup HOKKAIDO 2013 に参加しました #mtddc

10月5日のMTDDC Meetup HOKKAIDOと翌日のHackathonに参加してきました。 非常に盛況で、予想よりも賑わってたのが印象的です。

ノベルティにMONA+SKという函館のお菓子が入ってて、これが結構美味しかったです。

さらにはじゃんけん大会でMovableType Tシャツをゲットできたので非常に満足度の高いイベントでした。

Hackathon

今回のHackathonではVagrantfileを含んだMTOSのアプリケーション環境丸ごとのchef cookbookを公開しました。
cookbook-movabletype-opensource-standalone

これは5ヶ月ほど前に作成したVagrantとchefのcookbookをブラッシュアップしたものです。
先にMTOSだけのcookbookは公開していましたが、Vagrantfileとその他のcookbookの設定等は含まれていませんでした。

今回は丸ごと配布なので、githubからcloneしてきてvagrant up --provisionを実行すると以下のような環境が作成されます。

  • CentOS 6.4
  • Perl 5.16.3
  • Nginx
  • MySQL

この環境はSkyarcさんのエンジニアブログの記事を元にしております。
デザイナー必見!VPSで高速なMovable Type用サーバをゼロから構築する方法

公開するに当たって、以前のバージョンに以下の作業を行ってます。

  • Vagrantfileをversion 2にアップデート
  • cookbookの管理をBerkshelfに移行

環境丸ごとのcookbookを公開しているのでVagrantでローカルに環境を作成するだけではなく、AWSのEC2上やWindows Azure、その他任意の場所のLinuxサーバにも簡単に環境を作れることになります。

2013/10/05

Vagrant + Chef Solo + Berksfileでのアプリケーション環境の作業手順

仕様変更だったり、ディレクトリ配置等が色々あるので自分の流儀を決める

Chef, Vagrantのインストール

chef関連ツールをインストール

> gem install chef knife-solo berkshelf

Vagrantはgemで入れると古いので公式サイトからパッケージでインストールする

Vagrant Pluginをインストール

> vagrant plugin install vagrant-berkshelf vagrant-vbox-snapshot

アプリケーションの雛形の作成

一番最初の雛形はknife soloで作成するのが無難

> knfie solo init foo

berksでBerksfile, Gemfile, Vagrantfileの雛形を生成する。gitの初期化もしてく
れる。既存ファイルを上書きするか聞かれるので"a"を押して、全部上書きする。

> berks init foo

cookbookの雛形を作成しておく

> knife cookbook create MyApp -o site-cookbooks

gitに突っ込んでおく

> git add -f * .chef/ .gitignore
> git commit

.chef/knife.rbにknife solo実行時のcookbook, role, node等のpathが入っているの
でこれは必須ファイル。このファイルがなくてハマることが多い

Vagrantの設定

いい感じに設定して、provisionをoffでとりあえず立ち上げる

> vagrant up --no-provision

chef soloの開発やsshで簡単に接続できるようにssh-configを書きだしておく。 この時ホスト名を分かりやすいものに置換しておくと良い

> vagrant ssh-config | sed 's/default/HOSTNAME/' >> ~/.ssh/config

置き換えたホスト名で接続確認

> ssh HOSTNAME

Chef SoloをVM側に容易

> knife solo prepare HOSTNAME

VMのスナップショットを作成

今後すぐに初期状態に戻せるようにスナップショットを作成しておく

> vagrant snapshot take chef-ready

Berksfileを更新

cookbook用のbundler。これから自分が書くcookbookの依存ファイルを追加する

> cat Berksfile
site :opscode

cookbook "yum"
cookbook "database"
cookbook "mysql"
cookbook "nginx"
cookbook "simple_iptables"
cookbook "openssl"

Cookbookを修正

好きなようにsite-cookbooks/MyApp/以下を修正していく

chef soloを実行

ある程度できたらVMにchefを適用する。

> knife solo cook HOSTNAME -V | tee install-log

-Vを付けて詳細なログを出す。長いのでinstall-logにも書きだしておく。 後はトライアンドエラーで徐々に修正していく

繰り返しすぎてよくわからなくなったりしたら、スナップショットの状態に戻して再度試す

> vagrant snapshot go chef-ready

完成

最終的にいい感じに仕上がったら、vagrantコマンドで一発で入るか確認する

> vagrant destroy
> vagrant up --provision

2013/06/12

Windows環境でVagrant/Chef Solo環境を構築するメモ(2013-06-14更新)

Windows XP上で構築
  • Vagrantはgemから入れるとちょっと古いので公式にあるインストーラを利用する
  • Rubyの環境はMingw + Msys + RubyInstaller for Windows
  • gitが使えないと不便なのでmsysgitも入れる

手順

  1. VirtualBoxをインストール
  2. Vagrantをインストール
  3. ディレクトリ C:\Mingw\msys\1.0 を作成
    • 多分途中にスペースをを含まないほうがいい
  4. 3で作成したディレクトリにmsysgitを展開
  5. Mingw/Msysのインストール
    1. mingw-get-instの最新版をDL
    2. C:\Mingwに展開
  6. Rubyのインストール
    1. RubyInstaller for Windowsから7z版のruby-2.0.0-p195をダウンロード
    2. 7zを適当な場所に展開する(一時的な展開先なのでどこでもよい)
    3. 展開してできた ruby-2.0.0-p195-i386-mingw32 の中身を全部 C:\Mingw\msys\1.0\local に移動
  7. cmd.exeの代わりに使うckw-modをインストールする

    1. ckw-modを適当な場所に展開(一時的なものではないのでMy Documents\Applications\ckwとかに入れること)
    2. ckw.cfgのCkw*execを以下のように編集

      Ckw*exec: "C:\Mingw\msys\1.0\bin\sh.exe" --login -i

  8. ckw.exeを起動してMsysのshellに入る

  9. ~/.inputrcを編集してshell上で日本語が使えるようにする。設定項目は以下のような感じ

    # disable/enable 8bit input
    set meta-flag on
    set input-meta on
    set output-meta on
    set convert-meta off
    set kanji-code utf8
    
  10. ~/.bash_profileを修正してrubyをPATHに追加する

    export PATH="$PATH:/c/Mingw/msys/1.0/local/bin"
    
  11. vagrantが使用するVBoxManage.exeへのPATHが通っているか確認する。通っていない場合はPATHに追加しておくこと

    $ which VBoxManage
    /c/Program Files/Oracle/VirtualBox/VBoxManage.exe
    
  12. Rubyのnative拡張が必要な諸々を再インストール

    $ gem uninstall ffi win32-api yajl-ruby
    $ gem install ffi win32-api yajl-ruby --platform=ruby
    
  13. Chef関連をインストール

    $ gem install chef knife-solo --platform=ruby
    

これでknife configureを実行してみてエラーが出なければ多分OK