如何在Vagrant VM上更改Puppet文件的默认位置?

时间:2014-07-11 08:39:22

标签: wordpress workflow vagrant puppet

我正在放弃MAMP,支持我的Wordpress开发工作流程中的Vagrant Ubuntu VM + Puppet。最后,我想在登台和生产机器上重复使用puppet配置。

Vagrant默认在/tmp/vagrant-puppet-3下运行Puppet文件(modules,manifests,hiera.yaml)。但是,我的理解是,在真实服务器上,可以将这些文件放在默认的Puppet目录/etc/puppet/下。

我知道Puppet在/tmp/vagrant-puppet-3下可以正常工作,但是我希望我的开发机器尽可能接近未来的升级/生产机器。

所以...我的问题是:你怎么能让Vagrant从/etc/puppet/创建和运行puppet文件?

3 个答案:

答案 0 :(得分:0)

Vagrant Puppet供应商有三个感兴趣的变量。您可以指定manifest_file来标识起始清单,manifests_path来标识清单目录,modules_path来提供模块路径的散列。对于您的示例,vagrantfile的相关部分可能如下所示:

local.vm.provision :puppet do |puppet|
   puppet.manifests_path = "/etc/puppet/manifests"
   puppet.module_path = "/etc/puppet/modules"
   puppet.manifest_file = "/etc/puppet/manifests/site.pp"
   puppet.options = [
      '--verbose',
      '--debug',
   ]
end

此处有更多详情:https://docs.vagrantup.com/v2/provisioning/puppet_apply.html

答案 1 :(得分:0)

此处的一个选项是使用librarian-puppet之类的工具将模块自动安装到Vagrant VM上的/etc/puppet/modules/。 Librarian-puppet能够从GitHub或PuppetForge下载任何Puppet模块的特定版本。

以下是一个很好的例子,说明如何在实践中实现这一点(包括示例VagrantFile等):https://github.com/purple52/librarian-puppet-vagrant

在上面的例子中,密切注意Vagrant的main.sh shell provisioning script。它实际上是在VM上安装librarian-puppet,然后调用librarian-puppet install(以安装已配置的模块)。

librarian-puppet初始化VM后,您只需使用Vagrant中的普通Puppet配置来实际加载/运行模块,例如

# This assumes you have a "puppet/manifests/main.pp" script 
# under your vagrant folder
config.vm.provision :puppet do |puppet|
  puppet.manifests_path = "puppet/manifests"
  puppet.manifest_file  = "main.pp"
end

答案 2 :(得分:-1)

有一个选项"puppet.temp_dir = '/tmp/vagrant/puppet/'"可以部分改变已安装目录的路径,而不是我想要的控制。 例如,现在在vm中,mount看起来像:

  

tmp_vagrant_puppet_manifests-66467d94e7d940b8b509d60b1e0cbc1b on   / tmp / vagrant / puppet / manifests-66467d94e7d940b8b509d60b1e0cbc1b type   vboxsf(gid = 500,rw)

我想删除的是md5sum看起来路径的一部分。