繁体   English   中英

是否可以在AWS :: OpsWorks ::实例资源中使用AWS :: CloudFormation :: Init和元数据?

[英]Is it possible to use AWS::CloudFormation::Init and metadata in AWS::OpsWorks::Instance resource?

我想通过opsworks创建堆栈,并且想要在堆栈实例中配置用户数据。 我不需要自动伸缩组,因此可以像在AWS :: EC2 :: Instance中那样在AWS :: OpsWorks :: Instance资源中使用元数据和AWS :: CloudFormation :: Init,并且启动配置?

 "Resources": {
      "MyInstance": {
        "Type": "AWS::EC2::Instance",
        "Metadata" : {
          "AWS::CloudFormation::Init" : {
            "config" : {
              "packages" : {},
              "groups" : {},
              "users" : {},
              "sources" : {},
              "files" : {},
              "commands" : {},
              "services" : {}
            }
          }
        },
        "Properties": {
          [...]
        }
      }
    }

TLDR:使用Chef食谱和食谱来配置AWS::OpsWorks::Instance ,而不是cfn-init

在内部,OpsWorks使用cloud-init在实例上安装AWS OpsWorks Stacks代理(请参阅使用自定义AMI:启动行为 )。 大概是由于这个原因,OpsWorks实例不支持设置自定义用户数据脚本,因此您无法cfn-init在常规AWS::EC2::Instance资源上那样在启动时运行cfn-init

要解决此问题,可以对实例使用自定义AMI ,并将AMI配置为在启动时调用cfn-init

但是,强烈不建议使用这种解决方法-实际上,您一开始根本不需要在OpsWorks堆栈中使用cfn-init (或其对应的AWS::CloudFormation::Init元数据)。 cfn-init与OpsWorks提供的更加强大的基于Chef的配置管理完全正交,这大概是您首先使用OpsWorks的原因。 利用它! 使用厨师食谱和食谱来配置您的实例。

如果确实需要使用cfn-init和自定义用户数据(例如,以支持旧代码),那么我建议您坚持使用标准EC2实例,直到您可以将应用程序逻辑移植到自定义Chef食谱上为止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM