是否可以从位于vagrant文​​件夹之外的木偶模块中提供流浪盒?

时间:2016-02-02 01:35:10

标签: vagrant puppet directory-structure

我有一个非常复杂的生产服务器架构,涉及多种类型和层级的服务器,包括:Web,Varnish,HAProxy,ELK,Database,Sensu等。生产架构配置有木偶大师和木偶代码通过许多子模块为主人提供Git。

我想将这些Git存储库本地连接到VM,以进一步开发木偶架构的各个部分。但是,每个Vagrant VM都需要一个完整的自包含所有Git存储库的副本,以便只支持一个VM。对于可能存在十几种不同类型服务器的本地开发而言,这似乎是非常低效的驱动器空间使用。

有没有办法将所有Vagrant VM的VagrantFiles指向vagrant目录之外的公共本地文件夹,这样每个Vagrant实例仍然可以读取文件夹并配置服务器?

已编辑 -

基于@Treminio的评论,这是我的VagrantFile的一部分,显示了尝试从主机root声明一个绝对路径:

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

更新---

@Treminio是对的。我已经能够在vagrant /目录外部提供puppet清单和模块。 Path问题似乎是因为guest虚拟机上未安装Puppet。为了解决这个问题,我在这里添加了一个shell脚本:

http://garylarizza.com/blog/2013/02/01/repeatable-puppet-development-with-vagrant/

这是在木偶供应声明之前添加的。就像一个注释一样,似乎没有很多高级示例可以演示外部文件功能,或者您需要在puppet供应商之外安装puppet。

1 个答案:

答案 0 :(得分:2)

  

但是,每个Vagrant虚拟机都需要一个完整的自包含所有Git存储库的副本,以便只支持一个虚拟机。

这是不正确的。

您想要更改的是puppet.module_path值。

它可以是主机磁盘上的任何位置,Vagrant会自动将其安装在您的VM中。