humangas's blog

自分用のメモなので雑です。

ドットインストール:Vagrant入門(全13回)のまとめ

「ドットインストール」がやっぱイイ!

IT技術系の新しいことを学びたい時、
自分の場合、中々武器に出来るまでには時間がかかるし、しんどくもなるので中途半端になりがち。
だいたいネットに情報は転がってるけど、初心者がだいたい躓くのはその入口。

で、自分は最近こんな感じでやることが多い。何となくサイクルが掴めてきた感じがする。

  1. 適当にネット徘徊してざぁーとキーワードとかを浴びる
  2. ドットインストールにだいたいあるので、それをひと通り見て入口を探る
  3. どっかにアウトプットする:これやらないと速攻忘れる

ということで、ブログに書いてみる。


その前にドットインストールって?

「3分動画でマスターする初心者向けプログラミング学習サイトです。」とある。

コンセプトがイイっすね。飽き性の自分でも見れます。しかも、基本無料。
あと、話し手の方のテンポが良い。これも気持ちよく見れる&継続して活用するための大事な要素です。

見たほうが速いので、知らない人はコチラからどうぞ。
※ リンクは、この記事に合わせてVagrant のページ。


ドットインストール「Vagrant入門(全13回)」のメモ

ドットインストールだけでなく、一部自分のメモを入り混じって入ってる&聞きながらダァ~と書いてるので、そのままだと分かりにくいと思います。あくまで、自分用メモですので、その辺予めご了承下さい。

自分なりのまとめ

  • Vagratって?:仮想マシン(VirtualBox, VMware, AWS EC2など)フロントツールで、仮想マシンを簡単にコマンド一発で建てれる。
  • 建てれる仕組みとして、Vagrantfileというファイルに仮想マシンの定義を書いておけばいい。
  • なので、一回仮想マシンを定義しておけば、何回も建てたり削除したり、他で使えたり出来るので楽!!
  • さらに、Chefとかのプロビジョニングツールと連動できるので、Vagrantで建てた→ Chefでサーバ作ったみたいなことをコマンド一発で出来るので、さらに楽!!!

環境

  • VirtualBox:4.2.16-86992
  • Vagrant:1.2.3
  • OS:Windows 7, Mac OSX 10.8.3

準備

  1. Virtual Box インストール
  2. Vagrant インストール

Virtual Box インストール

  1. Oracle Virtual Box Downloads にアクセス
  2. 各OS用のインストーラをダウンロード
    • Windows: VirtualBox 4.3.6 for Windows hosts > x86/amd64
    • Mac: VirtualBox 4.3.6 for OS X hosts > x86/amd64
  3. ダウンロードした VirtualBox-4.2.16-xxxxx-Win.exe(VirtualBox-4.2.16-xxxxx-OSX.dmg)を起動

Vagrant インストール

※ RubyGems(gem) でインストールすると、古いv.1.0 系しかダウンロードされないため、v.1.1系(他の仮想マシンにも対応するプラグイン構成版)以降は、パッケージ インストールする。

  1. Vagrant HP にアクセス
  2. インストーラをダウンロード
    • Windows版インストーラ:Vagrant_1.2.3.msi
    • Mac版インストーラ:Vagrant-1.2.3.dmg
  3. ダウンロードした インストーラ(e.g. Vagrant_1.2.3.msi) を起動
  4. インストール完了後、コマンドプロンプトで、以下のように表示されることを確認

    $ vagrat --version Vagrant version 1.2.3


Vagrant 始め方

  1. Box(=仮想マシンテンプレート)を取得
  2. 仮想マシンを初期化
  3. 仮想マシンを起動

Box 入手方法

vagrantbox.es」サイトに色々なboxが公開されている(有志が置いてくれてる)。

$ vagrant box add [Box名] https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
$ vagrant box list
dummy (aws)

入手したBox の在処は?

以下に配置してある。

$HOME/.vagrant.d/boxes 
  • Mac: /Users/[user-name]/.vagrant.d/boxes
  • Windows 7: C:¥Users¥[user-name]¥.vagrant.d¥boxes
  • Windows XP: C:¥Documents and Settings¥[user-name]¥.vagrant.d¥boxes

ポイント

一つのBox(仮想マシンテンプレート)から好きなだけ仮想マシンを作れる。

作成した仮想マシンを削除するのも簡単だが、削除してもBoxは削除されない。
そのため、削除(destroy)しても、またすぐにBoxから作成できる(仮想マシンはBoxの実態=インスタンスというイメージ)。
destroyしてもVagrantfile は削除されないので、vagrant up すれば、またVagrantfile + Box から新しい、かつ同じ仮想マシンを作成できる。


基本操作コマンド

