DevOps-bootcamp · Oppitunti

Infrastruktuuripäivitysten automatisointi

Toteuttakaa työnkulkuja infrastruktuurimuutosten turvalliseen suunnitteluun, käyttöönottoon ja poistamiseen tarkistus- ja hyväksyntävaiheineen.

Oppitunti 3/411 vaihetta

Infrastruktuuripäivitysten automatisointi on ilmainen DevOps-bootcamp-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu DevOps-bootcamp-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.

Miksi IaC-päivitykset kannattaa automatisoida?

Infrastruktuurin manuaalinen hallinta voi olla hidasta ja altista virheille. Infrastruktuuri koodina (IaC) auttaa määrittelemään infrastruktuurin koodin avulla.

IaC-päivitysten automatisointi GitHub Actionsin kaltaisilla työkaluilla tuo yhdenmukaisuutta ja nopeutta sekä vähentää inhimillisiä virheitä. Se varmistaa, että infrastruktuurinne vastaa aina määritelmäänsä.

IaC-työnkulun elinkaari

IaC:n automatisointi noudattaa selkeää elinkaarta: plan, apply ja toisinaan destroy. Jokainen vaihe voidaan integroida CI/CD-putkeen.

  • Plan: Tarkastelkaa ehdotettuja muutoksia ottamatta niitä käyttöön.
  • Apply: Toteuttakaa suunnitellut muutokset infrastruktuurissanne.
  • Destroy: Poistakaa infrastruktuurin resurssit (käyttäkää erittäin varoen!).

GitHub Actions auttaa hallitsemaan näitä vaiheita turvallisesti.

Muutosten suunnittelu Terraformilla

Ennen muutosten tekemistä on tärkeää tietää, mitä tapahtuu. Terraformin plan-komennon avulla voitte esikatsella infrastruktuurin muutoksia.

Se vertaa koodissa määritettyä tavoitetilaa infrastruktuurinne nykytilaan ja näyttää, mitkä resurssit lisätään, joita muutetaan tai jotka tuhotaan.

Kokeilkaa näiden komentojen suorittamista yksinkertaisessa Terraform-projektissa:

echo "Initializing Terraform..."
terraform init

echo "Running terraform plan..."
terraform plan

Työnkulku komennolle `terraform plan`

Luodaan GitHub Actions -työnkulku, joka suorittaa terraform plan -komennon automaattisesti aina, kun koodia työnnetään main-haaraan. Näin saatte välittömästi palautetta ehdotetuista muutoksista.

Plan-komennon tuloste voidaan sen jälkeen tarkistaa suoraan Pull Requestissa tai työnkulun lokeissa.

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-color

Manuaalinen hyväksyntä ympäristöjen avulla

Infrastruktuurin muutosten automaattinen käyttöönotto voi olla riskialtista. GitHub Environments tarjoaa tavan lisätä työnkulkuihin manuaalisen hyväksynnän vaiheita.

Voitte määrittää ympäristöjä (esim. "staging" ja "production") sekä sääntöjä, kuten tiettyjen tarkastajien vaatimisen tai odotusajan ennen kuin käyttöönotosta vastaava työ voi jatkua.

Tämä lisää kriittisen ihmisen suorittaman tarkistuksen portin ennen arkaluontoisia toimintoja.

Muutosten käyttöönottotyönkulku

Muutosten turvallista käyttöönottoa varten määritämme työnkulun, joka kohdistuu suojattuun GitHub Environment -ympäristöön. Työ keskeytyy ja odottaa nimettyjen tiimin jäsenten hyväksyntää.

Vasta hyväksynnän jälkeen terraform apply -komento suoritetaan ja infrastruktuurinne päivitetään.

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-approve

Infrastruktuurin turvallinen tuhoaminen

terraform destroy -komento poistaa pysyvästi kaikki Terraform-määrityksessä määritetyt resurssit. Tämä on erittäin tehokas ja mahdollisesti vaarallinen toiminto.

