Slide 1

Slide 1 text

VirtualBox+Vagrant による検証環境の作成 大野 哲生(@g_plains)

Slide 2

Slide 2 text

目次  はじめに  VirtualBox+Vagrant 初期構成 ◦ ダウンロード/インストール ◦ 環境変数の設定 ◦ 仮想マシンを実際に作って壊す  作業を簡便にするために ◦ 「ごった煮」boxの作成 ◦ ディスクの追加 ◦ ネットワークの管理  ふりかえり

Slide 3

Slide 3 text

はじめに:検証でVirtualBoxを使う理由  VMware ESXi の場合:Ansible/Vagrantに支障 - Ansible:2.9以降でPymomiのみ利用可能 →ESXi単体での利用には対応不能 - Vagrant:VMware用プラグインは有償  KVM の場合:別途Linuxサーバが必要 ちょっと(物理的に)敷居が高い…?  Hyper-Vの場合:Windows10Proが必要 ※Windows2016ベースの無償Hyper-Vもあるが こちらは別途ハードウェアが必要

Slide 4

Slide 4 text

相手に用意してもらう環境  物理マシン(以下の機能を具備すること) 2C4T以上、メモリ8GB以上 HDD空き40GB ※VM個数+1C=3VMの場合、4C8Tが望ましい  100Mbps以上のブロードバンド環境 1-2GBのダウンロードが発生するため

Slide 5

Slide 5 text

VirtualBox+Vagrant 初期構築  ダウンロード/インストール  環境変数の設定  仮想マシンを実際に作って壊す

Slide 6

Slide 6 text

準備(ダウンロード/インストール)  VirtualBoxのダウンロード https://www.virtualbox.org/wiki/Downloads  Vagrantのダウンロード https://www.vagrantup.com/downloads.html  適宜インストールを行う

Slide 7

Slide 7 text

VirtualBox:環境変数の設定 VBoxManageを頻繁に使うため、予め環境変数を設定する  「スタート」>sysdm.cpl で「システムのプロパティ」開く  「詳細設定」タブ>「環境変数」をクリック  「ユーザ環境変数」>「Path」をダブルクリック  %VBOX_MSI_INSTALL_PATH% を追加  「システムのプロパティ」を閉じた後で、コマンドプロンプ トを開く  VBoxManage を実行して応答があることを確認する

Slide 8

Slide 8 text

Vagrant:仮想マシンを作って壊す  初期フォルダを作成する コマンドプロンプトを開き、 c:¥vagrantフォルダを作る  CentOS7 のイメージを受信して作って壊す コマンドプロンプトより、c:¥vagrant配下に移動して実行 初回のvagrant up の時にboxの受信で大量通信が発生する ので注意… mkdir c:¥vagrant cd ¥vagrant mkdir centos-7 cd centos-7 # c:¥vagrant¥centos-7 に移動 vagrant init centos/7 #Vagrantfile が生成される vagrant up # boxをpull して VMを構築 vagrarnt ssh # 対象VMにssh接続してみる vagrrant destroy # 構築したVMを破棄

Slide 9

Slide 9 text

Vagrant:Guest Additionsの自動投入  VirtualBoxではboxに含まれるGuest Additions(準仮想化ド ライバ)と実行環境とでバージョンが違う場合、エラーが出 力されてVagrantのジョブが異常終了することがある  Vagrantのプラグイン投入 コマンドプロンプトを開き、 以下コマンドを実行  「vagrant up」実行時にGuest Additionsの更新チェック/ ビルドを行うようになる…が カーネルヘッダ他のライブラリをまとめて受信するため、 boxの生成サイズが非常に大きくなる(+800MB?)  不要になったら削除も考える vagrant plugin install vagrant-vbguest vagrant plugin uninstall vagrant-vbguest

Slide 10

Slide 10 text

作業を簡便にするために  boxの選定  「ごった煮」boxの作成  ディスクの追加  ネットワークの管理

Slide 11

Slide 11 text

Vagrant:boxの選定  box自体はいっぱいある を実行すると、CentOS7のboxイメージが受信できる等  利用可能なbox https://app.vagrantup.com/boxes/search?provider=virtualbox から、任意のフレーバーを検索してみる vagrant init centos/7 vagrant up

