Puppet
Puppetserver 無法找到寶石
我正在嘗試使用一個添加 AWS Secrets Manager hiera 後端的模組:
https://forge.puppet.com/accenture/hiera_aws_sm
這個模組需要我通過 puppetserver 安裝的aws-sdk-secretsmanager gem:
$ sudo puppetserver gem install aws-sdk-secretsmanager
我還可以在 puppetserver 中看到這個 gem:
$ sudo puppetserver gem list *** LOCAL GEMS *** <trimmed> aws-sdk-schemas (1.6.0) aws-sdk-secretsmanager (1.40.0, 1.39.0) aws-sdk-securityhub (1.29.0) <trimmed>
模組本身包含以下行來導入 gem:
require 'aws-sdk-secretsmanager'
當我嘗試執行代理測試時…
$ sudo puppet agent --test
…當此模組嘗試執行時,我收到以下錯誤(在註釋掉模組添加的一些錯誤處理混淆之後):
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Internal Server Error: org.jruby.exceptions.LoadError: (LoadError) no such file to load -- aws-sdk-secretsmanager
我無法弄清楚為什麼 puppetserver jruby 實例無法載入 gem,因為它出現在列表中並且在調試它時遇到了一些障礙。
原來這個問題是因為
aws-sdk-secretsmanager
以某種方式安裝了多個版本:$ sudo puppetserver gem list *** LOCAL GEMS *** <trimmed> aws-sdk-secretsmanager (1.40.0, 1.39.0) <trimmed>
跑步…
$ sudo puppetserver gem uninstall aws-sdk-secretsmanager
…接受提示解除安裝所有已安裝的版本,然後執行…
$ sudo puppetserver gem install aws-sdk-secretsmanager
…解決了這個問題。