У меня довольно сложная архитектура производственного сервера, включающая несколько типов и уровней серверов, в том числе: Web, Varnish, HAProxy, ELK, Database, Sensu и т. д. Рабочая архитектура снабжена мастерами марионеток, а код кукол для мастеров обеспечивается Git через множество подмодулей.
Я хочу подключить эти репозитории Git к виртуальным машинам локально для дальнейшей разработки частей кукольной архитектуры. Однако для каждой виртуальной машины Vagrant требуется полная автономная копия всех репозиториев Git, чтобы поддерживать только одну виртуальную машину. Это похоже на очень неэффективное использование дискового пространства для локальной разработки, которая потенциально может состоять из дюжины различных типов серверов.
Есть ли способ указать все VagrantFiles Vagrant VM в общую локальную папку за пределами каталога vagrant, чтобы каждый экземпляр Vagrant все еще мог читать папку и предоставлять сервер?
Отредактировано --
Основываясь на комментарии @Treminio, вот часть моего VagrantFile, показывающая попытку объявить абсолютный путь от корня хост-компьютера:
config.vm.provision "puppet" do |puppet|
puppet.manifest_file = "init.pp"
puppet.manifests_path = "/Users/jdugger/vm/puppet/manifests"
puppet.module_path = "/Users/jdugger/vm/puppet/modules"
puppet.hiera_config_path = "/Users/jdugger/vm/puppet/hieradata"
end
... и ответ об ошибке от Vagrant:
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => /Users/jdugger/vm/pupt/vagrant
default: /vagrant_data/scripts => /Users/jdugger/scripts
default: /tmp/vagrant-puppet/modules-169f1d27ef31a534405e2e9fcde2eedf => /Users/jdugger/vm/puppet/modules
default: /tmp/vagrant-puppet/manifests-be5a69bfb646cf9329b8921f221ffab8 => /Users/jdugger/vm/puppet/manifests
==> default: Running provisioner: puppet...
The `puppet` binary appears not to be in the PATH of the guest. This
could be because the PATH is not properly setup or perhaps Puppet is not
installed on this guest. Puppet provisioning can not continue without
Puppet properly installed.
Этот ответ может быть не из-за пути марионетки - не уверен - похоже, что марионетка не находится в гостевом ящике (разве она не должна работать из Vagrant?). Никакая версия не появляется, когда с:
[vagrant@localhost ~]$ puppet --version
Ответ:
-bash: puppet: command not found
Обновлять ---
@Треминио прав. Мне удалось предоставить кукольные манифесты и модули, внешние по отношению к каталогу vagrant/. Проблема с путем, по-видимому, связана с тем, что Puppet не установлен на гостевой виртуальной машине. Чтобы решить эту проблему, я добавил сценарий оболочки, найденный здесь:
http://garylarizza.com/blog/2013/02/01/repeatable-puppet-development-with-vagrant/
Это было добавлено непосредственно перед объявлением подготовки марионетки. Просто в качестве примечания, похоже, не так много продвинутых примеров, которые демонстрируют возможность работы с внешними файлами или что вам нужно установить марионетку вне средства подготовки кукол.