Skip to content

Migrere til Frostmoln med Terraform

Hvis du allerede administrerer infrastruktur med Terraform i en annen sky, kan fm-CLI-en konvertere den konfigurasjonen til Frostmoln-provideren for deg. Den skriver om det som lar seg mappe rent, og — viktigst av alt — rapporterer hver ressurs og hvert attributt Frostmoln ennå ikke støtter, slik at ingenting forsvinner i det stille.

Kildeskyer som støttes: Amazon Web Services (AWS), Microsoft Azure, Google Cloud (GCP) og Oracle Cloud Infrastructure (OCI).

Hva konverteraren gjør

  • Bevarer strukturen din — fil- og modulstrukturen beholdes; hver kildefil blir tilsvarende Frostmoln-konfigurasjon på samme sted.
  • Skriver om det som mappes rent — en instans blir for eksempel en frostmoln_instance, en VPC blir en frostmoln_vpc, og en sikkerhetsgruppe blir en frostmoln_security_group pluss de frittstående reglene.
  • Gjetter aldri i det stille — der en verdi ikke kan utledes, beholdes originalen og et funn registreres; noe som ikke støttes kommenteres ut på stedet bak en grep-bar markør i stedet for å forsvinne.
  • Rapporterer alt — kjøringen skriver ut et sammendrag av hvert funn gruppert etter alvorlighetsgrad, og kan skrive en fullstendig JSON-rapport.

Kun konfigurasjon: migrering av state er utenfor omfanget. Konverteraren leser .tf-filene dine og skriver nye — den rører aldri Terraform-state eller den eksisterende skyen din.

Installasjon

Konverteraren er innebygd i fm-CLI-en — se fm CLI-guiden for å installere den. Ingen ekstra plugin kreves.

Kjør den

Pek kommandoen mot roten av repositoriet som inneholder din eksisterende Terraform:

bash
fm terraform convert ./infra

Som standard kjøres dette helt offline — ingen konto og ingen nettverk kreves — og den konverterte konfigurasjonen skrives til ./infra/frostmoln.

Pek på roten av repositoriet heller enn på en enkelt miljøkatalog. Hver katalog med .tf-filer konverteres i samme kjøring, og modulkilder som ../modules/network lar seg bare løse opp når de delte modulene ligger inne i treet som konverteres. Utdatakatalogen utelates fra inndataene, så det er trygt å kjøre på nytt.

Flagg

FlaggHva det gjør
--providerKildesky: auto (standard), aws, azure, gcp eller oci. auto oppdager den fra konfigurasjonen.
--outUtdatakatalog (standard: <dir>/frostmoln).
--reportSkriv den fullstendige rapporten som JSON til denne stien.
--onlineSlå opp gjeldende katalogverdier (flavors, images, regioner) via den autentiserte Frostmoln-kontoen din i stedet for å la plassholdere stå igjen. Krever fm auth login (eller en API-nøkkel).
--forceOverskriv en ikke-tom utdatakatalog.
bash
# Tving kildeprovideren og velg en utdatakatalog
fm terraform convert ./infra --provider aws --out ./frostmoln

# Slå opp gjeldende katalogverdier og lagre rapporten
fm terraform convert ./infra --online --report report.json

Med --online slår konverteraren opp virkelige flavors, images og regioner fra kontoen din og fyller dem inn. Hvis katalogen ikke er tilgjengelig, faller den tilbake til de samme plassholderne som en offline-kjøring og skriver en advarsel — den lar aldri konverteringen mislykkes av den grunn.

Lese utdataene

To markører flagger alt som krever din oppmerksomhet. Finn dem med grep:

bash
grep -rn FM-TODO    ./infra/frostmoln   # katalogverdier å fylle inn
grep -rn FM-CONVERT ./infra/frostmoln   # utkommentert konfigurasjon som ikke støttes
  • FM-TODO — en plassholder der en gjeldende katalogverdi trengs (en flavor, image eller region) men ikke ble slått opp. Erstatt den med en virkelig verdi; fm compute flavor list, fm compute image list og datakilden frostmoln_regions hjelper deg å finne en. Å kjøre med --online fyller inn de fleste av disse automatisk.
  • FM-CONVERT — noe som trenger oppmerksomheten din. Konfigurasjon som Frostmoln ennå ikke støtter, kommenteres ut på stedet (forsvinner aldri) slik at du kan bestemme hva du vil gjøre med den: fjerne den, eller gjenskape oppførselen på en annen måte. Markøren settes også på blokker som er latt stå fungerende, men fortsatt hører til den gamle skyen din (se nedenfor), og på verdier det er verdt å dobbeltsjekke.

