Edited at

【連載01】106.VagrantBoxの初期化から複数サーバ起動までの一般的な流れ

More than 3 years have passed since last update.

当記事はケーススタディの連載となっています。目次は【こちら】です。

最新のソースコードは【GitHub】で公開中です。

今回はVagrantの基本的な操作の流れをかいつまんで説明します。

文章だけでは分かり辛いので、下のフローチャートをあわせて参照ください。


前提条件

前回までの記事の内容が完了している。

Vagrantfileのパスは「d:\_BLOG\BG001\vagrant_box」とする。

boxファイルが作成済みである。

Vagrant操作フロー


01.VagrantBoxにサーバを追加


1-1.VagrantfileのDIRに移動

cd D:\_BLOG\BG001\vagrant_box


1-2.Vagrantにboxを追加

Vagrantにbox名とboxのベースになるboxファイルを指定する。

${boxファイル名}のboxからvmイメージが生成される。

書式:


vagrant box add \${box名} ${boxファイル名}


例:

vagrant box add adminserv01 basebox.box

必要に応じて複数のVagrantファイルを作成する。


1-3.boxファイルの登録を確認

※Vagrantに登録されているboxの一覧を表示する。

書式:


vagrant box list



02.boxファイルの削除

※どこのDIRでも実行可

※削除するbox名は1-3.の「box list」で確認

書式:


vagrant box remove \${削除するbox名}



03.Vagrantfileの作成

VagrantはVagrantfile(=boxファイルのinitファイル)の設定を見て起動する。


3-1.initの実行

一度のみ実行する。(Vagrantfileが既にある場合は作成不要)

以下のコマンドで実行後カレントフォルダに「Vagrantfile」というファイルが作成される。

書式:


vagrant init \${boxファイル名}



04a.Vagrantfileの修正(ベースとなるboxファイルを指定して起動する場合)

複数サーバの起動用にVagrantfileを修正する。

※ここでは「baseserv」を指定して起動する場合の設定


4a-1.Vagrantfileを開く

vi vagrantfile


4a-2.以下の通り修正


vagrantfile

Vagrant.configure(2) do |config|

#ベース
config.vm.box = "baseserv"

# == ▼▼▼複数のサーバの設定▼▼▼==

# adminserv01の設定(baseservのboxから作成)
config.vm.define :adminserv01 do |adminserv01|

# HOST名とVirtualBoxのホストオンリーネットワークのNICを追加
adminserv01.vm.hostname = "adminserv01"
adminserv01.vm.network :private_network, ip:"192.168.102.11"

# 起動時にVirtualBoxのGUI画面を表示する/メモリは1024を指定
adminserv01.vm.provider "virtualbox" do |vb|
vb.gui = true
vb.memory = "1024"
end
end

# apserv01の設定(baseservのboxから作成)
config.vm.define :apserv01 do |apserv01|
apserv01.vm.hostname = "apserv01"
apserv01.vm.network :private_network, ip:"192.168.102.12"
apserv01.vm.provider "virtualbox" do |vb|
vb.gui = true
vb.memory = "1024"
end
end

# dbserv01の設定(baseservのboxから作成)
config.vm.define :dbserv01 do |dbserv01|
dbserv01.vm.hostname = "dbserv01"
dbserv01.vm.network :private_network, ip:"192.168.102.13"
dbserv01.vm.provider "virtualbox" do |vb|
vb.gui = true
vb.memory = "1024"
end
end

# == ▲▲▲複数のサーバの設定▲▲▲==
end



04b.Vagrantfileの修正(それぞれのboxファイルを指定して起動する場合)

複数サーバの起動用にVagrantfileを修正する。


4b-1.Vagrantfileを開く

vi vagrantfile


4b-2.以下の通り修正


vagrantfile

Vagrant.configure(2) do |config|

# ここはコメント化する
# config.vm.box = "manageterm"

# *************** 1:アプリケーションサーバ用 ***************
config.vm.define :apserv01 do |apserv01|
apserv01.vm.box = "apserv01"

# ホスト名の指定
apserv01.vm.hostname = "apserv01"

# ネットワークのタイプをDHCPではなくstaticにする。
# ネットワークの設定(ホストとゲスト間のプライベートネットワーク(不要ならコメント)
apserv01.vm.network "private_network", ip: '192.168.134.196'

