Skip to content

Frostmoln-migraatio Terraformilla

Jos hallitset infrastruktuuria jo Terraformilla toisessa pilvessä, fm-CLI voi muuntaa kyseisen konfiguraation Frostmoln-tarjoajalle puolestasi. Se kirjoittaa uudelleen sen, mikä kartoittuu siististi, ja — mikä tärkeintä — raportoi jokaisen resurssin ja attribuutin, jota Frostmoln ei vielä tue, jottei mitään katoa hiljaisesti.

Tuetut lähdepilvet: Amazon Web Services (AWS), Microsoft Azure, Google Cloud (GCP) ja Oracle Cloud Infrastructure (OCI).

Mitä muunnin tekee

  • Säilyttää rakenteesi — tiedosto- ja moduulirakenteesi säilyy; jokaisesta lähdetiedostosta tulee vastaava Frostmoln-konfiguraatio samaan paikkaan.
  • Kirjoittaa uudelleen sen, mikä kartoittuu siististi — instanssista tulee esimerkiksi frostmoln_instance, VPC:stä tulee frostmoln_vpc ja suojausryhmästä tulee frostmoln_security_group sekä sen erilliset säännöt.
  • Ei koskaan arvaa hiljaisesti — kun arvoa ei voida johtaa, alkuperäinen säilytetään ja havainto kirjataan; tukematon kohta kommentoidaan pois paikoilleen grep-haettavan merkin taakse sen sijaan, että se katoaisi.
  • Raportoi kaiken — ajo tulostaa yhteenvedon jokaisesta havainnosta vakavuusasteen mukaan ryhmiteltynä ja voi kirjoittaa täyden JSON-raportin.

Vain konfiguraatio: tilan (state) migraatio on rajattu ulkopuolelle. Muunnin lukee .tf-tiedostosi ja kirjoittaa uudet — se ei koskaan koske Terraform-tilaan eikä nykyiseen pilveesi.

Asennus

Muunnin on sisäänrakennettu fm-CLI:hin — katso fm CLI -opas asentaaksesi sen. Ylimääräistä lisäosaa ei tarvita.

Suorita se

Osoita komento sen repositorion juureen, joka sisältää olemassa olevan Terraformisi:

bash
fm terraform convert ./infra

Oletuksena tämä suoritetaan täysin offline-tilassa — tiliä eikä verkkoa tarvita — ja muunnettu konfiguraatio kirjoitetaan hakemistoon ./infra/frostmoln.

Osoita repositorion juureen yksittäisen ympäristöhakemiston sijaan. Jokainen .tf-tiedostoja sisältävä hakemisto muunnetaan yhdellä ajolla, ja moduulilähteet kuten ../modules/network ratkeavat vain, kun jaetut moduulit ovat muunnettavan puun sisällä. Kohdehakemisto suljetaan pois syötteestä, joten ajon toistaminen on turvallista.

Valitsimet

ValitsinMitä se tekee
--providerLähdepilvi: auto (oletus), aws, azure, gcp tai oci. auto tunnistaa sen konfiguraatiosta.
--outTulostushakemisto (oletus: <dir>/frostmoln).
--reportKirjoita täysi havaintoraportti JSON-muodossa tähän polkuun.
--onlineHae ajantasaiset luettelon arvot (flavors, images, alueet) todennetun Frostmoln-tilisi kautta sen sijaan, että jättäisit paikkamerkit. Vaatii fm auth login (tai API-avaimen).
--forceKorvaa ei-tyhjä tulostushakemisto.
bash
# Pakota lähdetarjoaja ja valitse tulostushakemisto
fm terraform convert ./infra --provider aws --out ./frostmoln

# Hae ajantasaiset luettelon arvot ja tallenna raportti
fm terraform convert ./infra --online --report report.json

--online-valitsimella muunnin hakee todelliset flavors-, images- ja aluearvot tililtäsi ja täyttää ne. Jos luettelo ei ole tavoitettavissa, se palautuu samoihin paikkamerkkeihin kuin offline-ajo ja tulostaa varoituksen — se ei koskaan anna muunnoksen epäonnistua tästä syystä.

Tulosteen lukeminen

Kaksi merkkiä osoittaa kaiken, mikä vaatii huomiotasi. Etsi ne komennolla grep:

bash
grep -rn FM-TODO    ./infra/frostmoln   # täytettävät luettelon arvot
grep -rn FM-CONVERT ./infra/frostmoln   # pois kommentoitu tukematon konfiguraatio
  • FM-TODO — paikkamerkki, jossa tarvitaan ajantasaista luettelon arvoa (flavor, image tai alue), mutta jota ei ratkaistu. Korvaa se todellisella arvolla; fm compute flavor list, fm compute image list ja tietolähde frostmoln_regions auttavat löytämään sellaisen. Ajaminen --online-valitsimella täyttää useimmat näistä automaattisesti.
  • FM-CONVERT — jotain, joka vaatii huomiotasi. Konfiguraatio, jota Frostmoln ei vielä tue, kommentoidaan pois paikoilleen (ei koskaan katoa), jotta voit päättää, mitä haluat tehdä sillä: poistaa sen tai luoda toiminnan uudelleen toisella tavalla. Merkintä lisätään myös lohkoihin, jotka jäivät toimimaan mutta kuuluvat yhä vanhaan pilveesi (katso alta), sekä arvoihin, jotka kannattaa tarkistaa.

