通过 cloudformation YAML 脚本中的参数传递 chef 运行 列表以及一些要在属性中覆盖的值

Pass chef run list with parameters from cloudformation YAML script along with some values to override in attributes

我在 YAML 中有一个 Cloudformation 模板,我需要在 EC2 实例中执行 Chef 运行 list。为此,我在用户数据部分传递了厨师角色,如下所示 -

UserData: !Base64 |
        {
        "Chef_RunList": "role[my_role_1],role[my_role_2]"
        }

现在,我需要传递一个 Cloudformation 参数,例如。此用户数据的环境。 我如何加入这个并使用 !Sub 替换环境变量。

例如。以下是预期 -

UserData: !Base64 |
        {
          "Chef_RunList": "role[my_role_1],role[my_role_2]",
          "my_cookbook" : {
            "environment" : "!Sub Environment"
          }
        }

我希望环境变量在 Chef cookbook 食谱中被我从 Cloudformation 脚本传递的这个值覆盖。

请帮助解决此用户数据部分的语法问题。

您可以使用 Sub${Environment}UserData 中引用参数。

例如:

UserData:
  Fn::Base64:
    Fn::Sub: |
        {
          "Chef_RunList": "role[my_role_1],role[my_role_2]",
          "my_cookbook" : {
            "environment" : "${Environment}"
          }
        }