【问题标题】:EC2: chef recipe: LoadError: cannot load such file -- aws-sdk-secretsmanagerEC2:厨师食谱:LoadError:无法加载此类文件--aws-sdk-secretsmanager
【发布时间】:2021-04-20 00:02:55
【问题描述】:

我已经在 ec2 实例中使用 gem install 安装了 aws-sdk-secretsmanager gem,我可以看到 gem 可用,在我的食谱食谱中我写了 require 'aws-sdk-secretsmanager' 但它因编译错误而失败。

版本:

chef_version=16.2.73
platform=redhat7.9

命令:

gem install aws-sdk-secretsmanager

食谱:

require aws-sdk-secretsmanager

错误:

ERROR: Exception handlers complete
Chef Infra Client failed. 2 resources updated in 10 seconds
Stacktrace dumped to /tmp/kitchen/cache/chef-stacktrace.out
Please provide the contents of the stacktrace.out file if you file a bug report
FATAL: LoadError: cannot load such file -- aws-sdk-secretsmanager

谁能帮我解决这个问题 谢谢

【问题讨论】:

  • 你能用你食谱中的相关 sn-p 更新问题吗?它还有助于了解您在安装该 Gem 后想要完成什么。

标签: chef-infra aws-secrets-manager


【解决方案1】:

即使在 Chef 食谱中执行 require 的目的尚不清楚,我也会将其添加为答案。

Chef 维护自己的嵌入式 Ruby(和 Gem),它与系统范围的 Ruby 安装是分开的。因此系统 Ruby 安装的 Gem 将不适用于 Chef 使用的嵌入式 Ruby。

它通常安装在:

/opt/chef/embedded/

所以gem list 将不同于/opt/chef/embedded/bin/gem list

所以我的第一个建议是使用嵌入式二进制文件安装 Chef 所需的 Gems。

在食谱中编写纯 Ruby 代码(例如 require 'aws-sdk-secretsmanager')不是标准做法。配方应包含Chef resource 声明。如果配方依赖于 gem,则可以使用 chef_gem 资源安装它。

chef_gem 'aws-sdk-secretsmanager'

【讨论】:

    【解决方案2】:

    使用 chef_gem chef 资源安装 aws-sdk-secretsmanager gem 以在 Chef 运行编译期间提供所需的 Gem 文件。

    【讨论】:

    • 感谢您的回复,我正在尝试如下,但失败并出现错误:Net::HTTPServerException: 407 "Proxy Authentication Required" chef_gem 'aws-sdk-secretsmanager' do 13: compile_time true 14 : 操作 :install 15: 结束
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多