У нас есть многомашинный Vagrantfile в нашем проекте repo, который устанавливает стек 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
Это, конечно, продезинфицировать и упрощенных выдержки.
Какое средство обеспечения безопасности вы используете? – Railslide
@Railslide Я использую как оболочку, так и файл, если это то, о чем вы просите. –