Automazione dei test di infrastruttura AWS con Terratest

Le organizzazioni che adottano l’Infrastructure as Code (IaC) su AWS spesso affrontano difficoltà nel garantire che la loro infrastruttura non solo sia correttamente provisionata, ma anche funzionante come previsto una volta distribuita. Anche le più piccole misconfigurazioni possono portare a costosi tempi di inattività, vulnerabilità di sicurezza o problemi di prestazioni.

Le metodologie di testing tradizionali — come l’ispezione manuale delle risorse o il fare affidamento esclusivamente sull’analisi statica del codice — non offrono una sufficiente fiducia per gli ambienti di produzione. C’è un bisogno urgente di un modo automatizzato e affidabile per convalidare le modifiche all’infrastruttura AWS prima che vengano messe in produzione.

Soluzione

Terratest fornisce un framework di testing automatizzato scritto in Go, progettato specificamente per testare il codice infrastrutturale in ambienti cloud reali come AWS. Deployando, verificando e distruggendo programmaticamente le risorse, Terratest colma il divario tra la scrittura di IaC (ad es., Terraform) e l’implementazione sicura delle modifiche. Ecco come funziona:

Di seguito è riportata una guida dettagliata su come effettuare il testing dell’infrastruttura AWS utilizzando Terratest con Terraform, insieme a frammenti di codice di esempio in Go. Questo flusso di lavoro ti aiuterà a provisionare risorse AWS, eseguire test su di esse per garantire che funzionino come previsto e poi distruggere tutto automaticamente.

Requisiti

Installa Terraform

Scarica e installa Terraform dal sito ufficiale.

Installa Go

Terratest è scritto in Go, quindi avrai bisogno di avere Go installato. Scarica Go dal sito ufficiale.

Configura le Credenziali AWS

Assicurati che le tue credenziali AWS siano configurate (ad es., tramite ~/.aws/credentials o variabili di ambiente come AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY).

Inizializza un Modulo Go

Nella tua directory di progetto, esegui:

Shell

 

Aggiungi Terratest al tuo go.mod

Nella directory del tuo progetto/repo, esegui:

Shell

 

Esempio di Configurazione Terraform

Crea una semplice configurazione Terraform che avvia un’istanza EC2 di AWS. Metti i seguenti file in una directory chiamata aws_ec2_example (o qualsiasi nome tu preferisca).

Salvalo come main.tf per riferimento.

Shell

 

Successivamente, variables.tf:

Shell

 

Snippet di Codice Terratest

Crea un file di test Go in una directory chiamata test (o puoi chiamarlo come vuoi, ma test è convenzionale). Ad esempio, aws_ec2_test.go:

Shell

 

Cosa Fa Questo Test

  • Inizializza e applica la configurazione di Terraform in ../aws_ec2_example.
  • Distribuisce un’istanza EC2 con l’AMI specificato in us-east-1.
  • Cattura l’output instance_id di Terraform.
  • Verifica che l’ID dell’istanza non sia vuoto utilizzando la libreria di asserzione di Testify.
  • Distrugge le risorse alla fine del test per evitare costi continuativi.

Esecuzione dei Test

  • Naviga nella directory contenente il tuo file di test Go (ad esempio, la directory di test).
  • Esegui il seguente comando:
Shell

 

  • Osserva l’output:
    • Vedrai Terraform inizializzare e applicare la tua infrastruttura AWS.
    • Dopo che le affermazioni del test sono superate, Terraform distruggerà le risorse.

Conclusione

Seguendo questi passaggi, puoi integrare Terratest nel tuo flusso di lavoro AWS IaC per:

  • Provisionare risorse AWS utilizzando Terraform.
  • Testarle in modo programmatico con test basati su Go.
  • Validare che la tua infrastruttura sia configurata correttamente e funzioni come previsto.
  • Smantellare automaticamente, assicurandoti di non incorrere in costi AWS non necessari e mantenendo un ambiente pulito per esecuzioni di test ripetute.

Source:
https://dzone.com/articles/terratest-for-aws