当記事はケーススタディの連載となっています。目次は【こちら】です。
最新のソースコードは【GitHub】で公開中です。
今回はVagrantの基本的な操作の流れをかいつまんで説明します。
文章だけでは分かり辛いので、下のフローチャートをあわせて参照ください。
##前提条件
前回までの記事の内容が完了している。
Vagrantfileのパスは「d:\_BLOG\BG001\vagrant_box」とする。
boxファイルが作成済みである。
##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.以下の通り修正
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.以下の通り修正
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)」について。
連載の目次は【こちら】です。