Automatisering af infrastrukturændringer
Implementér workflows til sikker planlægning, anvendelse og nedrivning af infrastrukturændringer med trin til gennemgang og godkendelse.
Automatisering af infrastrukturændringer er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Hvorfor automatisere IaC-opdateringer?
Manuel håndtering af infrastruktur kan være langsom og fejlbehæftet. Infrastruktur som kode (IaC) hjælper ved at definere din infrastruktur i kode.
Automatisering af IaC-opdateringer med værktøjer som GitHub Actions giver ensartethed og højere hastighed og reducerer menneskelige fejl. Det sikrer, at din infrastruktur altid stemmer overens med dens definition.
IaC-arbejdsgangens livscyklus
Automatisering af IaC følger en klar livscyklus: plan, apply og nogle gange destroy. Hvert trin kan integreres i dit CI/CD-forløb.
- Plan: Gennemgå foreslåede ændringer uden at foretage dem.
- Apply: Implementer de planlagte ændringer i din infrastruktur.
- Destroy: Fjern infrastrukturressourcer (brug dette med største forsigtighed!).
GitHub Actions hjælper med at håndtere disse trin sikkert.
Planlægning af ændringer med Terraform
Før du foretager ændringer, er det afgørende at vide, hvad der vil ske. Terraforms plan-kommando hjælper dig med at se en forhåndsvisning af ændringer i infrastrukturen.
Den sammenligner den ønskede tilstand (fra koden) med den aktuelle tilstand for din infrastruktur og viser, hvilke ressourcer der vil blive tilføjet, ændret eller fjernet.
Prøv at køre disse kommandoer i et enkelt Terraform-projekt:
echo "Initializing Terraform..."
terraform init
echo "Running terraform plan..."
terraform planArbejdsgang for `terraform plan`
Lad os oprette en GitHub Actions-arbejdsgang, der automatisk kører terraform plan, hver gang kode pushes til din hovedgren. Det giver dig øjeblikkelig feedback på foreslåede ændringer.
Resultatet af planen kan derefter gennemgås direkte i Pull Request'en eller i arbejdsgangens logfiler.
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-colorManuel godkendelse med miljøer
Det kan være risikabelt at anvende infrastrukturændringer automatisk. GitHub Environments giver mulighed for at tilføje trin med manuel godkendelse i dine arbejdsgange.
Du kan definere miljøer (f.eks. "staging" og "production") og angive regler som krav om bestemte godkendere eller ventetider, før et implementeringsjob kan fortsætte.
Det tilføjer en afgørende menneskelig kontrol før følsomme handlinger.
Arbejdsgang til anvendelse af ændringer
For at anvende ændringer sikkert konfigurerer vi en arbejdsgang, der er rettet mod et beskyttet GitHub Environment. Jobbet sættes på pause og venter på godkendelse fra udpegede teammedlemmer.
Først efter godkendelsen udføres kommandoen terraform apply, som opdaterer din infrastruktur.
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-approveSikker fjernelse af infrastruktur
Kommandoen terraform destroy fjerner permanent alle ressourcer, der er defineret i din Terraform-konfiguration. Det er en meget kraftfuld og potentielt farlig handling.
Den bør kun bruges i specifikke, kontrollerede scenarier, f.eks. når et midlertidigt testmiljø skal fjernes. Kontrollér altid alt en ekstra gang, før du fortsætter!
Automatisér aldrig en `destroy` uden stærke manuelle kontrolpunkter og flere bekræftelser.
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."
fiKontrolleret fjernelse af infrastruktur
Selv for `destroy` kan vi bruge GitHub Environments som et ekstra beskyttelseslag. Det sikrer, at ingen ved et uheld eller med vilje kan fjerne produktionsressourcer uden den rette godkendelse.
Arbejdsgangen bør kræve godkendelse og kun kunne udløses manuelt, helst af bestemte roller.
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-approveBedste praksisser for IaC-automatisering
Sådan vedligeholder du et robust og sikkert IaC-forløb:
- Kodegennemgange: Kræv altid kodegennemgange af IaC-ændringer.
- Mindst mulige rettigheder: Giv arbejdsgangstokens og tjenestekonti kun de nødvendige minimumsrettigheder.
- Låsning af tilstand: Sørg for, at dit IaC-værktøj (f.eks. Terraform) bruger låsning af tilstand for at forhindre samtidige ændringer.
- Små, trinvise ændringer: Undgå store, monolitiske infrastrukturændringer.
- Adskilte miljøer: Brug separate miljøer (dev, staging, prod) med forskellige godkendelsesregler.
Kontrol af IaC-arbejdsgangen
Du har lært om automatisering af IaC-opdateringer ved at planlægge, anvende og fjerne ressourcer. Nu kan du teste din forståelse af, hvordan disse processer sikres.
Opsummering: Automatiserede IaC-opdateringer
I denne lektion har du lært at automatisere dine Infrastructure as Code-arbejdsgange ved hjælp af GitHub Actions. Vi har gennemgået:
- Hvordan du kører
terraform planfor at se ændringer sikkert på forhånd. - Hvordan du bruger GitHub Environments til manuelle godkendelseskontrolpunkter, før infrastruktur anvendes eller fjernes.
- Hvordan du implementerer arbejdsgange til kontrollerede handlinger med
terraform applyogterraform destroy. - Vigtige bedste praksisser for sikker og pålidelig IaC-automatisering.
Automatisering af IaC hjælper dig med at håndtere dine cloudressourcer effektivt og med større sikkerhed!
Lær Intensiv DevOps-uddannelse med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 142
- Lektioner
- 568
Ofte stillede spørgsmål
Er lektionen “Automatisering af infrastrukturændringer” gratis?
Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Automatisering af infrastrukturændringer”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Automatisering af infrastrukturændringer”?
Implementér workflows til sikker planlægning, anvendelse og nedrivning af infrastrukturændringer med trin til gennemgang og godkendelse. Du øver dig i Intensiv DevOps-uddannelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Intensiv DevOps-uddannelse?
Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Automatisering af infrastrukturændringer”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Intensiv DevOps-uddannelse-lektion?
Ja. Alle Intensiv DevOps-uddannelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- IaC med Terraform og GitHub Actions
- Administration af cloudressourcer
- Automatisering af infrastrukturændringer
- Håndtering af Terraform-state og remote backends