佐藤の屋敷

技術的なことを残せれば幸い

WindowsにVirtualBoxとVagrantをインストールしたメモ

◆目的、したいこと

複数台のCentOSをWindows上で起動したい。
CentOS6.7にしてみる。

◆環境

  • OS: Windows 8.1 64bit
  • CPU: i7-4790 3.60GHz
  • Mem: 8G

◆インストールしたもの

  • VirtualBox-5.0.8-103449-Win.exe
  • VirtualBox 5.0.8 Oracle VM VirtualBox Extension Pack
  • vagrant_1.7.4.msi
  • vagrant-manager-windows-1.0.0.3.exe *1

◆それぞれの入手とインストール

■VirtualBoxの入手

■Vagrantの入手

■Vagrant Managerの入手

■インストールの順序というかやった順序

  1. VirtualBox-5.0.8-103449-Win.exeを何も考えずインストール
  2. Extension Packもインストール
  3. vagrant_1.7.4.msiをインストール( 最後に再起動要求が来るのでYesに )
  4. Vagrant Managerはまだインストールしてなかった
  5. 私の場合C:\はSSDで容量少ないからそんなところにいろいろ置きたくなかったのでVirtualBoxの仮想マシンフォルダの変更とvagrantの設定ファイルをD:\の自分の決めたところへ
  6. ひとまずvagrantの設定ファイルはD:\vMachine\centosとした
  7. cmdコマンドでコマンドプロンプト起動してD:\vMachine\centosへ移動
  8. そこでvagrant initコマンドの実行をしてVagrantfileを作る
  9. エディタでVagrantfileファイルの編集
  10. 初回起動くらいはコマンドラインでvagrant upを実行し仮想サーバを3台起動
  11. 初回はbento/centos-6.7からダウンロードされるので時間がかかります
  12. 無事起動が確認できたら一旦シャットダウンvagrant halt
  13. Vagrant Managerのインストール
  14. あとは自由にSSHなどで接続してそれぞれのサーバの設定を行います。*3
9.で書いたVagrantfileの内容
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.box = "bento/centos-6.7"
  
  config.vm.define :web1 do | web1 |
    web1.vm.hostname = "web1"
    web1.vm.network "public_network", ip: "192.168.1.50"
  end
  
  config.vm.define :web2 do | web2 |
    web2.vm.hostname = "web2"
    web2.vm.network "public_network", ip: "192.168.1.51"
  end

  config.vm.define :db1 do | db1 |
    db1.vm.hostname = "db1"
    db1.vm.network "public_network", ip: "192.168.1.60"
  end
  
end
10.vagrant upを実行するとこんな感じで表示(抜粋)
D:\vMachine\centos>vagrant up
Bringing machine 'web1' up with 'virtualbox' provider...
Bringing machine 'web2' up with 'virtualbox' provider...
Bringing machine 'db1' up with 'virtualbox' provider...
==> web1: Checking if box 'bento/centos-6.7' is up to date...
==> web1: Clearing any previously set forwarded ports...
==> web1: Clearing any previously set network interfaces...
==> web1: Preparing network interfaces based on configuration...
    web1: Adapter 1: nat
    web1: Adapter 2: bridged
==> web1: Forwarding ports...
    web1: 22 => 2222 (adapter 1)
==> web1: Booting VM...
==> web1: Waiting for machine to boot. This may take a few minutes...
    web1: SSH address: 127.0.0.1:2222
    web1: SSH username: vagrant
    web1: SSH auth method: private key
    web1: Warning: Connection timeout. Retrying...
    web1: Warning: Remote connection disconnect. Retrying...
==> web1: Machine booted and ready!
==> web1: Checking for guest additions in VM...
==> web1: Setting hostname...
==> web1: Configuring and enabling network interfaces...
==> web1: Mounting shared folders...
    web1: /vagrant => D:/vMachine/centos
==> web1: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> web1: flag to force provisioning. Provisioners marked to run always will still run.
==> web2: Checking if box 'bento/centos-6.7' is up to date...
==> web2: Clearing any previously set forwarded ports...
==> web2: Fixed port collision for 22 => 2222. Now on port 2200.
==> web2: Clearing any previously set network interfaces...
==> web2: Preparing network interfaces based on configuration...
    web2: Adapter 1: nat
    web2: Adapter 2: bridged
==> web2: Forwarding ports...
    web2: 22 => 2200 (adapter 1)
==> web2: Booting VM...

~~~~~
VirtualBoxマネージャーを見るとこんな感じでしっかり3台起動している。*4

f:id:satoysan:20151108132717p:plain

さて、ここまできたらSSHでサーバにつなぎます。前述のVagrantfileではweb1サーバは"public_network", ip: "192.168.11.50"として記載していますのでそのままTeraTermなどで接続します。*5

vagrant-managerで起動するイメージ

f:id:satoysan:20151108135205p:plain

vagrant upと同等のことがコマンドプロンプトを開かずに行えます。*6

f:id:satoysan:20151108135453p:plain

vagrantへsshログインする

f:id:satoysan:20151108142010p:plain

ユーザー名:vagrant
パスワード:vagrant
rootもパスワードがvagrantです

■その他の話

windowsでvagrant sshが素直にできないので、TeraTermを使って接続するのですが、ssh接続が127.0.0.1:2222になるのが嫌でVagrantfileconfig.vm.network "private_network"ではなく"public_network", ip: "192.168.1.50"にしています。いくつかネットで検索しても"private_network"のip指定でsshできているような記述があるのですがどうしてもできなかったので・・・。*7
その後web1などに接続してApacheをインストールすればブラウザでhttp://192.168.1.50/と叩けばテストページが表示します。

*1:VagrantManagerはなくてもコマンドたたけば基本はいらない

*2:VirtualBox 5.0.8 Oracle VM VirtualBox Extension Packをダウンロード

*3:各サーバのメモリ設定などは他のサイトでたくさん記載しておりますので、検索してみてください

*4:コマンドプロンプトを管理者モードで起動してvagrant upするとVirtualBoxマネージャーの電源オンが連動しなくてハマります。

*5:ipconfigとかで表示しませんがSSHで接続できます。

*6:コマンドで実行できるのがvagrantのイイところとかそういうのは置いておく。

*7:なんかうまいやり方を探す時間があまりなかったので今回はこれで