How to Create a GandiCloud VPS with Terraform

This page will show you how to quickly create a GandiCloud VPS with a Terraform manifest.

Prerequisites

  • Set the environment variables of your Openstack project/Gandi Organization for Openstack CLI
  • Have a valid SSH Keypair in your GandiCloud Keyring
  • Install Terraform locally on your PC

Create The Terraform manifest

First, create an empty directory, such as “Terraform_gandi/”.

In this directoy create a new file named “main.tf”, then copy and paste the lines below into the file.

This Terraform manifest will create an Ubuntu test server that you can access with your SSH key.

terraform {
required_version = ">= 0.14.0"
  required_providers {
    openstack = {
      source  = "terraform-provider-openstack/openstack"
      version = "~> 1.35.0"
    }
  }
}

provider "openstack" {
  auth_url = "https://keystone.sd6.api.gandi.net:5000/v3"
  region = "FR-SD6"
}

variable "SSH_PUBKEY" {
  type = string
}

resource "openstack_compute_instance_v2" "tf_server" {
  name = "tf-test-server"
  key_pair = "${var.SSH_PUBKEY}"
  flavor_name = "V-R1"
  security_groups = ["default"]
  power_state = "active"
  network {
    name = "public"
}

  block_device {
    uuid = "47edd0a0-23ce-4ce5-9168-36de68990d1b"
    source_type           = "image"
    volume_size           = 25
    boot_index            = 0
    destination_type      = "volume"
    delete_on_termination = true
  }
}

output "IP_v4" {
  value = openstack_compute_instance_v2.tf_server.access_ip_v4
}

This Terraform manifest will create:

  • A GandiCloud V-R1 Server
  • Using Ubuntu 20.04
  • Accessible through SSH (with a key-pair already defined)

Note

For this Terraform manifest to work properly the following environment variables must be exported: TF_VAR_SSH_PUBKEY : the name of your Openstack SSH KEYPAIR that will be associated to the server

If you did not export the variable it will ask you a value before the execution.

Run the Terraform manifest

The first time you run a Terraform manifest, first run the following command to initialize the Terraform:

terraform init

Then:

terraform plan

Check there is no error then launch the Terraform plan with:

terraform apply

Finally the output will return you the public v4 IP of the created server. You can then connect use SSH to connect to this server using the standard ‘ubuntu’ user.

ssh ubuntu@<Your-server-IPv4>