[英]Is it possible to execute a CloudFormation file in Terraform?
一个团队已经将 cloudformation 模板编写为.yml
文件,用于配置资源堆栈。
是否可以通过在 Terraform 中执行来利用该文件? 还是必须重写?
我是 terraform 的新手,刚刚开始。
如果我使用 AWS CLI,我会执行这样的命令,
aws cloudformation create-stack --stack-name my-new-stack --template-body file://mystack.yml --parameters ParameterKey=AmiId
我想在我的 terraform 配置中包含与此命令等效的命令。
如果可能的话,你可以给我举个例子,我真的很感激。
谢谢!
aws_cloudformation_stack
资源充当从 Terraform 到aws_cloudformation_stack
的桥梁,可用作从aws_cloudformation_stack
迁移到 Terraform 的辅助工具(正如您在此处所做的那样)或利用一些 CloudFormation 目前没有的 CloudFormation 功能处理,例如将新实例滚动部署到ASG 中。
resource "aws_cloudformation_stack" "example" {
name = "example"
parameters = {
VpcId = var.vpc_id
}
template_body = file("${path.module}/example.yml")
}
parameters
参数允许将数据从 Terraform 传递到 Cloudformation 堆栈。 也可以使用outputs
属性来利用 Terraform 中其他地方的 CloudFormation 堆栈的结果,进行双向集成:
resource "aws_route_53_record" "example" {
name = "service.example.com"
type = "CNAME"
ttl = 300
records = [
aws_cloudformation_stack.example.outputs["ElbHostname"],
]
}
如果您有一个不由Terraform 管理的预先存在的 CloudFormation 堆栈,您仍然可以使用aws_cloudformation_stack
数据源利用其输出:
data "aws_cloudformation_stack" "example" {
name = "example"
}
resource "aws_route_53_record" "example" {
name = "service.example.com"
type = "CNAME"
ttl = 300
records = [
data.aws_cloudformation_stack.example.outputs["ElbHostname"],
]
}
这些功能一起使您能够以不同的组合在单个系统中有效地混合 CloudFormation 和 Terraform,无论是作为迁移时的临时措施,还是在需要混合解决方案的情况下永久使用。
我可以通过对 cloudformation 模板的文件引用来确认 template_body 有效。 我认为 template_url 也能很好地工作。 例子
resource "aws_cloudformation_stack" "my-new-stack" {
name = "my-new-stack"
parameters {
Name="my-new-stack"
Port="22"
VpcId = "${var.vpc_id}"
}
template_body = "${file("${path.module}/mystack.yml")}"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.