LoginSignup
6
7

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-01-10

当記事はケーススタディの連載となっています。目次は【こちら】です。
最新のソースコードは【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)」について。

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

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7