Amazon web services 将tf状态与现有EC2实例资源匹配

Amazon web services 将tf状态与现有EC2实例资源匹配,amazon-web-services,terraform,Amazon Web Services,Terraform,我在S3 bucket中存储了一个tf状态文件,其中有关于EC2实例的部分: "attributes": { "ami": "ami-0ed60c7b71b6610a6", "arn": "arn:aws:ec2:eu-west-1:44444444444444:instance/i-07cff2b254b1cde3c", "associate_public_ip

我在S3 bucket中存储了一个tf状态文件,其中有关于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"
   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)
当我运行terraform时,我发现它想要强制进行一些更改,因此,它必须销毁并再次创建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"
   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)
禁用api\u终止:“true”=>“true”
ebs#U块#U设备。#:“2”=>“2”
ebs_block_device.2279853085.delete_on_termination:“true”=>“false”(强制新资源)
ebs_block_device.2279853085.device_name:“/dev/xvdd”=>”(强制新资源)
ebs_block_device.3965576335.delete_on_termination:“”=>“true”(强制新资源)
ebs_block_device.3965576335.device_name:“”=>“/dev/xvdd”(强制新资源)
ebs_block_device.3965576335.0加密:“”=>(强制新资源)
ebs_块_设备。3965576335.iops:“”=>“”
ebs_block_device.3965576335.kms_key_id:“”=>(强制新资源)
ebs_block_device.3965576335.snapshot_id:“”=>(强制新资源)
ebs_块_设备。3965576335。卷_id:“”=>
ebs_block_device.3965576335.volume_大小:“”=>“10”(强制新资源)
ebs_block_device.3965576335.volume_类型:“”=>“gp2”(强制新资源)
ebs_block_device.3986656952.delete_on_termination:“”=>“true”(强制新资源)
ebs_block_device.3986656952.device_name:“”=>“/dev/xvde”(强制新资源)
ebs_block_device.3986656952.1:“”=>(强制新资源)
ebs_块_设备。3986656952.iops:“”=>“”
ebs_block_device.3986656952.kms_key_id:“”=>(强制新资源)
ebs_block_device.3986656952.snapshot_id:“”=>(强制新资源)
ebs_块_设备。3986656952。卷_id:“”=>
ebs_block_device.3986656952.volume_大小:“”=>“10”(强制新资源)
ebs_block_device.3986656952.volume_类型:“”=>“gp2”(强制新资源)
ebs_block_device.897462451.delete_on_termination:“true”=>“false”(强制新资源)
ebs_block_device.897462451.device_name:“/dev/xvde”=>”(强制新资源)
ebs_优化:“真”=>“假”(强制新资源)
我绝对不想重新创建实例,因为它被另一个团队使用,所以我想将tf状态与控制台中的状态相匹配。有人帮我吗?
如何在不丢失任何数据的情况下执行此操作?

您可以执行
地形状态rm
以从当前状态删除资源。这将导致Terraform尝试创建一个新资源。因此,您需要执行一个
terraform导入
,将资源状态导入到您的状态文件中,并使它成为您想要匹配它的资源的目标。由于您不共享完整的资源信息,也不共享您不想更改的AWS实例的信息,因此我将列出这些命令,就像资源被称为
foo
,并且没有封装在模块中一样,就像实例被命名为
id-123456789
。如果无法将此转化为您的情况,请分享更多信息:

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


定义资源的地形代码是什么样的?看起来Terraform表示您尚未根据状态定义连接到它的EBS卷,因此Terraform希望删除这些EBS卷。但因为当EBS卷直接连接到实例时,而不是通过单独的
aws\u EBS\u卷
aws\u EBS\u卷附件
资源,这是不可行的,所以它必须删除整个实例并重建。