作り方

  1. ディレクトリ作って(仮想マシン用)、そこに移動:cd 作成したディレクトリ
  2. $ vagrant init [box名] - Vagrantfileがそのディレクトリ直下に作られる


※ EC2だと、boxの実態をローカルに取得ということができないので、常にdummy ボックスを使う。
Vagrant の構造上、Boxは必須なので、それようのdummy Box であり、中身に意味があるわけではない。

※ VirtualBox、VMWare だと、実態としてのBox が必須なので、[box名]は必須。
この[box名]で、起ちあげたいサーバ(インスタンス)のベースになる仮想マシンテンプレートを指定しないと何サーバを作りたいか不明なため。

代表コマンド

だいたいココにあるコマンドが使えれば、基本操作には事足りる。

起動

必須。これで全てが始まる。

$ vagrant up

終了

EC2だと使えなかったコマンド。今のプラグインのバージョンだと使えるかも。
※ VagrantでEC2上にサーバ建てたい時は、AWS-Proiderというプラグインが必要。
その手順はコチラ→ 「Vagrantで AWS EC2インスタンス(RHEL5.5)を作成する」(以前、Qiitaに書いた)

$ vagrant halt

状態参照

よく使う。今の状態を知る。

$ vagrant status

サスペンド

あんま使わない。

$ vagrant suspend

復帰(サスペンドからの復帰)

あんま使わない。

$ vagrant resume

再起動

Vagrantfileファイルの再読み込みを行いOS再起動する。

$ reload

削除

削除というより、アンデプロイとかインスタンスだけ削除のイメージ。
※ このコマンド発行しても仮想マシンの元ネタ(Vagrantfile)自体は存在しているので、また立ち上げたければ、vagrant upすればOK。

$ destroy

設定ファイルと知っとくこと

設定ファイル=Vagrantfileと、それにまつわる知っといてほうがいいこと

Vagrantfile

  • ネットワーク設定等が書かれている(設定ファイルはruby)
  • → 例) 試すなら、private_network を使うのが簡単
  • 共有フォルダ(ローカルPCとvagrant自体の共有フォルダ)
  • → 仮想マシン内:/vagrant と ローカルPC:仮想マシン用ディレクトリ が互いに共有されている

Vagrantfile を編集

  • shellで書ける、直接Vagrantfileに書いても、ファイル外出しで読み込みでもOK
  • config.vm.provision :shell, :inline => "echo hello world" ..... 的なことを書く
  • → Chef 連携などもこのprovision を使う

$ vagrant provision

  • provisioning = 起動時になんかプログラムでやってくれる、やりたい操作実行のこと
  • provisioning だけリロードしたい場合

$ vagrant package

  • 自分で仮想マシンからBoxを作る(package.boxという名称で)
  • 仮想マシンが停止してないとダメ
  • $ vagrant box add [my_box] package.box すると、~/.vagrant.d/boxes/配下にBoxが[my_box]コピーされるので、元のBoxであるpackage.boxはもういらないから削除してOK

プライベートIPアドレスを設定する

config.vm.networkのコメントアウトを外して、プライベートIPアドレスを付与
config.vm.network :private_network, ip: "ゲストOS側の割り当てたい任意のIPアドレス"


BOXファイルを作成する

自分でVagrant 用のBox(仮想マシンのイメージ的なもの)を作ることも出来る。

$ vagrant package

→ package.boxがカレントディレクトリに作成される (作成前にシャットダウン走る)

$ vagrant box add my_box package.box

→Boxが追加される


plug-in 導入・確認

Vagrant 1.1系からプラグイン構造に変わった。で、そのプラグインを入れるためのコマンド整理

インストール

$ vagrant plugin install [plugin-name]

アンインストール

$ vagrant plugin uninstall [plugin-name]

入ってるプラグイン確認

$ vagrant plugin list

便利プラグイン:sahara 導入

sandbox モードを有効にしてくれる(VMwareのスナップショットみたいな感じ)。
ただし、EC2では使えない。

使いたい時、停止する時

※ vagrant suspend とかで止めてからやるほうが速い。

$vagrant sandbox on
$vagrant sandbox off

今の状態

$vagrant sandbox status

変更を戻したい時 → sandbox on の状態に戻してくれる

$vagrant sandbox rollback

変更を反映したい時

※ vagrant suspend とかで止めてからやるほうが速い。

$vagrant sandbox commit

Box操作

box を追加する

$ vagrant box add [box名] [box入手先URL]

e.g.,

$ vagrant box add precise32 http://files.vagrantup.com/precise32.box

box list を参照する

$ vagrant box list

box を作成する

$ vagrant package

HELP

$ vagrant box -h

SSH 設定

以下コマンドで、ssh 設定を追加すると接続が楽。
これすると、$ ssh [host-name] だけでログイン出来るようになる。

$ vagrant ssh-config --host [host-name] >> ~/.ssh/config