Wir haben eine Multi-Maschine-Vagrantfile in unserem Projekt Repo, die einen LAMP-Stack erstellt und einige gemeinsame MySQL-Datenbanken erstellt. Nun, jeder von uns hat auch eine persönliche Datenbank, die Vagrant als Teil der anfänglichen "vagabund up" Provisioning erstellen soll. Ich habe meinen persönlichen Provisioning-Code in ~/.vagrant.d/Vagrantfile platziert, aber gemäß der Ladereihenfolge von Vagrantfiles läuft dieser Code vor dem Bereitstellungscode der allgemeinen Vagrant-Datei. Mein persönlicher Bereitstellungscode kann keine MySQL-Datenbank hinzufügen, da MySQL einfach noch nicht installiert wurde, da dies in der gemeinsamen Vagrant-Datei liegt.Wie stelle ich eine persönliche Datenbank während des ersten Aufwands bereit?
Wie kann ich es haben, dass die gemeinsame Vagrantfile MySQL installiert und die persönliche Vagrantfile eine Datenbank hinzufügt, sobald MySQL vorhanden ist?
Update Hier ist was ich getan habe (ich weiß fast nichts über Ruby, so nackt mit mir).
Vagrantfile (mit anderen Entwicklern gemeinsam):
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 (meine persönliche Provisioning-Datei, Git ignoriert):
$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
Diese sind natürlich hygienisiert und vereinfachte Ausschnitte.
Welchen Provisioner verwenden Sie? – Railslide
@Railslide Ich verwende sowohl Shell als auch Datei, wenn Sie das fragen. –