我正在放弃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文件?
答案 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看起来路径的一部分。