Se segui il mondo del Cloud, avrai sicuramente sentito parlare di Infrastructure as Code (IaC). Di solito, questo significa scrivere file YAML o utilizzare linguaggi specifici come HCL (Terraform). Ma cosa succede se potessi usare un vero linguaggio di programmazione come Python per gestire i tuoi server?
Oggi mettiamo alla prova Pulumi, uno dei principali competitor di Terraform, creando un semplice ambiente AWS.
Perché Pulumi?
A differenza di Terraform, Pulumi ti permette di usare cicli for, istruzioni if, classi e tutte le librerie standard di Python per definire la tua infrastruttura. Questo rende il testing e l'integrazione molto più naturali per uno sviluppatore.
1. Il Setup Iniziale
Per iniziare, assicurati di avere installato la Pulumi CLI e configurato le tue credenziali AWS.
Bash
# Crea una nuova directory per il progetto
mkdir pulumi-aws-test && cd pulumi-aws-test
# Inizializza un nuovo progetto Pulumi in Python
pulumi new aws-python
2. Il Codice: Creiamo un Bucket S3 e un Server Statico
Modifichiamo il file __main__.py. In questo test, non ci limiteremo a creare un bucket, ma imposteremo anche una policy per renderlo un sito web statico.
Python
import pulumi
from pulumi_aws import s3
# Creazione di un Bucket S3
web_bucket = s3.BucketV2("mio-bucket-test",
website=s3.BucketV2WebsiteArgs(
index_document="index.html",
))
# Carichiamo un file index.html nel bucket
content = "<h1>Benvenuti nel mio test Pulumi + Python!</h1>"
index_file = s3.BucketObject("index.html",
bucket=web_bucket.id,
content=content,
content_type="text/html",
key="index.html")
# Rendiamo il bucket pubblico (Nota: nelle VPC moderne servono permessi espliciti)
public_access_block = s3.BucketPublicAccessBlock("public-access",
bucket=web_bucket.id,
block_public_acls=False,
block_public_policy=False,
ignore_public_acls=False,
restrict_public_buckets=False)
# Export dell'URL del sito
pulumi.export('bucket_endpoint', web_bucket.website_endpoint)
3. Deploy dell'Infrastruttura
Una volta scritto il codice, il comando magico è:
Bash
pulumi up
Pulumi ti mostrerà una preview delle risorse che verranno create. Conferma con "yes" e in pochi secondi avrai il tuo endpoint AWS pronto all'uso.
Conclusioni del Test
Cosa abbiamo imparato da questo test?
- Velocità: Pulumi è estremamente rapido nel setup.
- Potenza: Usare
pulumi.exportpermette di ottenere output immediati (come l'URL del sito) che possiamo usare in altri script. - Flessibilità: La gestione dei tipi in Python riduce drasticamente gli errori di sintassi comuni nei file YAML.
Se sei uno sviluppatore Python, Pulumi potrebbe essere la scelta definitiva per smettere di combattere con i file di configurazione e iniziare a "programmare" davvero il tuo cloud.
