Vagrant 在多个Puppet环境之间共享模块

Vagrant 在多个Puppet环境之间共享模块,vagrant,puppet,Vagrant,Puppet,让Puppet加载一组将在多个环境之间共享的模块,这简直是一场噩梦 puppet/environments/development/modules中的模块加载良好,但找不到puppet/modules中的任何依赖项 我的项目的文件夹结构是: 而该项目正在进行中: 我通常管理模块依赖项的方法是使用shell脚本直接安装模块,这样它可以下载必要的依赖项并将其推送到正确的位置 我的流浪汉档案里有 node_config.vm.provision "shell", path: "puppet/sc

让Puppet加载一组将在多个环境之间共享的模块,这简直是一场噩梦

puppet/environments/development/modules中的模块加载良好,但找不到puppet/modules中的任何依赖项

我的项目的文件夹结构是:

而该项目正在进行中:

我通常管理模块依赖项的方法是使用shell脚本直接安装模块,这样它可以下载必要的依赖项并将其推送到正确的位置

我的流浪汉档案里有

  node_config.vm.provision "shell", path: "puppet/script/install-puppet-modules-app.sh"
  node_config.vm.provision :puppet do |puppet|
    puppet.environment = "production"
    puppet.environment_path = "puppet/environments"
    puppet.manifests_path = "puppet/environments/production/manifests"
    puppet.manifest_file = "base-app.pp"
    #puppet.options = "--verbose --trace"
  end
脚本shell类似于

#!/bin/bash

puppet module install puppet-nginx --version 0.4.0
在这里,您将拥有apache、mysql模块等

environment.conf
文件将找到已安装模块的默认位置

# environment configuration used by Puppet4
modulepath          = /etc/puppetlabs/code/environments/production/modules:$basemodulepath

多亏了@michael mulqueen,我才使整个事情正常进行

他修复它的方法是在vagrant文件中设置模块路径:

puppet.module_path=[“puppet/modules”、“puppet/environments/development/modules”]


您可以在问题中引用的repo中看到这一点。

刚刚在github上推出了一个快速示例,Vagrant中的Puppet类方法是否又起作用了?它们坏了一会儿。@MattSchuchard嗨Matt,哪个版本?我主要在puppet 3.x中使用类,并进行了快速测试,因为我想用puppet 4测试vagrant配置,而且似乎工作得很好。破坏它的是vagrant更新,而不是我记得的puppet。Hashicorp不做qa/build/release,所以这种事情会发生。