VagrantとSunziを組み合わせて環境構築

Vagrantそこまでガッツリいじってなかったので、いじってみたメモ

前置き

Vagrantの説明はここではしない。
ググったらいくらでも記事出てくると思うので。。。

VagrantにはプロビジョニングツールのChefとかPuppetと組み合わせて当たり前でしょ?みたいな空気があってそれも勉強しないとだめな雰囲気があって覚えることが多いから躊躇してたけど、@jishihaさんからSunziってのものがあるよって教えてもらったのでそれと組み合わせていじってみました。

結果的にShellScriptでやってますが、ShellScriptでやるメリットとして、誰が見てもわかりやすいという敷居低さがあると思ってます。
ChefがわからなくてもLinuxのセットアップをやったことがあれば多分理解できるはず…。
単純にShellScriptでやるよりもSunziでやったほうがスマートに出来ました。

Sunziとは?

Sunzi for GitHub

Sunzi is the easiest server provisioning utility designed for mere mortals. If Chef or Puppet is driving you nuts, try Sunzi!

と書かれてます。簡単なプロビジョニングツールです。 詳しくはGitHubのREADMEを見てもらえればいいんですが、RubyでのセットアップかShellScriptでできるようで、自分はShellScriptで設定しました。

Vagrantfileに以下の一文を追加して、Vagrantの設定をしましょう。(READMEに書いてる)

echo 'root:vagrant' | /usr/sbin/chpasswd

次に、sunziのインストールをします。

sudo gem install sunzi 

あとはdeployするだけでVagrantに設定が反映されますが、 deployする前に設定しましょう。

Sunziの設定

$ tree
.
├── compiled
│   ├── attributes
│   │   ├── environment
│   │   └── ruby_version
│   ├── install.sh
│   ├── recipes
│   │   ├── rvm.sh
│   │   └── sunzi.sh
│   └── roles
│       ├── db.sh
│       └── web.sh
├── files
├── install.sh
├── recipes
│   └── sunzi.sh
├── roles
│   ├── db.sh
│   └── web.sh
└── sunzi.yml

こんな感じ。 基本いじるのはinstall.shとroles下に新規で**.shってのを追加するだけ。
roles/db.shとかは中身見ればわかるが、カテゴリごとに分けられたシェル。

$ cat roles/web.sh
# Install Web server

apt-get -y install nginx        # Nginx
# apt-get -y install apache2    # Apache

vimの初期にインストールさせたい場合はrole/vim.shとか作ってもいいし、なんかのCMSの初期設定とかを入れてもいい。

※注意点

  • Rootで実行する前提なので、~/とかって設定ファイルを反映させる場合は/root以下にできたりするので注意
  • どっかで失敗するとそこで止まってその先が進まない(自分だけかも)

設定が完了するとあとはDeployして反映させるだけ。
deployすると、Vagrantの/rootにsunziフォルダができて、いろいろ実行してくれます。

sunzi deploy localhost:2222

port番号はvagrant ssh-configで調べましょう。

まとめ

Chef等のプロビジョニングじゃなくてShellScriptで設定できるし、Vagrantじゃなくてもその辺のVPSにも設定できるだろうし、良さ気。
ファイルもカテゴリごとに分けておけるし、管理もしやすい。

おまけ

設定するものはなんでもよかったけど、concrete5が公式サイトのリニューアルするらしいので、それを対応させたvagrantファイルとsunziをGithubにあげておきました。

とりあえず、これダウンロードさせてvagrant upとsunzi deployかませばサンプルサイトができあがる
(少なくともオレの手元では…)

  • VagrantのこのBOXをベースにLAMPを作ってるのでちょっと古いかも
  • MySQLmysql -urootで入れるので、ユーザー:rootでPasswordは空っぽでいける。
  • vimは自分の.vimrcが入っちゃってるので、環境によっては色とかおかしいくなるので、.vimrcは捨てたほうがいいかも
  • .bashrcとか.tmux.confも気に入らなかったら捨ててね
  • .gitconfigとかいじってないからコピってください
  • Vagrantには scp -P 2222 Vagrantfile vagrant@localhost:~/とかあげれる
  • わからなければ、誰かが作ったchefで動かすVagrantGitHubにあったはずなのでそっち見てね

参考リンク