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 enfrostmoln_vpc, og en sikkerhetsgruppe blir enfrostmoln_security_grouppluss 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:
fm terraform convert ./infraSom 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
| Flagg | Hva det gjør |
|---|---|
--provider | Kildesky: auto (standard), aws, azure, gcp eller oci. auto oppdager den fra konfigurasjonen. |
--out | Utdatakatalog (standard: <dir>/frostmoln). |
--report | Skriv den fullstendige rapporten som JSON til denne stien. |
--online | Slå 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). |
--force | Overskriv en ikke-tom utdatakatalog. |
# 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.jsonMed --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:
grep -rn FM-TODO ./infra/frostmoln # katalogverdier å fylle inn
grep -rn FM-CONVERT ./infra/frostmoln # utkommentert konfigurasjon som ikke støttesFM-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 listog datakildenfrostmoln_regionshjelper deg å finne en. Å kjøre med--onlinefyller 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:
| Alvorlighetsgrad | Betydning |
|---|---|
| blocker | Den konverterte konfigurasjonen består ikke terraform validate før du handler — en påkrevd verdi mangler, eller en konstruksjon kan ikke representeres. |
| warning | Konvertert, men med en atferdsforskjell verdt å gjennomgå (for eksempel en standard som skiller seg fra kildeskyen). |
| info | Informativt — 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
| Kode | Betydning |
|---|---|
0 | Konvertert rent (info- og warning-funn gir fortsatt 0). |
2 | Konvertert, men blocker-funn finnes — utdataene skrives likevel, men gjennomgå blokkeringene før du bruker dem. |
1 | En 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
- Konverter:
fm terraform convert ./infra. - Løs markørene
FM-TODOogFM-CONVERTi utdataene. - Kjør
terraform init && terraform validatei utdatakatalogen. - Kjør
terraform planog gjennomgå den førterraform apply.
Relatert
- Oversikt over Terraform-provideren
- Kom i gang med Terraform
- Terraform Provider Reference (på engelsk)
- fm CLI-guide
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.