Terraform ja infrastruktuuri koodina · Oppitunti

Null-resurssit ja triggerit

Tutustukaa `null_resource`-resurssiin, jolla voitte suorittaa komentoja, jotka eivät vastaa todellista pilviresurssia, ja käyttäkää triggereitä hallitsemaan provisionerien suoritusajankohtaa.

Oppitunti 3/411 vaihetta

Null-resurssit ja triggerit on ilmainen Terraform ja infrastruktuuri koodina-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Terraform ja infrastruktuuri koodina-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Terraform ja infrastruktuuri koodina-kurssilla on yhteensä 4 oppituntia.

Mikä on null_resource?

Terraformin null_resource on erityinen resurssityyppi, joka ei suoraan luo tai hallitse mitään infrastruktuuriobjektia pilvipalveluntarjoajallasi.

Sen sijaan se toimii paikkamerkkinä mielivaltaisten komentojen tai skriptien suorittamiselle. Sitä käytetään usein tehtäviin, jotka eivät kuulu tavanomaiseen resurssien provisiointiin.

Miksi käyttää null_resourcea?

Saatat pohtia, miksi tarvitset ”null”-resurssia. Se on erittäin hyödyllinen seuraavissa tilanteissa:

  • Paikallisten skriptien suorittaminen: Komentojen suorittaminen koneella, jolla Terraformia ajetaan (esimerkiksi määritystiedostojen valmistelemiseksi).
  • Käyttöönoton jälkeiset toimet: Asennus- tai siivoustehtävien suorittaminen todellisten resurssien provisioinnin jälkeen.
  • Ulkoisten ohjelmointirajapintojen käyttäminen: Tilanteissa, joissa tietylle palvelulle ei ole omaa Terraform-provideria.
  • Mukautettu logiikka: Mukautettujen vaiheiden orkestrointi, kun ne eivät liity tiettyyn pilviresurssiin.

null_resourcen perusrakenne

null_resource-lohko näyttää samalta kuin mikä tahansa muu Terraform-resurssi. Ilman provisionereita tai triggereitä se luo yksinkertaisesti ”null”-objektin Terraformin tilaan eikä tee mitään muuta.

Se yhdistetään yleensä provisionereihin komentojen suorittamista varten ja trigger-parametreihin määrittämään, milloin komennot suoritetaan.

Yksinkertainen null_resource-esimerkki

Tässä on null_resource mahdollisimman yksinkertaisena. Kun suoritat sille terraform apply-komennon, se luodaan tilaan, mutta mitään ulkoista toimintoa ei tapahdu.

Se on vain paikkamerkki, jota voi myöhemmin täydentää toiminnoilla.

resource "null_resource" "my_placeholder" {
  # This resource exists in state but performs no action.
  # It's ready to attach provisioners or triggers.
}

Provisionerit ja null_resource

null_resource-resurssin todellinen teho tulee esiin, kun yhdistät sen provisionereihin.

Provisionereilla voit suorittaa skriptejä tai komentoja Terraformia ajavalla koneella (local-exec) tai etäresurssissa itsessään (remote-exec, joskin jälkimmäistä käytetään harvemmin null_resource-resurssin kanssa).

Näin null_resource voi toimia toimintojen suorittajana.

Trigger-parametrien esittely

triggers on mielivaltaisten avain–arvo-parien kartta, joka määritetään null_resource-lohkossa.

Sen tarkoitus on kertoa Terraformille: ”Jos jokin tämän kartan arvo muuttuu, tämä null_resource ja sen provisionerit on suoritettava uudelleen.”

Tämä on olennaista, jotta null_resource reagoi infrastruktuurissa tapahtuviin muutoksiin.

Miten trigger-parametrit toimivat

Kun jokin triggers-kartan arvo muuttuu, Terraform havaitsee muutoksen null_resource-resurssissa.