Blokker som fortsatt trenger den gamle skyen din

Noen ressurser er ikke Frostmolns å konvertere — en identitetsleverandørs applikasjonsregistrering, en skyspesifikk nødutgang, en repository- eller pipeline-definisjon. De kopieres uendret og virker fortsatt, og hver av dem merkes og telles separat i oppsummeringen. Det er den delen av konfigurasjonen din som en migrering ikke blir ferdig med på egen hånd: avgjør for hver enkelt om den skal bli der den er, eller erstattes.

Hva som havner i utdatakatalogen

Utdata inneholder din Terraform — .tf, .tf.json, .tfvars, .tfvars.json — pluss enhver fil som konfigurasjonen din faktisk leser med file(), templatefile() eller en beslektet funksjon: et user_data-skript, en cloud-init-mal, et policydokument, en offentlig SSH-nøkkel. De kopieres uendret, fordi den konverterte konfigurasjonen fortsatt refererer til dem.

Alt annet i kildetreet kopieres ikke, og hver oversprunget fil listes som et funn med graden info. Utdatakatalogen er et nytt sted som du kanskje ikke har gitignore-t og godt kan dele med en kollega, så konvertereren dupliserer ikke stille editorinnstillingene dine, git-hooks eller urelaterte datafiler dit.

Variabelfiler kopieres, og de inneholder som regel hemmeligheter

.tfvars-filer kopieres uendret — den konverterte konfigurasjonen trenger verdiene deres — og hver fil gir en advarsel som navngir den. Variabelfiler er der legitimasjon pleier å bo. CLI-et oppretter utdatakatalogen lesbar kun for deg, men sjekk rettighetene igjen før du flytter, sjekker inn eller deler den.

Funn og alvorlighetsgrader

Hver kjøring skriver ut et sammendrag der hvert funn har en alvorlighetsgrad:

AlvorlighetsgradBetydning
blockerDen konverterte konfigurasjonen består ikke terraform validate før du handler — en påkrevd verdi mangler, eller en konstruksjon kan ikke representeres.
warningKonvertert, men med en atferdsforskjell verdt å gjennomgå (for eksempel en standard som skiller seg fra kildeskyen).
infoInformativt — en fil som ble hoppet over, en ressurs uten motstykke som ble fjernet, og så videre.

Send --report report.json for å få den fullstendige maskinlesbare listen over funn.

Avslutningskoder

KodeBetydning
0Konvertert rent (info- og warning-funn gir fortsatt 0).
2Konvertert, men blocker-funn finnes — utdataene skrives likevel, men gjennomgå blokkeringene før du bruker dem.
1En feil i bruk, I/O, API eller autentisering — ingenting brukbart ble skrevet.

Blokkeringer underkjenner valideringen med vilje

Blokkeringer skrives som markører som får terraform validate til å mislykkes. Dette er tilsiktet: du kan aldri kjøre terraform apply på en plan konverteraren allerede visste var ufullstendig. Løs hver blokkering — fyll inn FM-TODO-verdiene og håndter FM-CONVERT-blokkene — kjør deretter terraform validate på nytt, og først da terraform plan.

Hva som konverteres, per sky

Den nøyaktige mappingen — hver ressurstype og hvert attributt, og hva som skjer med hver enkelt — publiseres som en matrise per sky (på engelsk):

Se matriseoversikten for alle fire.

Neste steg

  1. Konverter: fm terraform convert ./infra.
  2. Løs markørene FM-TODO og FM-CONVERT i utdataene.
  3. Kjør terraform init && terraform validate i utdatakatalogen.
  4. Kjør terraform plan og gjennomgå den før terraform apply.

Relatert

Varemerker

Frostmoln er en uavhengig skyleverandør og et konkurrerende alternativ til Amazon Web Services, Microsoft Azure, Google Cloud og Oracle Cloud. Frostmoln er ikke tilknyttet, godkjent av eller sponset av noen av dem. AWS, Azure, Google Cloud og Oracle Cloud er varemerker som tilhører sine respektive eiere; alle henvisninger er nominative og kun for interoperabilitet.