是否可以在AWS :: OPSWorks :: Instance Resource中使用AWS :: CloudForm



我想创建OPSWorks堆栈,我想在堆栈实例中配置用户数据。我不需要一个自动扩展组,因此可以使用元数据和AWS :: CloudFormation :: In in AWS :: opsworks :: Instance ::实例资源以我们在AWS :: ec2 ::启动配置?

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

tldr:使用厨师食谱和食谱来配置AWS::OpsWorks::Instance,而不是cfn-init

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

对于解决方法,您可以使用自定义AMI进行实例,并配置AMI以在启动时调用cfn-init

但是,强烈劝阻这样的解决方法 - 您确实不需要在OPSWorks堆栈中使用cfn-init(或其相应的AWS::CloudFormation::Init元数据)。cfn-init完全与OPSWorks提供的基于厨师更强大的配置管理完全正交,这大概是您首先使用OPSWorks的原因。利用它!使用厨师食谱和食谱来配置您的实例。

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

最新更新