Panoramica
Terraform è un tool che permette di creare risorse cloud e on-prem con file di configurazione human-readable che possono essere riutilizzati e condivisi. Possono essere utilizzati poi per eseguire il provisioning e gestire l'infrastruttura per tutto il ciclo di vita.
Come funziona?
Terraform crea e gestisce risorse su piattaforme cloud e altri servizi attraverso le loro API. I providers abilitano Terraform per lavorare con piattaforme o servizi con API accessibili.
Il workflow di Terraform è composto da tre passaggi:
Crea: puoi definire risorse, che possono essere tra multipli provider cloud e servizi. Per esempio, puoi creare una configurazione per distribuire un'applicazione su una macchina virtuale, in un Virtual Private Cloud VPC Pianifica: terraform crea un piano esecutivo descrivendo l'infrastruttura che verrà creata, aggiornata o distrutta basata sull'infrastruttura esistente e la tua configurazione. Applica: dopo l'approvazione, Terraform esegue le operazioni nell'ordine corretto, rispettando ogni dipendenza delle risorse. Per esempio, se aggiorni le proprietà di un VPC cambiando il numero di macchine virtuali in quest'ultimo, terraform ricreerà il VPC prima di scalare le macchine virtuali.
Terraform Provider per Seeweb
Configurare il Provider
Clona il repository in: $GOPATH/src/github.com/Seeweb/terraform-provider-seeweb
$ mkdir -p $GOPATH/src/github.com/Seeweb; cd $GOPATH/src/github.com/Seeweb
$ git clone git@github.com:Seeweb/terraform-provider-seeweb
Entra nella cartella del provider e configuralo
$ cd $GOPATH/src/github.com/Seeweb/terraform-provider-seeweb
$ export GOPRIVATE=github.com/Seeweb/* # This step is only necessary if the modules are kept private
$ make build
Usare il Provider configurato in locale
Per testare una versione di un Provider Terraform in locale, esegui questi comandi:
go build -o terraform-provider-seeweb
# The next location might be different in you machine so would need to check first
mv terraform-provider-seeweb ~/.terraform.d/plugins/registry.terraform.io/hashicorp/seeweb/0.0.1/darwin_arm64
In seguito potrai richiedere il provider seeweb, come nell'esempio :
Esempio
provider "seeweb" {} # Expecting Seeweb auth token in env var $SEEWEB_TOKEN
resource "seeweb_server" "testacc" {
plan = "ECS1"
location = "it-fr2"
image = "centos-7"
notes = "created with Terraform"
}
Testing
Per testare il provider, basta eseguire make test
$make test
Per poter eseguire la suite completa di test di accettazione, esegui make testacc
. Per eseguire i test bisogna aver impostato la variabile d'ambiente SEEWEB_TOKEN a un API Token valido.
Note
I test di accettazione creano risorse reali, e spesso costa eseguirli.
$ make testacc
Esegui un sottoinsieme specifico di test dal nome, usa l'opzione TESTARGS="-run TestName"
che esegue tutte le funzioni di test con "TestName" nel nome.
$ make testacc TESTARGS="-run TestAccSeewebServer"
Reference
https://registry.terraform.io/providers/Seeweb/seeweb/latest/docs