GleSYS Provider låter dig hantera resurser i GleSYS Cloud. I dagsläget finns det stöd för bland annat virtuella servrar (KVM och VMware), nätverk, lastbalansering och objektlagring.
På GitHub hittar du vårt repository för terraform-provider-glesys
och tillhörande dokumentation.
Du behöver behörighet till GleSYS Cloud:
Ett projekt i kontrollpanelen (det är här dina tjänster huserar)
En API-nyckel. För detta exempel använder vi följande rättigheter för Server-modulen i GleSYS API:
create
destroy
details
edit
list
Här kommer ett exempel där vi skapar en virtuell server som vi sedan uppdaterar diskstorleken på.
Du kan testa den här konfigurationen genom att skapa filen example.tf
i en katalog som du sedan kör följande kommandon ifrån:
terraform init
terraform plan
terraform apply
För att Terraform ska kunna kommunicera med GleSYS API behöver du ange ett projekt-ID (clXXXXX) från GleSYS Cloud som användarnamn och en API-nyckel som kan autentisera mot detta projekt.
I det här exemplet kommer vi att exportera miljövariabler i ett skal för att slippa ange dessa varje gång ett kommando kommunicerar med GleSYS API.
$ export GLESYS_USERID=CL12345
$ export GLESYS_TOKEN=abc12345XYZ
Vi börjar med att skapa en katalog för det här exemplet:
~ $ mkdir glesys-terraform
~ $ cd glesys-terraform
I katalogen skapar vi filen example.tf
som används när vi ska ladda ner GleSYS Provider:
example.tf
terraform {
required_providers {
glesys = {
source = "glesys/glesys"
version = "~> 0.4.6" # Här kan du ändra om du vill köra en särskild version av providern.
}
}
}
...
Med hjälp av kommandot terraform init
initierar du en nedladdning av GleSYS Provider:
glesys-terraform $ terraform init
Initializing the backend...
Initializing provider plugins...
- Finding latest version of glesys/glesys...
- Installing glesys/glesys v0.4.6...
- Installed glesys/glesys v0.4.6 (self-signed, key ID 4B5E1D585D113D4D)
Partner and community providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here:
https://www.terraform.io/docs/cli/plugins/signing.html
Terraform has made some changes to the provider dependency selections recorded
in the .terraform.lock.hcl file. Review those changes and commit them to your
version control system if they represent changes you intended to make.
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
Nu är du redo att skapa resurser i GleSYS Cloud!
För att skapa en server med resurser behöver vi lägga till ett antal parametrar i example.tf
. Vi rekommenderar att du läser igenom dokumentation för glesys_server, där du också kan se vilka parametrar som är nödvändiga och vilka som är valfria.
Om vi vill spinna upp en Cloud VPS (KVM) med Debian 10 i vårt datacenter i Stockholm och även skapa två användare (alice och bob), skulle våra parametrar se ut som nedan. Du kan också tydligt se hur mycket resurser vi har valt att tilldela servern.
resource "glesys_server" "kvm" {
count = 1
datacenter = "Stockholm"
memory = 1024
storage = 20
cpu = 1
bandwidth = 100
hostname = "www1"
platform = "KVM"
template = "debian-10"
user {
username = "alice"
publickeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINOCh8br7CwZDMGmINyJgBip943QXgkf7XdXrDMJf5Dl alice@example.com",
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOfN4dBsS2p1UX+DP6RicdxAYCCeRK8mzCldCS0W9A+5 alice@ws.example.com"
]
password = "hunter3!"
}
user {
username = "bob"
publickeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINOCh8br7CwZDMGmINyJgBip943QXgkf7XdXrDMJf5Dl bob@example.com"]
password = "hunter333!"
}
}
För att skapa servern behöver vi låta Terraform tolka vår konfigurationsfil och presentera vilka ändringar som behöver göras i din infrastruktur. Det gör du genom att köra terraform plan
.
Sen kör vi kommandot terraform apply
för att bygga infrastrukturen:
(12:14)$ 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:
# glesys_server.kvm[0] will be created
+ resource "glesys_server" "kvm" {
+ bandwidth = 100
+ cpu = 1
+ datacenter = "Stockholm"
+ hostname = "www1"
+ id = (known after apply)
+ ipv4_address = (known after apply)
+ ipv6_address = (known after apply)
+ memory = 1024
+ platform = "KVM"
+ storage = 20
+ template = "debian-10"
+ user {
+ password = "hunter3!"
+ publickeys = [
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINOCh8br7CwZDMGmINyJgBip943QXgkf7XdXrDMJf5Dl alice@example.com",
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOfN4dBsS2p1UX+DP6RicdxAYCCeRK8mzCldCS0W9A+5 alice@ws.example.com",
]
+ username = "alice"
}
+ user {
+ password = "hunter333!"
+ publickeys = [
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINOCh8br7CwZDMGmINyJgBip943QXgkf7XdXrDMJf5Dl bob@example.com",
]
+ username = "bob"
}
}
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
glesys_server.kvm[0]: Creating...
glesys_server.kvm[0]: Creation complete after 4s [id=kvm123456]
Efter en lyckad körning kan vi gå vidare till nästa steg.
Med kommandot terraform show
kan vi se det slutgiltiga resultatet av körningen. Detaljer som IPv4-/IPv6-adresser har nu returnerats från API:et.
(11:32)$ terraform show
resource "glesys_server" "kvm" {
bandwidth = 100
cpu = 1
datacenter = "Stockholm"
hostname = "www1"
id = "kvm123456"
ipv4_address = "46.246.39.1"
ipv6_address = "2a00:1a28:1410:5::1"
memory = 1024
platform = "KVM"
storage = 20
template = "debian-10"
user {
password = "hunter3!"
publickeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINOCh8br7CwZDMGmINyJgBip943QXgkf7XdXrDMJf5Dl alice@example.com",
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOfN4dBsS2p1UX+DP6RicdxAYCCeRK8mzCldCS0W9A+5 alice@ws.example.com",
]
username = "alice"
}
user {
password = "hunter333!"
publickeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINOCh8br7CwZDMGmINyJgBip943QXgkf7XdXrDMJf5Dl bob@example.com",
]
username = "bob"
}
}
För att ändra serverns hårddiskstorlek (storage) behöver du bara ändra värdet i example.tf
och köra terraform apply
på nytt. I exemplet har vi ändrat från 20 till 30 (GiB).
$ terraform apply
glesys_server.kvm[0]: Refreshing state... [id=kvm123456]
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
~ update in-place
Terraform will perform the following actions:
# glesys_server.kvm[0] will be updated in-place
~ resource "glesys_server" "kvm" {
id = "kvm123456"
~ storage = 20 -> 30
# (9 unchanged attributes hidden)
# (2 unchanged blocks hidden)
}
Plan: 0 to add, 1 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
glesys_server.kvm[0]: Modifying... [id=kvm123456]
glesys_server.kvm[0]: Modifications complete after 1s [id=kvm123456]
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
Alla är välkomna att bidra till projektet med nya funktioner, förbättringar och buggfixar. Läs mer om hur du går tillväga här
Kontakta oss gärna för mer information. Vi hjälper dig att komma fram till den bästa lösningen för dina behov.