din*_*dam 8 state module file terraform
在添加计数之前,我已经通过下面列出的此模块部署了我的 VPC。
这工作得很好,但是要改变我们的基础设施,我需要向模块添加一个计数
module "core_vpc" {
source = "./modules/vpc"
count = var.environment == "qa" || var.environment == "production" ? 1 : 0
aws_region = var.aws_region
environment = var.environment
system = var.system
role = var.system
vpc_name = var.system
vpc_cidr = var.vpc_cidr
ssh_key_name = var.ssh_key_name
ssh_key_public = var.ssh_key_public
nat_subnets = var.nat_subnets
nat_azs = var.vpc_subnet_azs
}
Run Code Online (Sandbox Code Playgroud)
现在 Terraform 想要更新我的状态文件并销毁我的大部分配置,并将其替换为下面示例中所示的内容。这当然不仅限于路由关联,还包括模块内创建的所有资源。我不能让这种情况发生,因为我正在运行生产并且不想弄乱它。
module.K8_subnets.aws_route_table_association.subnet[0] will be destroyed
Run Code Online (Sandbox Code Playgroud)
并将其替换为:
module.K8_subnets[0].aws_route_table_association.subnet[0] will be created
Run Code Online (Sandbox Code Playgroud)
有没有办法阻止 Terraform 进行这些更改?无法在 tf 状态下手动更改它。我想要的只是 VPC 不部署在 DEV 中。
谢谢。
您可以使用“移动”地形状态tf state mv src target
。具体来说,您可以将旧的非计数器版本移动到索引 0 处的新计数版本:
terraform state mv 'module.K8_subnets' 'module.K8_subnets[0]'
Run Code Online (Sandbox Code Playgroud)
这适用于单个资源以及整个模块。它也适用于for_each
资源,在那里你不会有索引,但有一个可以移动到的键。如果您删除/但仍想保留资源,这甚至可以相反。count
for_each
归档时间: |
|
查看次数: |
3497 次 |
最近记录: |