我第一次设置 Puppet 主服务器。它配置为使用环境:
/etc/puppet/puppet.conf:
[main]
environmentpath = /var/opt/puppet/environments
basemodulepath = /var/opt/puppet/modules
每当我安装一个模块时puppet module install foo
,它都会安装到我的“生产”环境的模块目录中。我希望发生的是,/var/opt/puppet/modules
除非我使用开关指定环境,否则模块将被安装到--environment
。
我怎么做?
答案1
从当前的 Puppet 版本 (v6.0) 开始:
默认情况下,此命令将模块安装到第一个目录在 Puppet 模块路径中,默认为 $codedir/environments/production/modules。
这意味着您需要设置模块路径,以便“/var/opt/puppet/modules”成为模块路径中的第一个目录。由于模块路径设置只能在 environment.conf 中设置,因此您需要为所有环境编辑 environment.conf。
nano -w /etc/puppetlabs/code/environments/环境名称/environment.conf
modulepath = '/var/opt/puppet/modules:/etc/puppetlabs/code/environments/production/modules:/etc/puppetlabs/code/modules:/opt/puppetlabs/puppet/modules'
顺便说一句:对于 Puppet v6.0,“/etc/puppetlabs/code/modules”可能是全局模块目录的更好选择。
答案2
puppet module --modulepath=/var/opt/puppet/modules install foo
答案3
您正在使用环境配置部分。因此,您可以在 puppet.conf 的每个环境部分中设置 modulepath。例如...
[主要的]
--
environmentpath = /var/opt/puppet/environments
基本模块路径=/var/opt/puppet/模块
--
[生产]
--
--
[开发]
--
--
如果在给定环境中不存在该设置,Puppet 将恢复为 modulepath 设置 (/var/opt/puppet/modules) 的全局值。或者您可以为每个目录部分指定单独的模块路径。希望您得到了答案...
答案4
environment.conf
如果您在环境目录中创建一个文件,则每个环境都可以有自己的“模块路径” 。
有关环境的更多信息可以在 Puppet 实验室网站上找到: