Amazon web services 将tf状态与现有EC2实例资源匹配
我在S3 bucket中存储了一个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
"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卷附件
资源,这是不可行的,所以它必须删除整个实例并重建。