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 的选项。