Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug: ibm_is_volume are not attached in sequence to ibm_is_instance #2390

Closed
sean-freeman opened this issue Mar 23, 2021 · 2 comments · Fixed by #4370
Closed

bug: ibm_is_volume are not attached in sequence to ibm_is_instance #2390

sean-freeman opened this issue Mar 23, 2021 · 2 comments · Fixed by #4370
Assignees
Labels
service/VPC Infrastructure Issues related to the VPC Infrastructure

Comments

@sean-freeman
Copy link

Terraform Version

[:~] $ terraform -v
Terraform v0.14.8

Affected Resource(s)

  • ibm_is_instance
  • ibm_is_volume

Terraform Configuration Files

resource "ibm_is_volume" "virtual_server_block_volume_data_1" {
  name     = "${var.virtual_server_hostname}-volume-data-1"
  resource_group = var.target_resource_group_id
  zone     = var.target_availability_zone
  profile  = "custom"
  iops     = 1000
  capacity = 100
}

resource "ibm_is_volume" "virtual_server_block_volume_data_2" {
  name     = "${var.virtual_server_hostname}-volume-data-2"
  resource_group = var.target_resource_group_id
  zone     = var.target_availability_zone
  profile  = "custom"
  iops     = 1000
  capacity = 200
}

resource "ibm_is_volume" "virtual_server_block_volume_data_3" {
  name     = "${var.virtual_server_hostname}-volume-data-3"
  resource_group = var.target_resource_group_id
  zone     = var.target_availability_zone
  profile  = "custom"
  iops     = 1000
  capacity = 300
}

resource "ibm_is_volume" "virtual_server_block_volume_data_4" {
  name     = "${var.virtual_server_hostname}-volume-data-4"
  resource_group = var.target_resource_group_id
  zone     = var.target_availability_zone
  profile  = "custom"
  iops     = 1000
  capacity = 400
}

resource "ibm_is_volume" "virtual_server_block_volume_data_5" {
  name     = "${var.virtual_server_hostname}-volume-data-5"
  resource_group = var.target_resource_group_id
  zone     = var.target_availability_zone
  profile  = "custom"
  iops     = 1000
  capacity = 500
}

resource "ibm_is_volume" "virtual_server_block_volume_data_6" {
  name     = "${var.virtual_server_hostname}-volume-data-6"
  resource_group = var.target_resource_group_id
  zone     = var.target_availability_zone
  profile  = "custom"
  iops     = 1000
  capacity = 600
}

resource "ibm_is_volume" "virtual_server_block_volume_data_7" {
  name     = "${var.virtual_server_hostname}-volume-data-7"
  resource_group = var.target_resource_group_id
  zone     = var.target_availability_zone
  profile  = "custom"
  iops     = 1000
  capacity = 700
}

resource "ibm_is_volume" "virtual_server_block_volume_data_8" {
  name     = "${var.virtual_server_hostname}-volume-data-8"
  resource_group = var.target_resource_group_id
  zone     = var.target_availability_zone
  profile  = "custom"
  iops     = 1000
  capacity = 800
}


resource "ibm_is_instance" "virtual_server" {

  depends_on = [
    ibm_is_volume.virtual_server_block_volume_data_1,
    ibm_is_volume.virtual_server_block_volume_data_2,
    ibm_is_volume.virtual_server_block_volume_data_3,
    ibm_is_volume.virtual_server_block_volume_data_4,
    ibm_is_volume.virtual_server_block_volume_data_5,
    ibm_is_volume.virtual_server_block_volume_data_6,
    ibm_is_volume.virtual_server_block_volume_data_7,
    ibm_is_volume.virtual_server_block_volume_data_8
    ]

  resource_group = var.target_resource_group_id
  name    = var.virtual_server_hostname
  profile = var.virtual_server_profile
  vpc  = var.target_vpc_id
  zone = var.target_availability_zone
  keys = [ibm_is_ssh_key.virtual_server_public_ssh.id]

  primary_network_interface {
    name = "${var.virtual_server_hostname}-0"
    subnet = data.ibm_is_subnet.vpc_subnet.id
  }

  boot_volume {
    name = "${var.virtual_server_hostname}-volume-boot-0"
  }

  volumes = [
    ibm_is_volume.virtual_server_block_volume_data_1.id,
    ibm_is_volume.virtual_server_block_volume_data_2.id,
    ibm_is_volume.virtual_server_block_volume_data_3.id,
    ibm_is_volume.virtual_server_block_volume_data_4.id,
    ibm_is_volume.virtual_server_block_volume_data_5.id,
    ibm_is_volume.virtual_server_block_volume_data_6.id,
    ibm_is_volume.virtual_server_block_volume_data_7.id,
    ibm_is_volume.virtual_server_block_volume_data_8.id
    ]

  //User can configure timeouts
  timeouts {
    create = "90m"
    delete = "30m"
  }

}

Expected Behavior

Volumes created in sequence:

[root@virtualserver ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    252:0    0  100G  0 disk 
├─vda1 252:1    0    1G  0 part /boot
└─vda2 252:2    0   99G  0 part /
vdb    252:16   0  376K  0 disk 
vdc    252:32   0   44K  0 disk [SWAP]
vdd    252:48   0  100G  0 disk 
vde    252:64   0  200G  0 disk 
vdf    252:80   0  300G  0 disk 
vdg    252:96   0  400G  0 disk 
vdh    252:112  0  500G  0 disk 
vdi    252:128  0  600G  0 disk 
vdj    252:144  0  700G  0 disk 
vdk    252:160  0  800G  0 disk

Actual Behavior

Volumes created out of sequence:

[root@virtualserver ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    252:0    0  100G  0 disk 
├─vda1 252:1    0    1G  0 part /boot
└─vda2 252:2    0   99G  0 part /
vdb    252:16   0  376K  0 disk 
vdc    252:32   0   44K  0 disk [SWAP]
vdd    252:48   0  500G  0 disk 
vde    252:64   0  700G  0 disk 
vdf    252:80   0  200G  0 disk 
vdg    252:96   0  800G  0 disk 
vdh    252:112  0  100G  0 disk 
vdi    252:128  0  600G  0 disk 
vdj    252:144  0  300G  0 disk 
vdk    252:160  0  400G  0 disk

Steps to Reproduce

  1. terraform apply
@kavya498 kavya498 added the service/VPC Infrastructure Issues related to the VPC Infrastructure label Mar 30, 2021
@SunithaGudisagarIBM
Copy link
Collaborator

Hi @sean-freeman,
volume is of type set in "ibm_is_instance", which will store unique value in unordered manner. All volumes will be attached to instance, Wanted to know why order of volume attachment should be in sequential manner? is there any requirement or usecase? otherwise order of showing the value shouldn't matter.. Please let us know..
Thank you

@sean-freeman
Copy link
Author

@SunithaGudisagarIBM sequence of volume attachment does not matter from Terraform operations perspective, but does matter from end-user functional perspective.

An end-user would anticipate that volumes are attached in a meaningful sequence. For example, multiple volumes for storing database data files (striped with LVM later) to create mount point /db2/data.

By allowing volumes to be attached in a sequence, may simplify end-user post deployment configuration steps.

Precedence exists for this in all Hypervisors, for example VMware which creates a VMDK file with a sequential numbering and attaches in the same sequence /dev/vdd etc etc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
service/VPC Infrastructure Issues related to the VPC Infrastructure
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants