嗨,我是 Terraform 的初学者。
在使用它时,我对使用现有基础设施作为数据和使用导入命令感到有些困惑。因为我导入了现有的基础设施并且丢失了我的子网和密钥对,如果有人解释我们如何明智地使用它会很有帮助。提前致谢。
Terraform 导入的当前实现只能将资源导入状态。它不会生成配置。
https://www.terraform.io/docs/import/index.html
导入资源时,您应该已经创建了配置,以便 terraform 不会破坏 resource.s
terraform import resource id
terraform plan -out=tfplan.out
该计划将输出它对资源所做的更改,黄色表示修改,绿色表示新建,红色表示销毁。
-out=path - 保存生成的执行计划的路径。然后可以将此计划与 terraform apply 一起使用,以确保仅应用此计划中显示的更改。阅读下面有关已保存计划的警告。
https://www.terraform.io/docs/commands/plan.html#out-path
terraform apply tfplan.out
数据源返回有关资源的属性,例如,如果子网 ID 是唯一已知的,则数据源可以提取有关它的其他信息,例如 VPC id。
variable "subnet_id" {}
data "aws_subnet" "selected" {
id = "${var.subnet_id}"
}
resource "aws_security_group" "subnet" {
vpc_id = "${data.aws_subnet.selected.vpc_id}"
ingress {
cidr_blocks = ["${data.aws_subnet.selected.cidr_block}"]
from_port = 80
to_port = 80
protocol = "tcp"
}
}
Run Code Online (Sandbox Code Playgroud)
此数据源的参数充当用于查询当前区域中可用子网的过滤器。给定的过滤器必须与一个其数据将作为属性导出的子网完全匹配。
可用性区域 - (可选)子网必须驻留的可用区域。
cidr_block -(可选)所需子网的 cidr 块。
ipv6_cidr_block -(可选)所需子网的 Ipv6 cidr 块
default_for_az -(可选)布尔约束,用于确定所需子网是否必须是其关联可用区的默认子网。
filter -(可选)自定义过滤器块,如下所述。
id -(可选)要检索的特定子网的 id。
state -(可选)所需子网必须具有的状态。
标签 - (可选)标签的映射,每对标签必须与所需子网上的一对完全匹配。
vpc_id -(可选)所需子网所属的 VPC 的 ID。
https://www.terraform.io/docs/providers/aws/d/subnet.html
| 归档时间: |
|
| 查看次数: |
1560 次 |
| 最近记录: |