当代码移动到模块时,Terraform 正在破坏 AWS 资源



最初我有Terraform脚本来创建CloudWatch日志组。

resource "aws_cloudwatch_log_group" "main_server_log_group" {
name              = "server_name"
retention_in_days = 60
}

我应用了它,后来我将其移动到专用模块并重命名

resource "aws_cloudwatch_log_group" "server_log_group" {
name              = "${var.server_name}"
retention_in_days = 60
}

并在main.tf中使用此模块

module "main_server" {
source = "./modules/server"
server_name = "${local.main_server_name}"
}

现在,Terrafrom 应用程序正在销毁原始的 CloudWatch 组并创建一个新组。

module.main_server.aws_cloudwatch_log_group.main_server_log_group[0]: Creating...
aws_cloudwatch_log_group.main_server_log_group: Destroying... [id=xxxx]

我认为这是因为 Terraform 资源的名称已更改,不是吗? 这是意料之外的。CW 组的名称未更改。

在重构 Terraform 代码时保留现有资源的任何解决方法?

找到解决方案,显然可以将资源移动到模块。状态文件需要更新 - https://www.terraform.io/docs/commands/state/mv.html

更新移动状态对我不起作用。但是删除状态和导入状态可以解决问题。

terraform state rm 'my_resource'
terraform import ...

相关内容

  • 没有找到相关文章

最新更新