2016-08-04 1 views
3

私たちはLAMPスタックをセットアップし、いくつかの一般的なMySQLデータベースを作成する、プロジェクトレポのマルチマシンバリアログファイルを持っています。現在、私たちのそれぞれには、初期の「迷惑行為を防ぐ」プロビジョニングの一部として、Vagrantに作成させたい個人的なデータベースもあります。 〜/ .vagrant.d/Vagrantfileに個人用のプロビジョニングコードを配置しましたが、Vagrantfilesの読み込み順序に従って、そのコードは共通のVagrantfileのプロビジョニングコードの前に実行されます。私の個人的なプロビジョニングコードは、MySQLがまだインストールされていないので、MySQLデータベースを追加することはできません。これは、一般的なVagrantfileの責任であるからです。初めての迷惑メール対策の際に個人データベースをプロビジョニングするにはどうすればよいですか?

一般的なVagrantfileがMySQLをインストールし、MySQLがインストールされた後、個人Vagrantfileがデータベースを追加するようにするにはどうすればよいですか?ここで

更新 は、私は(私は私とそう裸、次のRubyについて何を知っている)やってしまったものです。

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 

これらはもちろん消毒と簡略化の抜粋です。

+0

あなたはどのプロビジョナーを使用していますか? – Railslide

+0

@Railslideシェルとファイルの両方を使用しています。 –

答えて

2

これは、複数のプロビジョニングスクリプトを指定し、「データベースを作成する」Vagrantファイルスクリプトで何か処理が必要かどうかを検出するのが最も簡単な解決策でした。

また、パーソナライズ段階をパラメータ化できますか? ENV ['DB_USERNAME']などでベースデータベースを作成していますか?これにより、お互いのセットアップを試すことで利益を得ることができます。

これを超えると、実行中のバグのアクションをより細かく制御し、アクションイベントの前後にフックインするプラグインを作成できます。

+0

私はVagrantがこれを制御するための組み込み機能を持っていることを期待していましたが、そうでないので、あなたの提案は現時点で最も実現可能なようです。有難うございます。 –

関連する問題