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インストールをパペット化するにはどうすればよいですか? exec
リソースを使用したくない。 puppet-agentがgemをインストールするためのリソースはありますか?
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,
}
プロバイダー を見ると、Rubyで何かを行う代わりに、実際にgem
にシェルアウトします(これはおそらくまったく不可能です)。
これは構成できません。 puppet agent
(またはapply
)を、他のコピーよりもPuppetのRuby/gemを優先するPATH
で実行するようにしてみてください。それはそれをするかもしれません(しかし他のものを壊すかもしれません)。もちろん、同じPuppetトランザクションに「システム」gemをインストールするオプションは失われます。