# ネットワークの設定(ホストと同じセグメントのネットワークに入る設定)
apserv01.vm.network "public_network", ip: '192.168.102.196'
apserv01.vm.provider "virtualbox" do |vb|
#VirtualBoxが起動している時にGUIで表示する
vb.gui = true
#メモリを1Gに設定
vb.memory = "1024"
end
end

# *************** 2:DBサーバ用(IPアドレスとconfigの変数名のみ変更) ***************
config.vm.define :dbserv01 do |dbserv01|
dbserv01.vm.box = "dbserv01"
dbserv01.vm.hostname = "dbserv01"
dbserv01.vm.network "private_network", ip: '192.168.134.197'
dbserv01.vm.network "public_network", ip: '192.168.102.197'
dbserv01.vm.provider "virtualbox" do |vb|
vb.gui = true
vb.memory = "1024"
end
end

# *************** 3:管理サーバ用 IPアドレスとconfigの変数名のみ変更***************
config.vm.define :adminserv01 do |adminserv01|
adminserv01.vm.box = "adminserv01"
adminserv01.vm.hostname = "adminserv01"
adminserv01.vm.network "private_network", ip: '192.168.134.198'
adminserv01.vm.network "public_network", ip: '192.168.102.198'
adminserv01.vm.provider "virtualbox" do |vb|
vb.gui = true
vb.memory = "1024"
end
end

# *************** 4:元々設定してたmanagetermも複数起動に際し変更 ***************
config.vm.define :manageterm do |manageterm|
manageterm.vm.box = "manageterm"
manageterm.vm.hostname = "manageterm"
manageterm.vm.network "private_network", ip: '192.168.134.195'
manageterm.vm.network "public_network", ip: '192.168.102.195'
manageterm.vm.provider "virtualbox" do |vb|
vb.gui = true
vb.memory = "1024"
end
end
end



05a.Vagrantの起動


5a-1.VagrantfileのDIRに移動

cd D:\_BLOG\BG001\vagrant_box


5a-2.Vagrantを起動

vagrant up


05b.Vagrantの起動(Vagrantfileに複数boxの設定がある場合)

※名前を指定して特定のbox(サーバ)を起動するパターン


5b-1.VagrantfileのDIRに移動

cd D:\_BLOG\BG001\vagrant_box


5b-2.Vagrantを起動(box内サーバ名を指定)

書式:


vagrant up \${box内サーバ名}


例:「adminserv01」を起動

vagrant up adminserv01


06a.Vagrantを使用して起動したboxの終了


6a-1.VagrantfileのDIRに移動

cd D:\_BLOG\BG001\vagrant_box


6a-2.Vagrantを終了

vagrant halt


06b.Vagrantを使用して起動したboxの終了(Vagrantfileに複数boxの設定がある場合)

※名前を指定して特定のbox(サーバ)を終了するパターン


6b-1.VagrantfileのDIRに移動

cd D:\_BLOG\BG001\vagrant_box


6b-2.Vagrantを終了(box内サーバ名を指定)

書式:


vagrant halt \${box内サーバ名}


例:「adminserv01」を終了

vagrant halt adminserv01


07.Vagrantで作成したVirtualBox仮想マシンの削除

※VirtualBox自体のファイルが削除される。


7-1.VagrantfileのDIRに移動

cd D:\_BLOG\BG001\vagrant_box


02.仮想マシンを削除(box内サーバ名を指定)

書式:


vagrant destroy ${box内サーバ名}


例:「adminserv01」を削除

vagrant destroy adminserv01


08.VagrantBoxからVirtualBox仮想マシンを破棄

※VirtualBox自体のファイルは削除されず、Vagrantのbox管理外という扱いとなる。


8-1.VagrantfileのDIRに移動

cd D:\_BLOG\BG001\vagrant_box


8-2.仮想マシンを破棄(box内サーバ名を指定)

書式:


vagrant remove \${box内サーバ名}


例:「adminserv01」を破棄

vagrant box remove adminserv01


09.構築したサーバをVagrantBoxファイルとして保存


9-1.VagrantfileのDIRに移動

cd D:\_BLOG\BG001\vagrant_box


9-2.boxファイルとしてパッケージングする

書式:


vagrant package \${BOX内サーバ名} --output ${出力パス}


例:「adminserv01」をパッケージング

vagrant package adminserv01 --output d:\_BLOG\BG001_vagrant_boxfiles\adminserv01.box

次回は「最小構成CentOS7からAnsible実行可能な操作用CentOS7を作成する(On Vagrant)」について。

連載の目次は【こちら】です。