[英]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.