Automatizzare gli aggiornamenti dell’infrastruttura
Implementi workflow per pianificare, applicare e annullare in sicurezza le modifiche all’infrastruttura, con fasi di revisione e approvazione.
Automatizzare gli aggiornamenti dell’infrastruttura è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.
Perché automatizzare gli aggiornamenti IaC?
La gestione manuale dell'infrastruttura può essere lenta e soggetta a errori. Infrastructure as Code (IaC) è utile perché consente di definire l'infrastruttura tramite codice.
L'automazione degli aggiornamenti IaC con strumenti come GitHub Actions garantisce uniformità e rapidità e riduce gli errori umani. In questo modo l'infrastruttura corrisponde sempre alla relativa definizione.
Il ciclo di vita di un workflow IaC
L'automazione IaC segue un ciclo di vita ben definito: plan, apply e, in alcuni casi, destroy. Ogni fase può essere integrata nella pipeline CI/CD.
- Plan: esaminare le modifiche proposte senza applicarle.
- Apply: applicare le modifiche pianificate all'infrastruttura.
- Destroy: rimuovere le risorse dell'infrastruttura (usare con estrema cautela!).
GitHub Actions aiuta a gestire questi passaggi in modo sicuro.
Pianificare le modifiche con Terraform
Prima di apportare modifiche, è fondamentale sapere cosa accadrà. Il comando plan di Terraform consente di visualizzare in anteprima le modifiche all'infrastruttura.
Confronta lo stato desiderato (definito nel codice) con lo stato attuale dell'infrastruttura e mostra quali risorse verranno aggiunte, modificate o distrutte.
Provi a eseguire questi comandi in un semplice progetto Terraform:
echo "Initializing Terraform..."
terraform init
echo "Running terraform plan..."
terraform planWorkflow per `terraform plan`
Creiamo un workflow GitHub Actions che esegua automaticamente terraform plan ogni volta che il codice viene inviato al branch principale. In questo modo riceverà un feedback immediato sulle modifiche proposte.
L'output del plan può quindi essere esaminato direttamente nella Pull Request o nei log del workflow.
name: 'Terraform Plan'
on:
pull_request:
branches:
- main
jobs:
terraform:
name: 'Terraform Plan'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Plan
id: plan
run: terraform plan -no-colorApprovazione manuale con gli ambienti
L'applicazione automatica delle modifiche all'infrastruttura può essere rischiosa. Gli ambienti GitHub consentono di aggiungere fasi di approvazione manuale ai workflow.
È possibile definire ambienti, ad esempio "staging" e "production", e impostare regole come la richiesta di revisori specifici o periodi di attesa prima che un job di distribuzione possa procedere.
In questo modo si aggiunge un importante controllo di revisione umana prima delle operazioni sensibili.
Workflow per applicare le modifiche
Per applicare le modifiche in modo sicuro, configureremo un workflow destinato a un ambiente GitHub protetto. Il job verrà sospeso e attenderà l'approvazione dei membri del team designati.
Solo dopo l'approvazione verrà eseguito il comando terraform apply, che aggiornerà l'infrastruttura.
name: 'Terraform Apply'
on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to deploy to'
required: true
default: 'staging'
jobs:
terraform:
name: 'Terraform Apply'
runs-on: ubuntu-latest
environment: ${{ github.event.inputs.environment }} # Target environment for approval
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Apply
id: apply
run: terraform apply -auto-approveDistruggere l'infrastruttura in sicurezza
Il comando terraform destroy rimuove definitivamente tutte le risorse definite nella configurazione Terraform. Si tratta di un'operazione molto potente e potenzialmente pericolosa.
Dovrebbe essere usato solo in scenari specifici e controllati, ad esempio per smantellare un ambiente di test temporaneo. Verifichi sempre attentamente prima di procedere!
Non automatizzi mai un `destroy` senza solidi controlli manuali e molteplici conferme.
echo "Preparing to destroy infrastructure..."
terraform init
terraform plan -destroy
read -p "Are you absolutely sure you want to destroy ALL resources? (yes/no): " CONFIRM
if [ "$CONFIRM" = "yes" ]; then
echo "Destroying infrastructure..."
terraform destroy -auto-approve
else
echo "Destroy operation cancelled."
fiDistruzione controllata dell'infrastruttura
Anche per `destroy` è possibile usare gli ambienti GitHub come ulteriore livello di protezione. In questo modo si evita che qualcuno possa distruggere accidentalmente o intenzionalmente le risorse di produzione senza un'autorizzazione adeguata.
Il workflow dovrebbe richiedere un'approvazione e poter essere attivato solo manualmente, idealmente da ruoli specifici.
name: 'Terraform Destroy'
on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to destroy'
required: true
default: 'staging'
jobs:
terraform:
name: 'Terraform Destroy'
runs-on: ubuntu-latest
environment: ${{ github.event.inputs.environment }} # Target environment for approval
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Destroy
id: destroy
run: terraform destroy -auto-approveProcedure consigliate per l'automazione IaC
Per mantenere una pipeline IaC solida e sicura:
- Revisioni del codice: richieda sempre revisioni del codice per le modifiche IaC.
- Privilegio minimo: conceda ai token del workflow e agli account di servizio solo le autorizzazioni minime necessarie.
- Blocco dello stato: si assicuri che lo strumento IaC, come Terraform, utilizzi il blocco dello stato per impedire modifiche simultanee.
- Modifiche piccole e incrementali: eviti aggiornamenti dell'infrastruttura estesi e monolitici.
- Ambienti separati: utilizzi ambienti distinti (dev, staging, prod) con regole di approvazione diverse.
Verifica del workflow IaC
Ha imparato ad automatizzare gli aggiornamenti IaC pianificando, applicando e distruggendo le risorse. Ora verifichiamo la sua comprensione della sicurezza di questi processi.
Riepilogo: aggiornamenti IaC automatizzati
In questa lezione ha imparato ad automatizzare i workflow Infrastructure as Code usando GitHub Actions. Abbiamo trattato:
- L'esecuzione di
terraform planper visualizzare le modifiche in anteprima e in sicurezza. - L'uso degli ambienti GitHub per i controlli di approvazione manuale prima di applicare o distruggere l'infrastruttura.
- L'implementazione di workflow per operazioni controllate di
terraform applyeterraform destroy. - Le principali procedure consigliate per un'automazione IaC sicura e affidabile.
L'automazione IaC aiuta a gestire le risorse cloud in modo efficiente e con maggiore sicurezza!
Domande Frequenti
La lezione «Automatizzare gli aggiornamenti dell’infrastruttura» è gratuita?
Sì — il testo completo di «Automatizzare gli aggiornamenti dell’infrastruttura» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.
Cosa imparerò in «Automatizzare gli aggiornamenti dell’infrastruttura»?
Implementi workflow per pianificare, applicare e annullare in sicurezza le modifiche all’infrastruttura, con fasi di revisione e approvazione. Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare DevOps Bootcamp?
Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Automatizzare gli aggiornamenti dell’infrastruttura»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?
Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- IaC con Terraform e GitHub Actions
- Gestire le risorse cloud
- Automatizzare gli aggiornamenti dell’infrastruttura
- Gestire lo state di Terraform e i backend remoti