web-dev-qa-db-ja.com

人形のルビーに固有のgemインストールを人形化する方法は?

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をインストールするためのリソースはありますか?

1
Mike Marseglia

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,
}
1
Mike Marseglia

プロバイダー を見ると、Rubyで何かを行う代わりに、実際にgemにシェルアウトします(これはおそらくまったく不可能です)。

これは構成できません。 puppet agent(またはapply)を、他のコピーよりもPuppetのRuby/gemを優先するPATHで実行するようにしてみてください。それはそれをするかもしれません(しかし他のものを壊すかもしれません)。もちろん、同じPuppetトランザクションに「システム」gemをインストールするオプションは失われます。

0
Felix Frank