とほほのVagrant入門

目次

環境

Vagrant とは

インストール

下記から Vagrant をインストールする。

ボックスを追加する

C:\> vagrant box add centos67 https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box
C:\> vagrant box list
C:\> vagrant box update centos67
C:\> vagrant box remove centos67

下記のサイトで様々な box が公開されています。

VMを作成する

C:\> mkdir centos67a
C:\> cd centos67a
C:\centos67a> vagrant init --minimal centos67
C:\centos67a> type Vargrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos67"
end
C:\centos67a> vagrant up

SSHでログインする

ssh-config を実行すると SSH に関する情報が表示される。下記では、起動した VM の SSH ポート(22番)が、127.0.0.1 の 2222 番にマッピングされていることがわかる。Tera Term Pro などの SSH クライアントで、127.0.0.1 の 2222番ポートに SSH ログインし、ユーザID vagrant、パスワード vagrant でログインできる。

C:\centos67a> vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
    :

VM操作のいろいろ

C:\centos67a> vagrant up ... 起動する
C:\centos67a> vagrant halt ... シャットダウンする
C:\centos67a> vagrant status ... 状態を表示する
C:\centos67a> vagrant suspend ... 一時停止する(復帰はup)
C:\centos67a> vagrant destroy ... VMを削除する

パッケージング

現在のゲストOS をパッケージ化し、それを box に加える。

C:\centos67a> vagrant package
C:\centos67a> vagrant box add centos67-httpd package.box
C:\centos67a> vagrant box list

フォルダ共有

ホストOS の C:\centos67a は、ゲストOS の /vagrant にマウントされている。

プロビジョニング

下記の様に、プロビジョニング時に初期インストールスクリプトを指定することができる。

C:\centos67a> notepad bootstrap.sh

#!/bin/sh
yum -y install httpd
chkconfig httpd on
service start httpd

C:\centos67a> notepad Vagrantfile

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

もしくは、Vagrantfile に直接記述することもできる。

Vagrant.configure("2") do |config|
  config.vm.box = "centos67"
  config.vm.provision "shell", inline: <<-SHELL
    yum -y install httpd
    chkconfig httpd on
    service start httpd
  SHELL
end

アドレス割り当て

C:\centos67a> notepad Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "centos67"
  config.vm.network "private_network", ip: "192.168.56.120"
end

ポートマッピング

C:\centos67a> notepad Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "centos67"
  config.vm.network :forwarded_port, host: 8080, guest: 80
end