Skip to main content

Creating resources

Create the Access Keys​

To start deploying with Terraform on NodeShift you need to get Access Keys (Please the doc how to do it).

Creating a provider​

In Terraform, you specify "providers" for your cloud environment. A "provider" (such as NodeShift) hosts your infrastructure resources.

Create a file named provider.tf with the following content:

# Define providers and set versions
terraform {
required_providers {
nodeshift = {
source = "deweb-services/nodeshift"
}
}
}

provider "nodeshift" {
access_key = "ACCESS_KEY"
secret_access_key = "SECRET_ACCESS_KEY"
}

You now need to initialize your workspace in order to download the provider plugins:

terraform init

Creating an instance​

In Terraform, a "resource" is a component of your infrastructure. This can be an Compute VM, GPU VM, storage bucket or network delivered by the NodeShift provider.

For example purposes, we will create a simple GPU VM instance on latest ubuntu with RTX 3080 gpu. Add the following lines to a file named example_instance.tf:

# Creating the instance
resource "nodeshift_gpu" "example_terraform_instance" {
gpu_name = "RTX 3080"
image = "ubuntu:latest"
region = "Europe"
ssh_key = "ssh-rsa ..."
gpu_count = 1
}

To see what will be added/created/deleted in your infrastructure, you can execute:

terraform plan

You can enter the following command to create your first instance:

terraform apply

Output should be like this:

➜  terraform apply         

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create

Terraform will perform the following actions:

# nodeshift_gpu.example_terraform_instance will be created
+ resource "nodeshift_gpu" "example_terraform_instance" {
+ gpu_count = 1
+ gpu_name = "RTX 3080"
+ image = "ubuntu:latest"
+ region = "Europe"
+ ssh_key = "ssh-ed25519 AAAA..."
+ uuid = (known after apply)
}

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.

Enter a value: yes

nodeshift_gpu.example_terraform_instance: Creating...
nodeshift_gpu.example_terraform_instance: Creation complete after 3s

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Now, log in to the NodeShift Platform and go to the GPU VMs section. As you can see, your GPU instance is created.

info

Note that creating a second, identical instance with terraform apply will not work. Terraform applies change only if it recognises a difference in your configuration files or a new file.

Deleting an infrastructure​

To remove every resource created through Terraform, you can enter the following command:

terraform destroy