Lohkot, jotka tarvitsevat yhä vanhan pilvesi

Kaikkia resursseja Frostmoln ei voi muuntaa — identiteetintarjoajan sovellusrekisteröinti, pilvikohtainen hätäuloskäynti, repositorio- tai putkimäärittely. Ne kopioidaan muuttumattomina ja toimivat edelleen, ja kukin merkitään ja lasketaan yhteenvedossa erikseen. Ne ovat se osa konfiguraatiotasi, jota migraatio ei saa yksin valmiiksi: päätä kunkin kohdalla, jääkö se paikalleen vai korvataanko se.

Mitä tulostehakemistoon päätyy

Tuloste sisältää Terraform-tiedostosi — .tf, .tf.json, .tfvars, .tfvars.json — sekä jokaisen tiedoston, jonka konfiguraatiosi todella lukee funktiolla file(), templatefile() tai vastaavalla: user_data-skriptin, cloud-init-mallin, käytäntödokumentin, julkisen SSH-avaimen. Ne kopioidaan sellaisenaan, koska muunnettu konfiguraatio viittaa niihin edelleen.

Mitään muuta lähdepuusta ei kopioida, ja jokainen ohitettu tiedosto luetellaan info-tason havaintona. Tulostehakemisto on uusi sijainti, jota et ehkä ole lisännyt gitignoreen ja jonka saatat hyvinkin jakaa kollegalle, joten muunnin ei hiljaisesti monista sinne editoriasetuksiasi, git-koukkujasi tai asiaankuulumattomia datatiedostoja.

Muuttujatiedostot kopioidaan, ja niissä on yleensä salaisuuksia

.tfvars-tiedostot kopioidaan sellaisenaan — muunnettu konfiguraatio tarvitsee niiden arvot — ja jokaisesta annetaan varoitus, joka nimeää tiedoston. Muuttujatiedostoissa säilytetään tavallisesti tunnuksia. CLI luo tulostehakemiston vain sinun luettavaksesi, mutta tarkista oikeudet uudelleen ennen kuin siirrät, committaat tai jaat sen.

Havainnot ja vakavuusasteet

Jokainen ajo tulostaa yhteenvedon, jossa kullakin havainnolla on vakavuusaste:

VakavuusasteMerkitys
blockerMuunnettu konfiguraatio ei läpäise komentoa terraform validate ennen kuin toimit — pakollinen arvo puuttuu tai rakennetta ei voida esittää.
warningMuunnettu, mutta toimintaerolla, joka kannattaa tarkistaa (esimerkiksi oletus, joka poikkeaa lähdepilvestä).
infoTiedoksi — ohitettu tiedosto, poistettu resurssi jolla ei ole vastinetta, ja niin edelleen.

Anna --report report.json saadaksesi täyden koneluettavan luettelon havainnoista.

Paluukoodit

KoodiMerkitys
0Muunnettu puhtaasti (info- ja warning-havainnot antavat silti arvon 0).
2Muunnettu, mutta blocker-havaintoja on — tuloste kirjoitetaan silti, mutta tarkista estot ennen käyttöönottoa.
1Käyttö-, I/O-, API- tai todennusvirhe — mitään käyttökelpoista ei kirjoitettu.

Estot hylkäävät validoinnin tarkoituksella

Estot kirjoitetaan merkkeinä, jotka saavat komennon terraform validate epäonnistumaan. Tämä on tahallista: et voi koskaan ajaa komentoa terraform apply suunnitelmalle, jonka muunnin jo tiesi puutteelliseksi. Ratkaise jokainen esto — täytä FM-TODO-arvot ja käsittele FM-CONVERT-lohkot — aja sitten terraform validate uudelleen, ja vasta sitten terraform plan.

Mitä muunnetaan, pilvittäin

Tarkka kartoitus — jokainen resurssityyppi ja attribuutti, ja mitä kullekin tapahtuu — julkaistaan matriisina pilveä kohti (englanniksi):

Katso matriisihakemisto kaikkien neljän osalta.

Seuraavat vaiheet

  1. Muunna: fm terraform convert ./infra.
  2. Ratkaise FM-TODO- ja FM-CONVERT-merkit tulosteessa.
  3. Aja terraform init && terraform validate tulostushakemistossa.
  4. Aja terraform plan ja tarkista se ennen komentoa terraform apply.

Aiheeseen liittyvää

Tavaramerkit

Frostmoln on riippumaton pilvipalveluntarjoaja ja kilpaileva vaihtoehto Amazon Web Servicesille, Microsoft Azurelle, Google Cloudille ja Oracle Cloudille. Frostmoln ei ole sidoksissa mihinkään niistä, eivätkä ne ole hyväksyneet tai sponsoroineet sitä. AWS, Azure, Google Cloud ja Oracle Cloud ovat omistajiensa tavaramerkkejä; kaikki viittaukset ovat nimeäviä ja tarkoitettu ainoastaan yhteentoimivuutta varten.