Назад | Перейти на главную страницу

Terraform: назначение группы безопасности экземпляру EC2 в VPC по умолчанию не идемпотентно

I, когда я присоединяю группу безопасности к экземпляру EC2 в Terraform, используя vpc_security_group_ids атрибут, последующие запуски той же конфигурации всегда приводят к изменениям в среде.

Несколько важных деталей:

Фрагмент конфигурации terraform:

data "aws_vpc" "default" {
    default = true
}

data "aws_subnet" "default" {
    vpc_id = "${data.aws_vpc.default.id}"
    availability_zone = "eu-west-2a"
    default_for_az = true
}

resource "aws_security_group" "bastion-test" {
    name        = "bastion-test"
    ...
}

resource "aws_instance" "bastion" {
    subnet_id = "${data.aws_subnet.default.id}"
    vpc_security_group_ids = ["${aws_security_group.bastion-test.id}"]
    ...
}

Результат первого запуска terraform plan:

$ terraform apply
...
aws_security_group.bastion-test: Creating...
...
name:                                  "" => "bastion-test"
...
aws_security_group.bastion-test: Creation complete after 4s (ID: sg-8fXXXXe7)
aws_instance.bastion: Creating...
...
source_dest_check:                 "" => "true"
subnet_id:                         "" => "subnet-XXXXX"
...
vpc_security_group_ids.#:          "" => "1"
vpc_security_group_ids.2237593593: "" => "sg-8fXXXXe7"
...
aws_instance.bastion: Creation complete after 27s (ID: i-08XXXXXXXXXXXX49)
...
Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

Хорошо, пока все хорошо. Теперь я немедленно выполняю terraform plan:

$ terraform plan
...
aws_security_group.bastion-test: Refreshing state... (ID: sg-8fXXXXe7)
...
aws_instance.bastion: Refreshing state... (ID: i-08XXXXXXXXXXXX49)
...
Terraform will perform the following actions:

~ aws_instance.bastion
    vpc_security_group_ids.#:          "0" => "1"
    vpc_security_group_ids.2237593593: "" => "sg-8fXXXXe7"

Plan: 0 to add, 1 to change, 0 to destroy.

Версии:

$ terraform --version
Terraform v0.10.7

$ ls .terraform/plugins/darwin_amd64/
lock.json
terraform-provider-aws_v1.0.0_x4

Спасибо за прочтение

Джеймс