3

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

もちろん、これらはサニタイズされ、簡略化された抜粋です。

4

1 に答える 1