はじめに
この記事はDMM WEBCAMPアドベントカレンダー14日目の記事です。
こんにちは!12月14日、年末まで17日、みなさまいかがお過ごしでしょうか!?
今回は「vagrantってどこかで聞いたけど何だったっけ?」と考えている皆様に、例を交えながらお伝えしたいと思います。
だいたいのイメージ
用語 | イメージ |
---|---|
プログラム | 店 |
開発環境 | サービスエリア |
むかしむかし
そこはラーメン屋でした。今まではA県の国道沿いに、ぽつぽつと店舗を営業していましたが、薄暗い事務室では他県への展開が計画されていました。
「ラーメンだけを考えれたらいいのに」
というのが店主Bの口癖でした。Bはこんな苦労を想定しています。
- 水質の違いでラーメンに影響がでる可能性がある。味が悪化するかもしれない。
- 隣県はラーメン文化が弱い。ラーメン調理可能なスタッフを集めきれないかもしれない。
苦慮した店主は知り合いのラーメン店に相談し続けました。その噂を聞きつけ、登場したのがサービスエリアを手掛けるvagrant営業担当のCでした。
vagrantの登場
vagrantの営業Cは、課題一つ一つに太鼓判を押しました。
-
水質の違いで味に影響がでる可能性がある。- 全国で水質が同一になるように施設で水質調整がされていて、素材の違いはない。
-
ラーメン調理可能なスタッフを集めきれないかもしれない。- バイト採用や教育もvagrantが行うので、スタッフのスキルが同じになる。
- あなたはラーメンだけに集中できる。
早速店主Bはスタッフ要望やその他についてまとめた資料をCに渡しました。Cはそれを見事に叶え、見事全国展開を可能としたのでした。
vagrantは何をするのか
vagrantは要望書を受け取り、要望通りのサービスエリアを建設します。例えばラーメン店が安定稼働するスペック(RAM、CPU)を決めたり、必要な設備(プログラミング言語など)を用意してくれます。
同じ要望書をみんなに配れば、全員が全く同じサービスエリアを建設できます。そして全く同じサービスエリアのため、中のラーメン店(プログラム)は環境を気にすることなく作業できます。
また、同じサービスエリアのため、ラーメン店にアクセスする方法(ネットワーク設定)も同じです。そのためみんな同じ方法でサイトにアクセスできるのです。
vagrantが必要なもの
vagrantfile
例えでいう要望書です。ここに書くとvagrantが代わりに実行します。書いてあることは命令集のようなもので、エディタで編集できます。
ボックス
サービスエリアの原型のようなものです。ボックスは以下を含ませることができます。
- OS
- ミドルウェア
- Webサーバ
- アプリケーションサーバ
- DB
- プログラミング言語
- 他ソフトウェア
どの程度をボックスで用意するべきでしょうか?
vagrantfileで毎回発電機をインストールして時間がかかるより、予め発電機付きのボックスを用意しておけば建設時間は短くて済みます。ただし、その分ボックスの容量が大きくなるので注意です。インストールに1時間もかかるようになれば、ボックスを用意することを検討しましょう。
vagrantの営業Cさんへの依頼リスト
※コマンドのことです。vagrantには様々なコマンドが用意されているので、決まりきったコマンドを打つだけで環境を構築できます。
vagrant up
サービスエリアを建設します。vagrantはvagrantfileをまず確認して、そこに指定されているボックスを元に建設を行います。
vagrant provision
サービスエリアの設備を整えます。vagrant upの途中にprovisionを実行してね!と言われることがあるので、そのときに実行します。やっているのはソフトウェアのインストールなどです。
vagrant status
サービスエリアの状態を確認できます(未建設なのか、営業中なのか、準備中なのか)。
vagrant halt
サービスエリアの電源を落とします。正常に電源が落とせなかった時は強制的に電源が落とされます。やっていることは通常のPCと同じシャットダウンです。
もう一度開店させるには、vagrant upが必要となります。
vagrant suspend
現在の状況を保存した後、サービスエリアを閉店にします。haltと違い、電源はつきっぱなしなので、仕事の再開はとても早く、キャッシュやデータベースもそのままの状態で残っています。
vagrant resume
閉店にしたサービスエリア(vagrant suspend)を開店させます。閉店していなければエラーが出力されます。
vagrant ssh
サービスエリアに接続します。接続後webサーバの立ち上げやログの確認などができます。
vagrant destroy
サービスエリアを更地にします。サービスエリアの痕跡は何も残りません。
便利機能:共有フォルダ
vagrantには共有フォルダの機能があり、サービスエリアを建設しているPC(以下PC)とサービスエリア内(以下vagrant環境)の一部分が共有されています。
vagrant環境はmacやwindowsなどのOSが別に入っているため、PCに入れているソフト(エディタ等)は使えません。
そのため、PCの共有フォルダをPCのエディタを使って編集し、vagrant環境でラーメン店(ソフト)の営業指示を出す、という方法が一般的です。
順序としては
- PCのエディタでプログラミング
- vagrant環境でwebサーバ起動や更新
- PCのブラウザでvagrant環境のwebサーバにアクセス
という感じです。
vagrant upしたら.vagrantってディレクトリができるんだけど?
vagrantの状態の一部を管理するために作られます。触らないようにしましょう。
また、gitには含めないようにしましょう。これが誰かに共有されてしまうと、共有された先で設定を上書きする可能性もあります。
まとめ
例え話でいくと、あなたはラーメン店の店主です。ラーメンをつくるために様々な道具があるように、アプリ開発にも様々なツールが存在します。
そして問題なのは、ツールが目に見えないためにイメージしづらい点にあるのです。
あなたは道具に振り回されるべきではありません。あなたは道具を使いこなし、あなたが一番と思う何かをつくるためにいるのです。さぁ、偉大なものをつくりあげましょう!楽しいhack lifeを!