Vagrant で作る仮想環境

技術要素

  • Vagrant - 仮想マシンの作成・起動・停止などを簡単に行うためのツール
  • VirtualBox - 仮想化ソフトウェア
  • Ansible - エージェントレスな構成管理ツール

ディレクトリ構成

[プロジェクトのルートディレクトリ]
  ├─ README.md
  ├─ Vagrantfile
  └─ ansible/
      ├─ group_vars/
      │   └─ all.yml
      ├─ host_vars/
      │   └─ all.yml
      └─ roles/
         ├─ common/
         ├  ・・・
         └─ httpd/

Vagrantfile

vmの設定などを記述する

# vmのベースになるVagrantのbox
config.vm.box = "bento/centos-6"

# ポートフォワーディングの設定
config.vm.network "forwarded_port", guest: 80, host: 1080
config.vm.network "forwarded_port", guest: 443, host: 1443

# vmとの共有ディレクトリの設定
# 編集するプログラム資産などを指定する
config.vm.synced_folder "../data", "/vagrant_data"
config.vm.synced_folder "../data", "/vagrant_data", :mount_options => ['dmode=777', 'fmode=666']

ansible

VagrantのProvisionで実行されるAnsibleのソース配置ディレクトリ

shell/

VagrantのProvisionで実行するshell script格納ディレクトリ

インストール

よく使うコマンド

Vagrant

# ローカルにキャッシュされているVagrantのbox(vmのテンプレート)
$ vagrant box list

# Vagrantのbox(vmのテンプレート)をローカルにキャッシュ
$ vagrant box add bento/centos-6

# vmの起動
$ vagrant up

# vmへのsshログインまたはログイン情報の表示
$ vagrant ssh

# vmの初期構築の再実行
$ vagrant provision

# vmの再起動
$ vagrant reload

# vmの停止
$ vagrant halt

# vmの削除
$ vagrant destroy