You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Chef配方中获取加密数据袋项的pass值并赋值给变量?

解决方法

没问题,你已经完成了最关键的加密数据袋加载步骤,接下来获取pass的值非常直接——因为Chef::EncryptedDataBagItem.load返回的是一个类似哈希结构的对象,直接通过键名访问即可:

dbag = Chef::EncryptedDataBagItem.load("foo", "bar")
foo_pass = dbag['pass']
# 也可以用点语法:foo_pass = dbag.pass

补充说明

因为你的客户端已经把encrypted_data_bag_secret放在了默认路径/etc/chef下,Chef::EncryptedDataBagItem.load会自动读取这个密钥文件,不需要额外传入参数,这部分你已经处理得很对啦。

在bash资源中使用变量的示例

如果要在bash资源里引用这个密码变量,记得用Chef的字符串插值语法#{}把变量嵌入到命令中:

bash 'use_foo_password' do
  code <<-EOH
    # 替换成你的实际业务命令,比如用密码连接服务、写入配置等
    echo "The retrieved password is: #{foo_pass}" > /tmp/foo_pass.txt
  EOH
end

这样就能把加密数据袋里的p4ssw0rd值正确传递到bash命令里了。

内容的提问来源于stack exchange,提问作者hobbes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:54:09