Slide 12

Slide 12 text

Vagrant:「ごった煮」boxの作成-1  HAの検証では「作って壊し」を頻繁に行うため、結果的に (CentOSでいうところの)yum/dnf を頻繁に実施する  なるべくネットワークアクセスを抑えるため、予め「ごった 煮」イメージを作って、これをもとに環境作成を検討する  「ごった煮」Vagrantfileの例 (httpd/lvs/corosync用) Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.provision "shell", inline: <<-SHELL sudo yum update -y # ベースラインを更新 sudo yum install -y httpd # バックエンドサーバ用httpd sudo yum install -y ipvsadm keepalived # LVS/keepalived sudo yum install -y haproxy # LVS用 haproxy sudo yum install -y pacemaker pcs # pacemaker/corosync SHELL end

Slide 13

Slide 13 text

Vagrant:「ごった煮」boxの作成-2  実際に「ごった煮」boxを作成してみる コマンドプロンプトより、c:¥vagrant配下に移動して実行  前頁ではhttpd/lvs/keepalived/corosync のサービスは いずれもdisabled になっているので、検証時は適宜有効化 vagrant init # Vagrantfile の作成 # 前頁の「ごった煮」Vagrantfile の内容をVagrantfileにコピペ… vagrant up # yum update他が実行される vagrant package --output gottani.box vagrant destroy -f # 仮想マシンはここで削除される vagrant box list vagrant box add oreno-gottani gottani.box vagrant box list systemctl is-enabled httpd # disabled であること systemctl start httpd # 停止>実行に変化する systemctl enable httpd # 無効>有効 に変化する systemctl is-enabled httpd # enabledであること

Slide 14

Slide 14 text

Vagrant:ディスク追加-1  Vagrant ではvboxmanageを介してディスクを追加する ※予め vboxmanage に対してPathが切ってあること - vboxmanage list vms ノード名と UUIDのペアが表示される - vboxmanage showvminfo (UUID) | find “Stor” ここで”Storage Controller Name”に着目する →今回は「IDE」がストレージコントローラのようだ > vboxmanage list vms "node1_xxxx_xxxxx" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} > vboxmanage showvminfo (上述のUUID) | find “Stor” Storage Controller Name (0): IDE Storage Controller Type (0): PIIX4 Storage Controller Instance Number (0): 0 Storage Controller Max Port Count (0): 2 Storage Controller Port Count (0): 2 Storage Controller Bootable (0): on

Slide 15

Slide 15 text

Vagrant:ディスク追加-2  Vagrantfile の記述例 --storagectl について、適宜(今回はIDE)記述する これにより、box以外にもう一つ仮想ディスクが設定される Vagrant.configure("2") do |config| config.vm.box = “centos/7" config.vm.define "node1" do |machine| machine.vm.hostname = "node1" machine.vm.provider :virtualbox do |vb| file_to_disk = ".vagrant/machines/node1/sdb.vdi" if not File.exist?(file_to_disk) then vb.customize ["createhd", "--filename", file_to_disk, "--size", 100 * 1024] end vb.customize ['storageattach', :id, '--storagectl', 'IDE’, '--port', 1,'--device', 0, '--type', 'hdd’, '--medium', file_to_disk] end end

Slide 16

Slide 16 text

Vagrant:ネットワーク管理 Vagrantの仮想マシンは以下のネットワークを取りうる  NAT(10.0.2.0/24) デフォルトで作られる  ホストオンリー(192.168.12.0/24 とか) private_network を指定する。 マルチホームになるので、別途 ip route 等実施必要  ブリッジ( 表に 192.168.24.0/24 が向いている例) public_network を指定する。 machine.vm.network “private_network”, ip: “192.168.12.1“ , virtualbox_intnet: "backend" machine.vm.network “public_network”, ip: “192.168.24.101“ ,

Slide 17

Slide 17 text

ふりかえり  box 頻繁にアップデートの走るboxは、台数分デプロイする前に、 仮デプロイ>必要なアップデート>特定用途box化しておく  ディスク IDEかSATAかは一回デプロイしてから判断してみる  ネットワーク 標準で張られるNATネットワークの扱いが難しいので ブリッジネットワークを張ったあとでOS側でルーティング の追加を検討する…