我们在项目存储库中有一个多计算机Vagrantfile,它建立了一个LAMP堆栈并创建了一些常见的MySQL数据库。现在,我们每个人都有一个个人数据库,我们希望Vagrant在最初的“无用功”配置中创建该数据库。我已将我的个人配置代码放置在〜/ .vagrant.d / Vagrantfile中,但是根据Vagrantfiles的加载顺序,该代码在通用Vagrantfile的配置代码之前运行。我的个人配置代码无法添加任何MySQL数据库,因为尚未安装MySQL,因为这是常见的Vagrantfile的职责。
我如何拥有它,以使通用的Vagrantfile安装MySQL,而个人的Vagrantfile在MySQL到位后添加数据库?
更新这是我最终要做的事情。
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
这些当然是经过净化和简化的摘录。
我们发现最简单的解决方案是指定多个配置脚本,并让您的“创建数据库” Vagrant文件脚本检测其是否需要执行任何操作。
另外,您是否可以参数化个性化阶段,例如在ENV ['DB_USERNAME']等数据库上创建基础数据库?这将使您从尝试彼此的设置中受益。
除此之外,您可以编写一个插件来更好地控制正在运行的Vagrant动作,并挂接到动作之前/之后的事件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句