сопоставить состояние tf с существующим ресурсом экземпляра EC2 - PullRequest
0 голосов
/ 23 октября 2019

У меня есть файл состояния tf, хранящийся в корзине S3, и в нем есть эта часть об экземпляре EC2:

       "attributes": {
                    "ami": "ami-0ed60c7b71b6610a6",
                    "arn": "arn:aws:ec2:eu-west-1:44444444444444:instance/i-07cff2b254b1cde3c",
                    "associate_public_ip_address": "false",
                    "availability_zone": "eu-west-1a",
                    "cpu_core_count": "1",
                    "cpu_threads_per_core": "2",
                    "credit_specification.#": "1",
                    "credit_specification.0.cpu_credits": "standard",
                    "disable_api_termination": "true",
                    "ebs_block_device.#": "2",
                    "ebs_block_device.2279853085.delete_on_termination": "true",
                    "ebs_block_device.2279853085.device_name": "",
                    "ebs_block_device.2279853085.encrypted": "false",
                    "ebs_block_device.2279853085.iops": "100",
                    "ebs_block_device.2279853085.kms_key_id": "",
                    "ebs_block_device.2279853085.snapshot_id": "snap-016c60740e5e35f25",
                    "ebs_block_device.2279853085.volume_id": "vol-03efc2ed4652597a9",
                    "ebs_block_device.2279853085.volume_size": "30",
                    "ebs_block_device.2279853085.volume_type": "gp2",
                    "ebs_block_device.897462451.delete_on_termination": "true",
                    "ebs_block_device.897462451.device_name": "/dev/xvde",
                    "ebs_block_device.897462451.encrypted": "false",
                    "ebs_block_device.897462451.iops": "100",
                    "ebs_block_device.897462451.kms_key_id": "",
                    "ebs_block_device.897462451.snapshot_id": "snap-0d3e70949c825b0e9",
                    "ebs_block_device.897462451.volume_id": "vol-0120f6b2038ec6066",
                    "ebs_block_device.897462451.volume_size": "30",
                    "ebs_block_device.897462451.volume_type": "gp2",
                    "ebs_optimized": "false",
                    "ephemeral_block_device.#": "0",
                    "get_password_data": "false",
                    "iam_instance_profile": "kp-prd-ec2",
                    "id": "i-07cff2b254b1cde3c",
                    "instance_state": "running",
                    "instance_type": "t3.micro",
                    "ipv6_address_count": "0",
                    "ipv6_addresses.#": "0",
                    "key_name": "gdp_-data-admin",
                    "monitoring": "false",
                    "network_interface.#": "0",
                    "password_data": "",
                    "placement_group": "",
                    "primary_network_interface_id": "eni-09e9454cb4954ecde",
                    "private_dns": "ip-10-194-27-15.eu-west-1.compute.internal",
                    "private_ip": "10.194.27.15",
                    "public_dns": "",
                    "public_ip": "",
                    "root_block_device.#": "1",
                    "root_block_device.0.delete_on_termination": "true",
                    "root_block_device.0.encrypted": "false",
                    "root_block_device.0.iops": "240",
                    "root_block_device.0.kms_key_id": "",
                    "root_block_device.0.volume_id": "vol-0d53a53b8825c9889",
                    "root_block_device.0.volume_size": "80",
                    "root_block_device.0.volume_type": "gp2",
                    "security_groups.#": "0",
                    "source_dest_check": "true",
                    "subnet_id": "subnet-53af101a",
                    "tenancy": "default",
                    "user_data": "9306f6c8f4c0679a11f00c8e5dbaf14ef5944e65",

                    "vpc_security_group_ids.#": "3",
                    "vpc_security_group_ids.1370631249": "sg-fb68699f",
                    "vpc_security_group_ids.359020622": "sg-22b0be44",
                    "vpc_security_group_ids.41262993": "sg-3d52f758"

, и когда я запускаю свой terraform, я получаю, что он хочет вызвать некоторые изменения, следовательно, ему придется уничтожить и снова создать экземпляр EC2:

   disable_api_termination:                                             "true" => "true"
      ebs_block_device.#:                                                  "2" => "2"
      ebs_block_device.2279853085.delete_on_termination:                   "true" => "false" (forces new resource)
      ebs_block_device.2279853085.device_name:                             "/dev/xvdd" => "" (forces new resource)
      ebs_block_device.3965576335.delete_on_termination:                   "" => "true" (forces new resource)
      ebs_block_device.3965576335.device_name:                             "" => "/dev/xvdd" (forces new resource)
      ebs_block_device.3965576335.encrypted:                               "" => <computed> (forces new resource)
      ebs_block_device.3965576335.iops:                                    "" => ""
      ebs_block_device.3965576335.kms_key_id:                              "" => <computed> (forces new resource)
      ebs_block_device.3965576335.snapshot_id:                             "" => <computed> (forces new resource)
      ebs_block_device.3965576335.volume_id:                               "" => <computed>
      ebs_block_device.3965576335.volume_size:                             "" => "10" (forces new resource)
      ebs_block_device.3965576335.volume_type:                             "" => "gp2" (forces new resource)
      ebs_block_device.3986656952.delete_on_termination:                   "" => "true" (forces new resource)
      ebs_block_device.3986656952.device_name:                             "" => "/dev/xvde" (forces new resource)
      ebs_block_device.3986656952.encrypted:                               "" => <computed> (forces new resource)
      ebs_block_device.3986656952.iops:                                    "" => ""
      ebs_block_device.3986656952.kms_key_id:                              "" => <computed> (forces new resource)
      ebs_block_device.3986656952.snapshot_id:                             "" => <computed> (forces new resource)
      ebs_block_device.3986656952.volume_id:                               "" => <computed>
      ebs_block_device.3986656952.volume_size:                             "" => "10" (forces new resource)
      ebs_block_device.3986656952.volume_type:                             "" => "gp2" (forces new resource)
      ebs_block_device.897462451.delete_on_termination:                    "true" => "false" (forces new resource)
      ebs_block_device.897462451.device_name:                              "/dev/xvde" => "" (forces new resource)
      ebs_optimized:                                                       "true" => "false" (forces new resource)

Я абсолютно не хочу воссоздавать экземпляр, потому что он используется другой командой, поэтому я хочу сопоставить состояние tf с тем, что яесть в консоли. Любая помощь с этим, пожалуйста? Как я могу сделать это без потери данных?

1 Ответ

0 голосов
/ 23 октября 2019

Вы можете выполнить terraform state rm, чтобы удалить ресурс из текущего состояния. Это может привести к тому, что Terraform попытается создать новый ресурс. Следовательно, вам нужно будет выполнить terraform import, чтобы импортировать состояние ресурса в файл состояния, и на него будет нацелен тот ресурс, с которым вы хотите сопоставить его. Поскольку вы не передаете полную информацию о ресурсе или информацию об экземпляре AWS, которую вы не хотите изменять, я перечислю эти команды, как если бы ресурс назывался foo и не был инкапсулирован в модуле, и как если быЭкземпляр называется id-123456789. Пожалуйста, поделитесь дополнительной информацией, если это не может быть переведено в вашу ситуацию:

terraform state rm aws_instance.foo
terraform import aws_instance.foo id-123456789

импорт terraform
состояние terraform rm

...