首页 > 解决方案 > 将属性从 Terraform 传递给 Chef

问题描述

我试图弄清楚如何将值从 Terraform 传递给 Chef。我在 Terraform 中设置了一个属性。

run_list = ['cookbook::default']
attributes_json = <<EOF
{
  "department": "CC"
}
EOF

这是我的厨师食谱

    department = ''

    if node['platform_family'] == 'windows'
      user 'test' do
        password 'hash'
        comment department
      end
      if department == 'CC'
        group 'Administrators' do
          action :modify
          members 'test'
          append true
        end
      end
    end

当我运行 Terraform 时,它成功完成但不满足部门的条件,因此它不会将测试帐户添加到管理组。我也将部门插入到用户评论中,这样我就可以看到价值(如果有的话)。什么都没有通过。

谁能看到我做错了什么?

标签: chef-infraterraform

解决方案


当您将 JSON 传递给json_attributesTerraform 的 Chef 配置程序中的参数时,它会被转换为哈希并node在传递给 Chef 时添加到哈希中。因此,您的值可以作为分配给 的哈希中的键值对访问node,并且您的特定键是department和值是CC。因此,Chef(和 Ruby)中的查找语法为:

node['department']

在 Chef 中更新您的代码,我们到达:

if node['department'] == 'CC'
  group 'Administrators' do
    action :modify
    members 'test'
    append true
  end
end

推荐阅读