Attaching an existing volume with Terraform
Is it possible to attach an existing volume to a Linode upon deployment? Also, what is the best way to obtain the volume ID? Alternatively, can the volume label be used?
1 Reply
Whether or not you're using Terraform to provision your environments, Volumes must be attached after-the-fact. As you alluded to, in order to attach an existing Volume, you'll need to obtain the Volume ID first via the API/CLI. From our API documentation, the following calls will work to obtain Volume details:
Using the API:
curl -H "Authorization: Bearer $TOKEN" \
https://api.linode.com/v4/volumes
Using the CLI:
linode-cli volumes list
Once you have the Volume ID, you'll want to use the provider's Linode Volume resource (linode_volume
) to manipulate the Volume itself. Here's an example of how to attach a Volume via Terraform's documentation with the Volume ID (volume_id
:
resource "linode_instance" "foo" {
region = "us-east"
type = "g6-nanode-1"
config {
label = "boot-existing-volume"
kernel = "linode/latest-64bit"
devices {
sda {
volume_id = "123"
}
}
}
}
Note in the above example that the Volume ID is required, as opposed to the Volume label (i.e. the name of the Volume). It's also worth mentioning per our Block Storage documentation, Volumes can only be attached to one Linode at a time.