terraform apply-komennon aikana Terraform:

  • tuhoaa olemassa olevan null_resource-resurssin, jos sellainen on olemassa
  • luo null_resource-resurssin uudelleen
  • suorittaa uudelleen kaikki siihen liittyvät provisionerit

Tämä mekanismi varmistaa, että mukautetut toiminnot suoritetaan vain olennaisten riippuvuuksien muuttuessa.

Esimerkki: trigger-parametrit ja local-exec

Tässä käytämme null_resource-resurssia määritystiedoston päivityksen simulointiin yksinkertaisen muuttujan perusteella. local-exec-provisioner suorittaa komennon, ja triggers varmistaa sen suorittamisen uudelleen, jos var.app_version muuttuu.

variable "app_version" {
  description = "The version of the application."
  type        = string
  default     = "1.0.0"
}

resource "null_resource" "update_config_file" {
  triggers = {
    version_change = var.app_version
  }

  provisioner "local-exec" {
    command = "echo 'Config updated for version: ${self.triggers.version_change}' > app_config.txt"
  }
}

Parhaat käytännöt ja vaihtoehdot

Vaikka null_resource on tehokas, käytä sitä harkiten:

  • Suosi providereita: Jos tehtävää varten on olemassa oma Terraform-provider tai -resurssi, käytä sitä.
  • Pidä toiminta idempotenttina: Varmista, että provisionereiden suorittamat skriptit voidaan suorittaa turvallisesti uudelleen useita kertoja ilman sivuvaikutuksia.
  • Vältä tilan hallintaa: Älä yritä hallita ulkoista tilaa null_resource-resurssilla. Sitä varten ovat etätilan taustajärjestelmät.
  • Harkitse external-tietolähdettä: Jos tarvitset monimutkaista ulkoista logiikkaa, joka palauttaa rakenteisia tietoja, external-tietolähde voi olla selkeämpi vaihtoehto.

Pikatarkistus: null-resurssit

Olet oppinut käyttämään null_resource-resurssia ja triggers-parametria. Testataan seuraavaksi, miten hyvin ymmärsit aiheen.

Kertaus: null ja trigger-parametrit

Olet tutustunut Terraformin null_resource-resurssin monipuolisuuteen. Se on tehokas työkalu mukautettujen komentojen ja skriptien suorittamiseen silloin, kun ne eivät vastaa konkreettisia pilviresursseja.

Opit myös triggers-parametrin, jonka avulla voit määrittää null_resource-resurssin sisäisiä riippuvuuksia ja varmistaa provisionereiden suorittamisen uudelleen aina näiden riippuvuuksien muuttuessa. Näin voit toteuttaa dynaamista ja muutoksiin reagoivaa mukautettua automaatiota infrastruktuurina koodissa.

Aloita maksutta

Opi Terraform ja infrastruktuuri koodina 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
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Null-resurssit ja triggerit” ilmainen?

Kyllä – oppitunnin ”Null-resurssit ja triggerit” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Terraform ja infrastruktuuri koodina-kurssin, päivitä CoddyKit PROhon. Terraform ja infrastruktuuri koodina-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Null-resurssit ja triggerit”?

Tutustukaa `null_resource`-resurssiin, jolla voitte suorittaa komentoja, jotka eivät vastaa todellista pilviresurssia, ja käyttäkää triggereitä hallitsemaan provisionerien suoritusajankohtaa. Harjoittelet Terraform ja infrastruktuuri koodina-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Terraform ja infrastruktuuri koodina-opiskelun?

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

Kuinka kauan ”Null-resurssit ja triggerit”-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ä Terraform ja infrastruktuuri koodina-oppitunnilla?

Kyllä. Jokainen Terraform ja infrastruktuuri koodina-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. Tietojen hakeminen tietolähteillä
  2. Local- ja remote-exec-provisionerit
  3. Null-resurssit ja triggerit
  4. Ulkoisen datan ja mallien käyttö
← Takaisin: Terraform ja infrastruktuuri koodina