Как определить проверку жизненного цикла, чтобы избежать перераспределения ресурсов в случае изменения тегов
Когда я использую:
terraform {
required_version = ">=1.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "5.0.0"
}
}
}
provider "aws" {
region = var.aws_region
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
tags,
]
}
}
Я получаю сообщение об ошибке: Имя типа блока «жизненный цикл» зарезервировано для использования Terraform в будущей версии.
ignore_changes следует устанавливать на уровне ресурса, а не провайдера.
Пример:
resource "aws_instance" "web" {
ami = "ami-0c94855ba95c574c8"
instance_type = "t3.micro"
lifecycle {
ignore_changes = [
tags
]
}
}
Некоторые примечания:
all
, чтобы указать Terraform игнорировать все атрибуты. Это означает, что Terraform может создавать и уничтожать удаленный объект, но никогда не будет предлагать его обновления.ignore_changes
нельзя применить ни к самому себе, ни к каким-либо другим метааргументам.Terraform не перераспределяет ресурсы при добавлении или удалении тегов.
«Игнорировать можно только атрибуты, определенные типом ресурса. ignore_changes нельзя применять ни к самому себе, ни к каким-либо другим метааргументам». Это утверждение поясняет, почему мы не можем использовать аргумент
lifecycle
внутриprovider
. Потому чтоprovider
тоже является метааргументом Developer.hashicorp.com/terraform/language/meta-arguments/…