Puppet

Puppetserver 無法找到寶石

  • July 16, 2020

我正在嘗試使用一個添加 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

…解決了這個問題。

引用自:https://serverfault.com/questions/1025005