Error: Could not initialize global default settings: Cannot set modulepath settings in puppet.conf

Error: Could not initialize global default settings: Cannot set modulepath settings in puppet.conf

我在设置 Puppet Master 的模块路径时遇到问题。

# puppet -V
4.10.5

这里是默认的模块路径

# puppet config print modulepath
/etc/puppetlabs/code/environments/production/modules:/etc/puppetlabs/code/modules:/opt/puppetlabs/puppet/modules

我要添加两个目录...

...到我的模块路径。所以我这样做:

# puppet config set modulepath "/etc/puppetlabs/code/environments/production/modules/tools:/etc/puppetlabs/code/environments/production/modules/core:`puppet config print modulepath`"

但是我得到这个错误:

# puppet config print modulepath
Error: Could not initialize global default settings: Cannot set modulepath settings in puppet.conf

我的 puppet.conf 中的模块路径看起来没问题:

# grep modulepath /etc/puppetlabs/puppet/puppet.conf
modulepath = /etc/puppetlabs/code/environments/production/modules/tools:/etc/puppetlabs/code/environments/production/modules/core:/etc/puppetlabs/code/environments/production/modules:/etc/puppetlabs/code/modules:/opt/puppetlabs/puppet/modules

我做错了什么或者这是一个错误?

这些额外的模块路径特定于您的生产目录环境,因此可以将它们附加到您的生产目录环境的 environment.conf 中,如下所示:

# /etc/puppetlabs/code/environments/production/environment.conf  
/etc/puppetlabs/code/environments/production/modules/tools:/etc/puppetlabs/code/environments/production/modules/core:$basemodulepath

您的 $basemodulepath 在您的 puppet.conf 中指定,通常在 /etc/puppetlabs/puppet/puppet.conf。它是 INI 格式中 basemodulepath 的值。 modulepath 根据文档,配置文件中的目录环境未使用。

有关 environment.conf 的更多信息:https://docs.puppet.com/puppet/4.10/config_file_environment.html 有关在目录环境中附加模块路径的更多信息:https://docs.puppet.com/puppet/4.10/config_file_environment.html#modulepath

假设您想列出已安装在模块路径中的模块,并希望写入:

puppet module list

而不是:

puppet module list --modulepath=C:\tmp\modules

然后你可以通过像这样设置基本模块路径来设置模块路径:

puppet config set basemodulepath "C:\tmp\modules"

这会在 puppetlabs 中创建一个文件 puppet.conf;在 windows 下它可能在这里:

C:\Users\< username >\.puppetlabs\etc\puppet

之后您将能够像这样列出已安装的模块:

puppet module list

如果你使用 modulepath 而不是 basemodulepath 那么 puppet 每次都会尝试设置 modulepath 导致你的错误