Help us understand the problem. What is going on with this article?

Vagrant basics

More than 3 years have passed since last update.

概要

仮想環境(VirtualBoxなど)上への仮想マシンの立ち上げ、操作が可能。

用語

プロバイダ

仮想環境
eg.VirtualBoxやVM Ware、EC2など

プロビジョニング

ミドルウェアの設定やインストールを行うツール
eg.シェルスクリプト、Chef(chef-solo, chef-client)、Puppetなど

Boxファイル

仮想マシン起動の際にベースとなるイメージファイルのこと。
仮想環境ごとに必要。
通常はOSイメージから作成する。
Vagrant利用の上で最低限必要な設定(Vagrantユーザの作成、sshdの起動、プロビジョニングツールのインストール)のみを行っておくのが普通。

Vagrantfile

構築する仮装マシンのスペックやプロビジョニングツールの指定など、仮想マシンの構成を記述する。
Rubyベース。
基本的に、本ファイルとプロビジョニングツールの設定ファイルの2つがあれば、どこでも同じ環境を再現できる。

コマンド

基本

# バージョン確認
$ vagrant -v

# ヘルプ
$ vagrant -h

仮想環境のベースとなるBoxファイルを準備

$ vagrant box add NAME URL
# sample
$ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box
(Vagrantfileのconfig.vm.boxディレクトリで指定する。)

BoxファイルはVeeweeで作成することも出来る。
http://www.ryuzee.com/contents/blog/6614

Box一覧の確認

$ vagrant box list

Vagrantfileの作成

$ vagrant init BOX_NAME
# sample
$ vagrant init centos64

Vagrantfileの設定

sample.rb
$ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    config.vm.box="centos64"

    //ネットワークの設定
    config.vm.network :private_network, ip:"192.168.33.10"

    //GUIモードの設定
    config.vm.provider :virtualbox do |vb|
        vb.gui = true
    end
end

※ホストオンリーネットワーク
 →ホストOSとゲストOS間でのみ通信できるネットワーク。
  上記では、ゲスト側に192.168.33.10(任意)を割り当てている。

以下は古い書き方。

誤)config.vm.network :hostonly, "192.168.33.10"
正)config.vm.network :private_network, ip:"192.168.33.10"

仮想マシンの起動

$ vagrant up

※Vagrantfileと同じディレクトリで実行する

GUIモードにしているとVirtualBoxが起動するので、id/passともに"vagrant"でログイン

sshでログイン

$ vagrant ssh

※仮想マシンにてsshdが起動している必要あり。

通常の方法でssh出来るようにする。

Chef Soloをknife-soloで動かすことを見越して、通常のsshアクセス、つまり

$ ssh 192.168.33.10

でsshできるようにする。

# ~/.ssh/config
Host 192.168.33.*
IdentityFile ~/.vagrant.d/insecure_private_key
User vagrant

もしくは

$ vagrant ssh-config --host melody

で仮想サーバへのssh設定を吐き出してくれるため、

$ vagrant ssh-config --host melody >> ~/.ssh/config

とすることで

$ ssh melody

でログインできるようになる。

sshログイン時の設定確認

$ vagrant ssh-config

status確認

$ vagrant status
Current machine states:
default                   running (virtualbox)
(仮想マシン名)  (status)

仮想マシンの停止

$ vagrant halt

仮想マシンの削除

$ vagrant destroy

仮想マシンのエクスポート

$ vagrant package

→package.boxという名前のBoxファイルが生成される。
それを配布し、受け取った側は

$ vagrant box add new_box package.box

で利用できる。

vagrantをより便利に

sahara

saharaを用いると、簡単に仮想マシンの状態保存・ロールバックが出来ます。

saharaでVagrantの状態管理
http://qiita.com/kidachi_/items/ba365905b2a770c72be1

chef関連

サーバ構成管理ツールといえばchef。

Chefの基本
http://qiita.com/kidachi_/items/9d569b8673e70ef93f0e

knife-soloによるChefの実行
http://qiita.com/kidachi_/items/b222fb2892e6108c46d5

kidach1
Qiitaの運営方針に疑問があるため、基本的に今後の投稿は考えていません。 主に https://twitter.com/kidach1 で活動報告しています。
aktsk
株式会社アカツキは、スマートフォンゲームの企画開発を中心に事業を展開しております。創業以来全てのゲームを内製しているため、高い技術ノウハウが蓄積されています。今後は、新規事業の立ち上げも行ってまいります。
http://aktsk.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした