vagrant の基礎

ansibleを触る環境を準備するためにvagrantを触ったのでその時のメモ

mac環境へのインストール

1.公式サイトからインストーラをダウンロードする。

https://www.vagrantup.com/downloads.html
/usr/local/bin/vagrantにインストールされた
~ which vagrant
/usr/local/bin/vagrant

2.vagrantfileの作成

# mkdir -p ~/vagrantspace/vagrant_getting_started    
# cd ~/mywork/vagrantspace/vagrant_getting_started    
# vagrant init

vagrant initでVagrantfileが作られる。Vagrantfileはvagrantのバージョンコントロールを行うためのファイルになる。

3.boxの追加

公式の手順に従ってhashicorp/precise64のboxを追加する。

# vagrant box add hashicorp/precise64

別のboxを追加する場合はatlasが提供している以下のダウンロードサイトから探すことができる。
https://atlas.hashicorp.com/boxes/search?_ga=1.197033387.661843880.1488614682
自前でisoを用意したい場合は、以下を参考にする。
http://kan3aa.hatenablog.com/entry/2015/05/29/120212

vagrantで使用するダウンロード済みboxの一覧を確認する場合は以下を実行する。

# vagrant box list

4.vmを起動して接続する

VirtualBoxをインストールしていないのであれば、公式からインストーラーをダウンロードして入れておく。
https://www.virtualbox.org/wiki/Downloads
vmの起動

# vagrant up

vmssh接続する

# vgrant ssh

vm接続を解除する

# logout
又は
# exit
vagrant基本コマンド
再起動
vagrant reload

ステータス確認
vagrant status

一時停止
vagrant suspend

一時停止からの復帰
vagrant resume

停止
vagrant halt

起動
vagrant up

boxの初期化
vagrant init

boxの削除
vagrant destory
vagrantの起動状態を確認する

status管理用のプラグインインストール

# vagrant plugin install 
# vagrant global-status

ディレクトリの共有

通常Vagrantfileはssh接続後の/vagrant/Vagrantfileにマウントされる。

# ls /vagrant/

/vagrantディレクトリ直下にファイルを作成したらvmのホスト側のVagrantfileがあったディレクトリにファイルが作られる動きをする。

# touch /vagrant/hoge
# exit
# ls

5.vagrant起動時のスクリプトapacheのインストール

以下のapacheインストールスクリプトをbootstarp.shのファイル名でVagrantfileがあるディレクトリに保存しておく。 # vi /vagrant/bootstrap.sh

#!/usr/bin/env bash

apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
  rm -rf /var/www
  ln -fs /vagrant /var/www
fi

それから設定ファイルを編集し/vagrantディクトリにbootstrap.shをvagrant起動時に実行するスクリプトにす指定する。

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.provision :shell, path: "bootstrap.sh"
end

次にvagrant reloadして再起動

# vagrant reload --provision
# vagrant up

vagrantssh接続している状態でapacheにアクセスできるか確認

# wget -qO- 127.0.0.1

6.ポートフォワード

ホスト端末からvagrantへアクセスできるようにポートフォワードを設定する
# vi Vagrantfile

config.vm.network "forwarded_port", guest: 80, host: 4567

ホスト端末からブラウザでlocalhost:4567にアクセスして動作確認