Terraform: Ошибка при обновлении формата файла состояния с версии 3 до версии 4 / переименование псевдонима соответствующего поставщика в допустимый идентификатор - PullRequest
0 голосов
/ 02 апреля 2020

Я получил эту ошибку при обновлении файла состояния:

Error upgrading state file format from version 3 to version 4: invalid
provider config reference "provider.aws.${var.short_region}" for
aws_route53_zone.zone: this alias seems to contain a template interpolation
sequence, which was not supported but also not error-checked in Terraform
0.11. To proceed, rename the associated provider alias to a valid identifier
and apply the change with Terraform 0.11 before upgrading to Terraform 0.12.

Моя конфигурация: Terraform v0.12.20, поставщик. aws v2.55.0, provider.null v2.1.2, provider.template v2.1.2

Код изначально был в 0.11 версии и был обновлен до 0.12. Теперь код находится в 0.12

На моей машине файл состояния:

{
    "version": 3,
    "serial": 1,
    "lineage": "82ed8aae-e320-656e-01bb-55343b020bce",
    "backend": {
        "type": "s3",
        "config": {
            "access_key": null,
            "acl": null,
            "assume_role_policy": null,
            "bucket": "domain-terraform-state",
            "dynamodb_endpoint": null,
            "dynamodb_table": "tfstate-lock",
            "encrypt": null,
            "endpoint": null,
            "external_id": null,
            "force_path_style": null,
            "iam_endpoint": null,
            "key": "us-west-2/.../tfstate",
            "kms_key_id": null,
            "lock_table": null,
            "max_retries": null,
            "profile": null,
            "region": "us-west-2",
            "role_arn": null,
            "secret_key": null,
            "session_name": null,
            "shared_credentials_file": null,
            "skip_credentials_validation": null,
            "skip_get_ec2_platforms": null,
            "skip_metadata_api_check": null,
            "skip_region_validation": null,
            "skip_requesting_account_id": null,
            "sse_customer_key": null,
            "sts_endpoint": null,
            "token": null,
            "workspace_key_prefix": null
        },
        "hash": 834316
    },
    "modules": [
        {
            "path": [
                "root"
            ],
            "outputs": {},
            "resources": {},
            "depends_on": []
        }
    ]
}

Файл удаленного состояния (связанная часть):

    {
      "module": "module.private_zone",
      "mode": "managed",
      "type": "aws_route53_record",
      "name": "ns",
      "provider": "provider.aws",
      "instances": [
        {
          "schema_version": 2,
          "attributes_flat": {
            "fqdn": "test.usw2.int.domain.com",
            "health_check_id": "",
            "id": "Z202AKIFU71_test.usw2.int.domain.com_NS",
            "name": "test.usw2.int.domain.com",
            "records.#": "4",
            "records.17965321": "ns-512.awsdns-00.net.",
            "records.27280594": "ns-1536.awsdns-00.co.uk.",
            "records.40921603": "ns-1024.awsdns-00.org.",
            "records.4560074": "ns-0.awsdns-00.com.",
            "set_identifier": "",
            "ttl": "30",
            "type": "NS",
            "zone_id": "Z202AKIFU71"
          },
          "depends_on": [
            "aws_route53_zone.zone"
          ]
        }
      ]
    },
    {
      "module": "module.public_zone",
      "mode": "managed",
      "type": "aws_route53_record",
      "name": "ns",
      "provider": "provider.aws",
      "instances": [
        {
          "schema_version": 2,
          "attributes_flat": {
            "fqdn": "tg.domain.com",
            "health_check_id": "",
            "id": "ZDF63N3P_tg.domain.com_NS",
            "name": "tg.qless.com",
            "records.#": "4",
            "records.14902820": "ns-1311.awsdns-35.org",
            "records.28929605": "ns-684.awsdns-21.net",
            "records.35445644": "ns-1563.awsdns-03.co.uk",
            "records.4857601": "ns-155.awsdns-19.com",
            "set_identifier": "",
            "ttl": "30",
            "type": "NS",
            "zone_id": "ZDF63N3P"
          },
          "depends_on": [
            "aws_route53_zone.zone"
          ]
        }
      ]
    },

В main.tf нет ничего похожего на "provider.aws.${var.short_region}".

В других 2 подмодулях есть только то, что:

module private-hosted-zone.tf
resource "aws_route53_zone" "zone" {
  name = var.subdomain
  vpc {
    vpc_id = var.vpc_id
  }
  comment = "Private Zone for ${var.environment_name}"

  tags = {
    Name            = "${var.environment_name}-r53-private"
    Environment     = var.environment_name
    EnvironmentType = var.environment_type
    FullRegion      = var.aws_region
    ShortRegion     = var.short_region
    Terraform       = "true"
  }
}

module public-hosted-zone.tf
resource "aws_route53_zone" "zone" {
  name    = var.subdomain
  comment = "Public Zone for ${var.environment_name}"

  tags = {
    Name            = "${var.environment_name}-r53-public"
    Environment     = var.environment_name
    EnvironmentType = var.environment_type
    FullRegion      = var.aws_region
    ShortRegion     = var.short_region
    Terraform       = "true"
  }
}

Не могу понять, как это исправить ...

...