VagrantのプロビジョニングでMySQLサーバを構築する

Vagrantを使ってMySQLサーバを構築する際に、Vagrantのプロビジョニング機能を使ってみました。 その時の手順のメモを残しておきます。


前提

今回作りたいMySQLサーバは、開発目的で使うため、

  • ユーザはrootを使う
  • パスワードはなし

という条件で構築し、ホストから、

% mysql -h 192.168.33.10 -u root

のようにアクセスできればよい。

環境

ホスト機は、Ubuntu16.04。

  • Vagrant 1.8.5
  • MySQL5.6

を使う。

Vagrantfile作成

事前にBoxが追加されているとして、

% vagrant init ubuntu/trusty64

でVagrantfileを作る。

Vagrantfile編集

ネットワーク

config.vm.network "private_network", ip: "192.168.33.10"

メモリ

config.vm.provider "virtualbox" do |vb|
  vb.memory = "1024"
end

プロビジョニング

プロビジョニング用のスクリプトを準備する。 shellを使ってプロビジョニングする。 Vagrantfileのあるディレクトリにプロビジョニング用スクリプト格納ディレクトリを作り、mysql.shというスクリプトを配置する。

% tree .
.
├── Vagrantfile
└── provision
   └── mysql.sh

mysql.shの内容は次のとおり。

#!/bin/bash

export DEBIAN_FRONTEND="noninteractive"

apt-get update

echo mysql-server-5.6 mysql-server/root_password password '' | debconf-set-selections
echo mysql-server-5.6 mysql-server/root_password_again password '' | debconf-set-selections
apt-get install -y mysql-server-5.6

mysql -u root -e "grant all privileges on *.* to 'root'@'%';"

sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
sudo service mysql restart

Vagrantfileのプロビジョニング設定

作成したmysql.shをプロビジョニング時に実行するよう、Vagrantfileに追記する。

config.vm.provision "shell", path: "provision/mysql.sh"

実行

vagrant upするか、vagrant provisionするとプロビジョニングが行われる。


以上の手順で無事にVagrantを使ってMySQLサーバが構築できました。