是否可以在 AWS::OpsWorks::Instance 资源中使用 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 代理(参见 Using Custom AMIs: Startup Behavior)。大概是因为这个原因,OpsWorks 实例不支持设置自定义用户数据脚本,因此您不能 运行 cfn-init
在启动时使用与常规 AWS::EC2::Instance
资源相同的方式。
对于解决方法,您可以为您的实例 use a custom AMI 并将 AMI 配置为在启动时调用 cfn-init
。
但是,强烈建议不要使用这样的解决方法 - 您真的永远不需要在 OpsWorks 堆栈中使用 cfn-init
(或其对应的 AWS::CloudFormation::Init
元数据)。 cfn-init
与 OpsWorks 提供的更强大的基于 Chef 的配置管理完全正交,这大概是您首先使用 OpsWorks 的原因。利用它!使用 Chef 食谱和食谱来配置您的实例。
如果您确实需要使用 cfn-init
和自定义用户数据(例如,以支持遗留代码),那么我建议您坚持使用标准 EC2 实例,直到您可以将应用程序逻辑移植到定制厨师食谱。
我想通过 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 代理(参见 Using Custom AMIs: Startup Behavior)。大概是因为这个原因,OpsWorks 实例不支持设置自定义用户数据脚本,因此您不能 运行 cfn-init
在启动时使用与常规 AWS::EC2::Instance
资源相同的方式。
对于解决方法,您可以为您的实例 use a custom AMI 并将 AMI 配置为在启动时调用 cfn-init
。
但是,强烈建议不要使用这样的解决方法 - 您真的永远不需要在 OpsWorks 堆栈中使用 cfn-init
(或其对应的 AWS::CloudFormation::Init
元数据)。 cfn-init
与 OpsWorks 提供的更强大的基于 Chef 的配置管理完全正交,这大概是您首先使用 OpsWorks 的原因。利用它!使用 Chef 食谱和食谱来配置您的实例。
如果您确实需要使用 cfn-init
和自定义用户数据(例如,以支持遗留代码),那么我建议您坚持使用标准 EC2 实例,直到您可以将应用程序逻辑移植到定制厨师食谱。