默认将 Puppet 模块安装到全局模块目录?

默认将 Puppet 模块安装到全局模块目录?

我第一次设置 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 实验室网站上找到:

https://puppet.com/docs/puppet/latest/env_environments.html

相关内容