Sitä tulisi käyttää vain erityisissä ja hallituissa tilanteissa, kuten väliaikaisen testiympäristön purkamiseen. Tarkistakaa aina kaikki tiedot vielä kerran ennen jatkamista!

Älkää koskaan automatisoiko komentoa `destroy` ilman vahvoja manuaalisia suojauksia ja useita vahvistuksia.

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."
fi

Infrastruktuurin hallittu tuhoaminen

Myös `destroy`-komennossa voimme hyödyntää GitHub Environments -ympäristöjä lisäsuojana. Näin varmistetaan, ettei kukaan voi vahingossa tai pahantahtoisesti tuhota tuotantoresursseja ilman asianmukaista valtuutusta.

Työnkulkuun on vaadittava hyväksyntä, ja sen käynnistämisen tulee olla mahdollista vain manuaalisesti, mieluiten tiettyjen roolien toimesta.

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-approve

IaC-automaation parhaat käytännöt

Vankan ja turvallisen IaC-putken ylläpitämiseksi:

  • Koodikatselmoinnit: Edellyttäkää aina IaC-muutoksilta koodikatselmointia.
  • Vähimpien oikeuksien periaate: Myöntäkää työnkulun tokeneille ja palvelutileille vain välttämättömät vähimmäisoikeudet.
  • Tilan lukitus: Varmistakaa, että IaC-työkalu (kuten Terraform) käyttää tilalukitusta samanaikaisten muutosten estämiseen.
  • Pienet, vaiheittaiset muutokset: Välttäkää suuria, monoliittisia infrastruktuuripäivityksiä.
  • Erilliset ympäristöt: Käyttäkää erillisiä ympäristöjä (dev, staging, prod), joilla on erilaiset hyväksyntäsäännöt.

IaC-työnkulun testi

Olette oppineet automatisoimaan IaC-päivityksiä suunnittelemalla muutoksia, ottamalla niitä käyttöön ja tuhoamalla resursseja. Testataan nyt ymmärrystänne näiden prosessien suojaamisesta.

Kertaus: automatisoidut IaC-päivitykset

Tässä oppitunnissa opitte automatisoimaan infrastruktuuri koodina -työnkulkuja GitHub Actionsin avulla. Käsittelimme seuraavia aiheita:

  • terraform plan -komennon suorittaminen muutosten turvallista esikatselua varten.
  • GitHub Environments -ympäristöjen käyttäminen manuaalisina hyväksyntäportteina ennen infrastruktuurin käyttöönottoa tai tuhoamista.
  • Työnkulkujen toteuttaminen hallittuja terraform apply- ja terraform destroy -toimintoja varten.
  • Turvallisen ja luotettavan IaC-automaation keskeiset parhaat käytännöt.

IaC:n automatisointi auttaa hallitsemaan pilviresurssejanne tehokkaasti ja luottavaisin mielin!

Aloita maksutta

Opi DevOps-bootcamp tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
142
Oppitunnit
568

Usein kysytyt kysymykset

Onko oppitunti ”Infrastruktuuripäivitysten automatisointi” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa DevOps-bootcamp-oppimispolun 3 oppituntia, myös oppitunnin “Infrastruktuuripäivitysten automatisointi”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Infrastruktuuripäivitysten automatisointi”?

Toteuttakaa työnkulkuja infrastruktuurimuutosten turvalliseen suunnitteluun, käyttöönottoon ja poistamiseen tarkistus- ja hyväksyntävaiheineen. Harjoittelet DevOps-bootcamp-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni DevOps-bootcamp-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin DevOps-bootcamp-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Infrastruktuuripäivitysten automatisointi”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä DevOps-bootcamp-oppitunnilla?

Kyllä. Jokainen DevOps-bootcamp-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. IaC Terraformilla ja GitHub Actionsilla
  2. Pilviresurssien hallinta
  3. Infrastruktuuripäivitysten automatisointi
  4. Terraform-tilan ja etätaustajärjestelmien hallinta
← Takaisin: DevOps-bootcamp