如何将 gem install 特定于 puppet 的 ruby​​ 进行 puppet 化?

如何将 gem install 特定于 puppet 的 ruby​​ 进行 puppet 化?

Puppet Azure 模块需要安装特定的 gem。说明https://github.com/puppetlabs/puppetlabs-azure显示以下示例:

/opt/puppetlabs/puppet/bin/gem install azure azure_mgmt_compute azure_mgmt_storage azure_mgmt_resources azure_mgmt_network  hocon retries --no-ri --no-rdoc

特定的 gem 二进制文件/opt/puppetlabs/puppet/bin/gem用于确保 gem 安装到 puppet 安装目录并使用 puppet 捆绑的 ruby​​ 版本。

Puppet 的包资源有一个 gem 提供程序,但它将使用系统 ruby​​ 进行安装。

我如何将特定于 puppet 的 gem 安装 puppet 化?我不喜欢使用资源exec。是否有 puppet-agent 安装 gem 的资源?

答案1

我找到了答案https://docs.puppetlabs.com/references/4.0.0/type.html#package-provider-puppet_gem

Puppet v4 的新功能是为包资源提供 puppet_gem 提供程序。

package { 'azure' :
  provider => 'puppet_gem',
  ensure   => installed,
}

答案2

看着提供者它确实需要花费一些钱,gem而不是用 Ruby 来做事(这可能根本不可能)。

这是不可配置的。您可以尝试让 puppet agent(或apply)使用PATH优先选择 Puppet 的 Ruby/gem 而不是其他副本的版本。这可能会成功(但可能会破坏其他东西)。当然,您失去了在同一 Puppet 事务中安装“系统”gem 的选项。

相关内容