未检测到stdlib模块

时间:2019-11-06 20:21:13

标签: vagrant puppet

我有一个模块,据说需要使用puppetlabs-stdlib

[vagrant@learn puppet]$ sudo /opt/puppetlabs/bin/puppet module list --tree --modulepath=/vagrant/puppet -v
Warning: Missing dependency 'puppetlabs-stdlib':
  'elk' (v0.1.0) requires 'puppetlabs-stdlib' (>= 1.0.0)
/vagrant/puppet
└─┬ elk (v0.1.0)
  └── UNMET DEPENDENCY puppetlabs-stdlib (>= 1.0.0)

我按如下所示安装了模块:

[vagrant@learn puppet]$ sudo /opt/puppetlabs/bin/puppet module install puppetlabs-stdlib
Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...
Notice: Downloading from https://forgeapi.puppet.com ...
Notice: Installing -- do not interrupt ...
/etc/puppetlabs/code/environments/production/modules
└── puppetlabs-stdlib (v6.1.0)

但是,缺少的依存关系仍然无法解决。如何让Puppet看到我安装的库?

2 个答案:

答案 0 :(得分:1)

命令

sudo /opt/puppetlabs/bin/puppet module list --tree --modulepath=/vagrant/puppet -v

报告elk模块对puppetlabs-stdlib的依赖性未得到满足,而您显示该模块将安装在/etc/puppetlabs/code/environments/production/modules中。这些事实是一致的。

--modulepath的{​​{1}}参数没有达到您的期望。如果您考虑了Puppet's definition of the term,这可能会更清楚:

  

master服务和puppet apply命令将加载大多数   来自一个或多个目录中的模块的内容。的清单   Puppet在其中查找模块的目录称为 modulepath 。   modulepath由当前节点的环境设置。

     

modulepath是目录的有序列表,其中   目录优先于以后的目录。使用系统路径   分隔符,用于分隔模块路径中的目录   清单。在* nix系统上,使用冒号(:);在Windows上使用分号   (;)。

puppet module list命令中的--modulepath选项表示完整的模块路径,因此,在您的命令中,它告诉Puppet仅考虑puppet module list中的模块。关于该模块路径,确实没有满足stdlib依赖项。

此替代方法应显示满足的依赖性:

/vagrant/puppet

在Puppet运行时,两种结果的重要性取决于Puppet用于目录构建的模块路径。如果您完全不使用sudo /opt/puppetlabs/bin/puppet module list --tree \ --modulepath=/etc/puppetlabs/code/environments/production/modules:/vagrant/puppet -v 选项,那么您将获得与Puppet的当前配置和默认环境相关的结果,这些结果可能与您的实际使用情况更为相关。

答案 1 :(得分:1)

您没有引用相同的模块路径。

首先,您是按照--modulepath语句列出/vagrant/puppet中的模块。

在安装时,您没有指定模块路径,因此按照安装时的std进行: Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules

因此,您必须将stdlib安装指向同一路径:puppet module --modulepath=/vagrant/puppet install puppetlabs-stdlib,或更新客户端的模块路径以运行默认的/etc/puppetlabs/code/environments/production/modules