Closed ChristopheHubert72 closed 3 months ago
Hello @ChristopheHubert72
Thanks for reaching us,
If you want to use an existing ENI when recreating VM, you need to set nic_id in nics block inside VM like:
…...
#adding a nics ressouce
resource "outscale_nic" "nicBug01" {
private_ips {
private_ip = "10.0.0.254"
is_primary = true
}
subnet_id = outscale_subnet.BugVPCSubnetPriv.subnet_id
security_group_ids = [outscale_security_group.SecurityGroup.security_group_id]
}
resource "outscale_security_group_rule" "security_group_rule1" {
flow = "Inbound"
security_group_id = outscale_security_group.SecurityGroup.id
from_port_range = "22"
to_port_range = "22"
ip_protocol = "tcp"
ip_range = "0.0.0.0/0"
}
resource "outscale_vm" "BugVM" {
vm_type = var.vm_type
image_id = var.image_id_r9
keypair_name = var.keypair_name
# here VM will always get the nic_id when recreating
nics {
nic_id = outscale_nic.nicBug01.nic_id
device_number = "0"
}
tags {
key = "name"
value = "Bug-VM"
}
}
…...
About When recreating the VM, the ENI should be destroyed/recreated
, you can use delete_on_vm_deletion
parameter in nic block :
...
resource "outscale_vm" "BugVM" {
vm_type = var.vm_type
image_id = var.image_id_r9
keypair_name = var.keypair_name
nics {
delete_on_vm_deletion = true ## here ##
private_ips {
private_ip = "10.0.0.254"
is_primary = true
}
subnet_id = outscale_subnet.BugVPCSubnetPriv.subnet_id
device_number = 0
security_group_ids = [outscale_security_group.SecurityGroup.security_group_id]
}
tags {
key = "name"
value = "Bug-VM"
}
}
...
Best regards,
Terraform v1.7.3 on linux_amd64
When creating an instance with a nic, the associated ENI is "forgotten" : Recreating the instance lead to a ResourceConflict since it do not reuse the ENI and tries to recreate one Deleting a SG leads to an issue also since it cannot remove it until the ENI is deleted.
Terraform Configuration Files
variable region { default = "us-east-2" } variable az { default = "a" }
variable keypair_name { default = "Bug" } variable vm_type { default = "tinav5.c4r16p1" }
variable image_id_r9 { default = "ami-57042109" }
variable image_id_r8 { default = "ami-fcebd643" }
variable security_group_name { default = "Bug" }
resource "outscale_keypair" "KeyPair" { keypair_name = "Bug" }
resource "outscale_net" "BugVPC" { ip_range = "10.0.0.0/16" tags { key = "name" value = "Bug" } }
resource "outscale_subnet" "BugVPCSubnetPriv" { subregion_name = "${var.region}${var.az}" ip_range = "10.0.0.0/24" net_id = outscale_net.BugVPC.net_id }
resource "outscale_security_group" "SecurityGroup" { description = "SecurityGroup" security_group_name = "BugVPC" net_id = outscale_net.BugVPC.net_id }
resource "outscale_security_group_rule" "security_group_rule1" { flow = "Inbound" security_group_id = outscale_security_group.SecurityGroup.id
from_port_range = "22" to_port_range = "22" ip_protocol = "tcp" ip_range = "0.0.0.0/0" }
resource "outscale_vm" "BugVM" { vm_type = var.vm_type image_id = var.image_id_r9 keypair_name = var.keypair_name nics { private_ips { private_ip="10.0.0.254" is_primary=true } subnet_id = outscale_subnet.BugVPCSubnetPriv.subnet_id device_number = 0 security_group_ids = [outscale_security_group.SecurityGroup.security_group_id] } tags { key = "name" value = "Bug-VM" } }
Debug Output
When recreating the instance (terraform apply after updating the omi):
2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: POST /api/v1/CreateVms HTTP/1.1 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Host: api.us-east-2.outscale.com 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: User-Agent: terraform-provider-outscale/0.12.0 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Content-Length: 378 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Accept: application/json [deleted] 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Content-Type: application/json 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: X-Amz-Date: 20240520T142705Z 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Accept-Encoding: gzip 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: { 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "BootOnCreation": true, 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "DeletionProtection": false, 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "ImageId": "ami-57042109", 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "KeypairName": "Bug", 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "MaxVmsCount": 1, 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "MinVmsCount": 1, 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "NestedVirtualization": false, 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "Nics": [ 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: { 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "DeleteOnVmDeletion": false, 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "Description": "", 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "DeviceNumber": 0, 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "PrivateIps": [ 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: { 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "IsPrimary": true, 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "PrivateIp": "10.0.0.254" 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: } 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: ], 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "SecurityGroupIds": [ 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "sg-6a1355c6" 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: ], 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "SubnetId": "subnet-15df6b3e" 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: } 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: ], 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "VmType": "tinav5.c4r16p1" 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: } 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0 2024-05-20T14:27:05.716Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: ----------------------------------------------------- 2024-05-20T14:27:05.932Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: 2024/05/20 14:27:05 [DEBUG] Outscale API Response Details: 2024-05-20T14:27:05.932Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: ---[ RESPONSE ]-------------------------------------- 2024-05-20T14:27:05.932Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: HTTP/1.1 409 Conflict 2024-05-20T14:27:05.932Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Content-Length: 138 2024-05-20T14:27:05.932Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Access-Control-Allow-Origin: * 2024-05-20T14:27:05.932Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Connection: keep-alive 2024-05-20T14:27:05.932Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Content-Type: application/json 2024-05-20T14:27:05.932Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Date: Mon, 20 May 2024 14:27:05 GMT 2024-05-20T14:27:05.932Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Server: nginx 2024-05-20T14:27:05.932Z [DEBUG] provider.terraform-provider-outscale_v0.12.0 2024-05-20T14:27:05.932Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: { 2024-05-20T14:27:05.932Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "Errors": [ 2024-05-20T14:27:05.933Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: { 2024-05-20T14:27:05.933Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "Type": "ResourceConflict", 2024-05-20T14:27:05.933Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "Details": "", 2024-05-20T14:27:05.933Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "Code": "9086" 2024-05-20T14:27:05.933Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: } 2024-05-20T14:27:05.933Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: ], 2024-05-20T14:27:05.933Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "ResponseContext": { 2024-05-20T14:27:05.933Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "RequestId": "95a84135-78e9-4919-abf5-890a569f18dd" 2024-05-20T14:27:05.933Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: } 2024-05-20T14:27:05.933Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: }
When deleting the Net (terraform destroy) 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: POST /api/v1/DeleteSubnet HTTP/1.1 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Host: api.us-east-2.outscale.com 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: User-Agent: terraform-provider-outscale/0.12.0 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Content-Length: 31 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Accept: application/json [deleted] 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Content-Type: application/json 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: X-Amz-Date: 20240520T142804Z 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Accept-Encoding: gzip 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: { 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "SubnetId": "subnet-15df6b3e" 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: } 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0 2024-05-20T14:28:04.541Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: ----------------------------------------------------- 2024-05-20T14:28:04.736Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: 2024/05/20 14:28:04 [DEBUG] Outscale API Response Details: 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: ---[ RESPONSE ]-------------------------------------- 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: HTTP/1.1 409 Conflict 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Content-Length: 138 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Access-Control-Allow-Origin: * 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Connection: keep-alive 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Content-Type: application/json 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Date: Mon, 20 May 2024 14:28:04 GMT 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: Server: nginx 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: { 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "Errors": [ 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: { 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "Type": "ResourceConflict", 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "Details": "", 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "Code": "9095" 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: } 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: ], 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "ResponseContext": { 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: "RequestId": "781e2e0e-9328-44a7-aec0-33864a2a5e68" 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: } 2024-05-20T14:28:04.737Z [DEBUG] provider.terraform-provider-outscale_v0.12.0: }
Expected Behavior
When recreating the VM, the ENI should be destroyed/recreated When deleting the NET/SG holding the ENI, the ENI should be destroyed first
Actual Behavior
When recreating the VM, the ENI is left aside. The new instance cannot be created since there's a conflict When deleting the NET/SG, it fails also with a conflict