我已经在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有人能帮我解决这个问题吗?谢谢
发布于 2021-04-16 00:04:17
我将添加这个作为答案,尽管在厨师食谱中执行require的目的并不明确。
Chef维护自己的嵌入式Ruby (和Gems),并且独立于系统范围的Ruby安装。因此,系统Ruby安装的Gems不能用于Chef使用的embedded Ruby。
它通常安装在:
/opt/chef/embedded/因此,gem list将不同于/opt/chef/embedded/bin/gem list。
因此,我的第一个建议是使用嵌入式二进制文件安装Chef所需的Gems。
编写纯Ruby代码,如require 'aws-sdk-secretsmanager' inside recipes不是一种标准做法。食谱应该包含Chef resource声明。如果配方依赖于gem,那么可以使用chef_gem资源安装它。
chef_gem 'aws-sdk-secretsmanager'发布于 2021-04-20 00:02:56
使用chef_gem chef资源安装aws-sdk-secretsmanager gem,使所需的Gem文件在Chef run编译期间可用。
https://stackoverflow.com/questions/67110241
复制相似问题