我在标准的客户端 – 服务器模式下使用Puppet 3.7,使用环境,并使用Hiera来获取数据。 我使用Vagrant来直接从我的Puppet仓库testingPuppet清单。
我最近开始使用Hiera,并更改了我的Vagrantfile(和Vagrant目录)以使用它。 现在似乎和Hiera一起工作了,但另外一个问题出现了:Vagrant认为我的虚拟机在实验环境中生产。 (这之前工作正常)
Puppet存储库看起来像
~/code/puppet └── environments ├── experimental │ ├── manifests │ │ └── site.pp │ ├── modules │ └── Puppetfile ├── production │ ├── manifests │ │ └── site.pp │ ├── modules │ └── Puppetfile └── testing ├── manifests │ └── site.pp ├── modules └── Puppetfile
我的Vagrant设置存储在另一个目录中。 我在这个目录下创build了一个名为puppet的〜/ code / puppet的符号链接(ln -s)。 Vagrantfile的外观
config.vm.define "standalone", primary: true do |config| config.vm.box = "debian_wheezy+vbox_jessie+puppet_3.7" config.vm.hostname = "standalone.puppet.vagrant" config.vm.network "private_network", ip:"192.168.10.21" config.vm.synced_folder "puppet/hieradata", "/etc/puppet/hieradata" config.vm.provision :puppet, :options => ["--yamldir /hieradata"] do |puppet| puppet.manifests_path = "puppet/environments/experimental/manifests" puppet.manifest_file = "site.pp" puppet.module_path = [ "puppet/environments/experimental/modules", "puppet/environments/production/modules", "puppet/modules" ] puppet.hiera_config_path = "puppet/hiera.yaml" end end
我想象一下使用Hiera之后我最近的变化对于Vagrant来说是不正确的,也许黑客(链接木偶代码目录)是原因,但是我看不出应该如何组织。
有没有人知道这个问题,以及如何解决这个问题?
谢谢
更新
我变了
puppet.manifests_path = "puppet/environments/#{env}/manifests"
并删除puppet.working_directory使我的虚拟机启动/供应。
同
puppet.module_path = [ "puppet/modules", "puppet/environments/production/modules" ]
它似乎让我的虚拟机访问生产和当前的环境模块,我需要。
你可以为你的木偶运行指定所有选项。 你可以使用这样的东西:
srv.vm.provision :puppet do |puppet| puppet.working_directory = "/vagrant/puppet" puppet.module_path = "puppet/modules" puppet.manifests_path = "puppet/manifests" puppet.manifest_file = "site.pp" puppet.hiera_config_path = "puppet/hiera.yaml" puppet.options = "--debug --verbose --environment #{env}" end
这意味着你的模块在“puppet / modules /#{env}”和你在“puppet / manifests /#env”中的清单。 现在,“env”是一个可以在Vagrantfile中设置的variables:
env = "production"
或者:你可以把所有的variables,如“env”,放在一个yaml文件中并加载。
作为参考,你可以在这里find所有的木偶提供选项: https : //www.vagrantup.com/docs/provisioning/puppet_apply.html
我来到这里寻找解决类似的问题。 我能够通过使用数组连接多个模块path。 这样modulepath就会变成
modulepath = ../puppet/environments/dev/modules:../puppet/modules
你的path会有所不同。
我的stream浪环境将永远是dev所以我很好的在这里编写这个模块path。
我的Vagrantfile看起来像这样:
Vagrant.configure(2) do |config| config.vm.box = "centos7" config.vm.synced_folder("../../puppet/trunk/server/hieradata", "/etc/puppet/hieradata") config.vm.provision "puppet" do |puppet| puppet.environment = "dev" puppet.environment_path = "../../puppet/trunk/server/environments" puppet.hiera_config_path = "../../puppet/trunk/server/hiera.yaml" puppet.module_path = [ "../../puppet/trunk/server/environments/dev/modules", "../../puppet/trunk/server/modules" ] end end