Vagrantで複数仮想マシンを起動できるようにする

No Photo

iPhone 6 Plus を予約して発売2日後に手に入れたtanakaです。それまでケースは付けないで使う派でしたが、落としてガラスを割りそうだったので、早々にケースを購入しました。

今日は、Vagrantで複数の仮想マシンを起動してmysqlコンソールログインできるまでを試してみましたので紹介します。

やってみたこと

web と db の 2台の Linuxサーバーを起動して、webからdb上のMySQLサーバーにMySQLコンソールログインできるようにする

動作環境

Vagrantfile

適当なフォルダを作成(multivmtestなど)し、以下のテキストをVagrantfileというファイル名で保存します。 コマンドプロンプトで、作成したフォルダに移動(またはエクスプローラのアドレスバーでcmd[Enter])し、vagrant upします。

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "opscode-ubuntu-14.04"
  config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_ubuntu-14.04_chef-provisionerless.box"

  config.vm.define :web do |web|
    web.vm.hostname = "web"
    web.vm.network :private_network, ip: "192.168.33.10"
    provision_script = <<EOL
apt-get update -y
apt-get install -y mysql-client
EOL
    web.vm.provision :shell, :inline => provision_script
  end

  config.vm.define :db do |db|
    db.vm.hostname = "db"
    db.vm.network :private_network, ip: "192.168.33.11"
    provision_script = <<EOL
MYSQL_ROOT_PASSWORD='vagrant'
echo mysql-server mysql-server/root_password select "${MYSQL_ROOT_PASSWORD}" | debconf-set-selections
echo mysql-server mysql-server/root_password_again select "${MYSQL_ROOT_PASSWORD}" | debconf-set-selections

apt-get install -y mysql-server
mysql -u root -p"${MYSQL_ROOT_PASSWORD}" -e ";CREATE DATABASE IF NOT EXISTS cakeapp;GRANT ALL ON cakeapp.* TO cakeappuser@localhost IDENTIFIED BY 'cake_pass';GRANT ALL ON cakeapp.* TO cakeappuser@'%' IDENTIFIED BY 'cake_pass';FLUSH PRIVILEGES;"
EOL
    db.vm.provision :shell, :inline => provision_script
  end
end

(10分後くらいに)仮想マシンの起動とプロビジョニングが完了したら、MySQLサーバの設定を1点修正します。 vagrant ssh db でデータベースサーバにsshログインし、 sudo vi /etc/mysql/my.cnf して、"bind-address = 127.0.0.1" の行をコメントアウトします。保存して、sudo service mysql restart で再起動してください。(本当はここもプロビジョニングに含めたかったですが…)

以上で、サーバの立ち上げは完了です。 vagrant ssh web でSSHログインし mysql -h 192.168.33.11 -ucakeappuser -p とコマンドを実行するとMySQLサーバにログインできると思います。

まとめ:複数VM環境を作るときのTips

  • config.vm.define のブロックを並べて、複数の仮想マシンを定義できます
  • 仮想マシンごとに、vm.box , vm.box_url を設定して別々のboxから生成することもできますし、config.vm.box, config.vm.box_url を設定すればすべての仮想マシンで同じboxを利用できます
photo
CakePHPで学ぶ継続的インテグレーション
渡辺 一宏 吉羽 龍太郎 岸田 健一郎 穴澤 康裕 丸山 弘詩
インプレス 2014-09-19

by G-Tools , 2014/10/06

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