LAMP スタックをセットアップし、いくつかの一般的な MySQL データベースを作成するプロジェクト リポジトリにマルチマシン Vagrantfile があります。これで、Vagrant に最初の「vagrant up」プロビジョニングの一部として作成してもらいたい個人用データベースも作成されました。個人用のプロビジョニング コードを ~/.vagrant.d/Vagrantfile に配置しましたが、Vagrantfile の読み込み順序に従って、そのコードは共通の Vagrantfile のプロビジョニング コードの前に実行されます。私の個人的なプロビジョニング コードは、MySQL がまだインストールされていないため、MySQL データベースを追加できません。これは、一般的な Vagrantfile の責任です。
共通の Vagrantfile が MySQL をインストールし、MySQL が配置されたら個人の Vagrantfile がデータベースを追加するようにするにはどうすればよいですか?
更新 これが私がやったことです。
Vagrantfile (他の開発者と共有):
Vagrant.configure("2") do |config|
config.vm.define "dev14" do |dev14|
dev14.vm.box = "ubuntu/trusty64"
dev14.vm.provision "file", source: "common.sql", destination: "common.sql"
dev14.vm.provision "shell", inline: <<-SHELL
sudo apt-get update
sudo apt-get install -y apache2
sudo apt-get install -y php5
sudo apt-get install -y mysql-server
sudo apt-get install -y mysql-client
mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS common"
mysql -uroot -proot common < common.sql
SHELL
# User specific provisioning
$dev14 = dev14
load './provision.dev14.rb' if File.exists?('./provision.dev14.rb')
end
end
provision.dev14.rb (私の個人的なプロビジョニング ファイル、Git は無視):
$dev14.vm.provision "file", source: "personal.sql", destination: "personal.sql"
$dev14.vm.provision "shell", inline: <<-SHELL
mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS personal"
mysql -uroot -proot personal < personal.sql
SHELL
もちろん、これらはサニタイズされ、簡略化された抜粋です。