Migrera till Frostmoln med Terraform
Om du redan hanterar infrastruktur med Terraform i ett annat moln kan fm-CLI:t konvertera den konfigurationen till Frostmoln-providern åt dig. Det skriver om det som mappar rent och — viktigast av allt — rapporterar varje resurs och attribut som Frostmoln ännu inte stöder, så att inget tappas bort i tysthet.
Källmoln som stöds: Amazon Web Services (AWS), Microsoft Azure, Google Cloud (GCP) och Oracle Cloud Infrastructure (OCI).
Vad konverteraren gör
- Bevarar din struktur — din fil- och modulstruktur behålls; varje källfil blir motsvarande Frostmoln-konfiguration på samma plats.
- Skriver om det som mappar rent — en instans blir till exempel en
frostmoln_instance, en VPC blir enfrostmoln_vpcoch en säkerhetsgrupp blir enfrostmoln_security_groupplus dess fristående regler. - Gissar aldrig i tysthet — där ett värde inte kan härledas behålls originalet och en notering skapas; något som inte stöds kommenteras bort på plats bakom en grep-bar markör i stället för att tappas bort.
- Rapporterar allt — körningen skriver ut en sammanfattning av varje notering grupperad efter allvarlighetsgrad och kan skriva en fullständig JSON-rapport.
Endast konfiguration: migrering av state ligger utanför omfånget. Konverteraren läser dina .tf-filer och skriver nya — den rör aldrig Terraform-state eller ditt befintliga moln.
Installation
Konverteraren är inbyggd i fm-CLI:t — se fm CLI-guiden för att installera den. Ingen extra plugin krävs.
Kör den
Peka kommandot mot roten av det repository som innehåller din befintliga Terraform:
fm terraform convert ./infraSom standard körs detta helt offline — inget konto och inget nätverk behövs — och den konverterade konfigurationen skrivs till ./infra/frostmoln.
Peka på repository-roten hellre än på en enskild miljökatalog. Varje katalog med .tf-filer konverteras i samma körning, och modulkällor som ../modules/network går bara att lösa upp när de delade modulerna ligger inuti trädet som konverteras. Utdatakatalogen utesluts från indata, så det är säkert att köra om.
Flaggor
| Flagga | Vad den gör |
|---|---|
--provider | Källmoln: auto (standard), aws, azure, gcp eller oci. auto upptäcker det från konfigurationen. |
--out | Utdatakatalog (standard: <dir>/frostmoln). |
--report | Skriv den fullständiga rapporten som JSON till denna sökväg. |
--online | Slå upp aktuella katalogvärden (flavors, images, regioner) via ditt autentiserade Frostmoln-konto i stället för att lämna platshållare. Kräver fm auth login (eller en API-nyckel). |
--force | Skriv över en icke-tom utdatakatalog. |
# Tvinga källprovider och välj utdatakatalog
fm terraform convert ./infra --provider aws --out ./frostmoln
# Slå upp aktuella katalogvärden och spara rapporten
fm terraform convert ./infra --online --report report.jsonMed --online slår konverteraren upp riktiga flavors, images och regioner från ditt konto och fyller i dem. Om katalogen inte går att nå faller den tillbaka till samma platshållare som en offlinekörning och skriver en varning — den låter aldrig konverteringen misslyckas av den anledningen.
Läsa utdata
Två markörer flaggar allt som kräver din uppmärksamhet. Hitta dem med grep:
grep -rn FM-TODO ./infra/frostmoln # katalogvärden att fylla i
grep -rn FM-CONVERT ./infra/frostmoln # bortkommenterad konfiguration som inte stödsFM-TODO— en platshållare där ett aktuellt katalogvärde behövs (en flavor, image eller region) men inte kunde slås upp. Ersätt den med ett riktigt värde;fm compute flavor list,fm compute image listoch datakällanfrostmoln_regionshjälper dig att hitta ett. Att köra med--onlinefyller i de flesta av dessa automatiskt.FM-CONVERT— något som behöver din uppmärksamhet. Konfiguration som Frostmoln ännu inte stöder kommenteras bort på plats (tappas aldrig bort) så att du kan bestämma vad du vill göra med det: ta bort det eller återskapa beteendet på annat sätt. Markören sätts även på block som lämnats fungerande men fortfarande hör till ditt gamla moln (se nedan), och på värden som är värda att dubbelkolla.
Block som fortfarande behöver ditt gamla moln
Vissa resurser är inte Frostmolns att konvertera — en identitetsleverantörs applikationsregistrering, en molnspecifik nödutgång, en repository- eller pipeline-definition. De kopieras oförändrade och fungerar fortfarande, och var och en markeras och räknas separat i sammanfattningen. Det är den del av din konfiguration som en migrering inte blir klar med på egen hand: avgör för varje om den ska stanna där den är eller ersättas.
Vad som hamnar i utdatakatalogen
Utdata innehåller din Terraform — .tf, .tf.json, .tfvars, .tfvars.json — plus varje fil som din konfiguration faktiskt läser med file(), templatefile() eller en närliggande funktion: ett user_data-skript, en cloud-init-mall, ett policydokument, en publik SSH-nyckel. De kopieras oförändrade, eftersom den konverterade konfigurationen fortfarande refererar till dem.
Allt annat i källträdet kopieras inte, och varje överhoppad fil listas som en notering med graden info. Utdatakatalogen är en ny plats som du kanske inte har gitignore-at och mycket väl kan dela med en kollega, så konverteraren duplicerar inte tyst dina editorinställningar, git-hooks eller orelaterade datafiler dit.
Variabelfiler kopieras, och de innehåller oftast hemligheter
.tfvars-filer kopieras oförändrade — den konverterade konfigurationen behöver deras värden — och varje fil ger en varning som namnger den. Variabelfiler är där inloggningsuppgifter brukar bo. CLI:t skapar utdatakatalogen läsbar endast för dig, men kontrollera rättigheterna igen innan du flyttar, checkar in eller delar den.
Noteringar och allvarlighetsgrader
Varje körning skriver ut en sammanfattning där varje notering har en allvarlighetsgrad:
| Allvarlighetsgrad | Betydelse |
|---|---|
| blocker | Den konverterade konfigurationen klarar inte terraform validate förrän du agerar — ett obligatoriskt värde saknas, eller en konstruktion kan inte representeras. |
| warning | Konverterad, men med en beteendeskillnad värd att granska (till exempel en standard som skiljer sig från källmolnet). |
| info | Informativt — en fil som hoppats över, en resurs utan motsvarighet som tagits bort, och så vidare. |
Skicka --report report.json för att få den fullständiga maskinläsbara listan över noteringar.
Slutkoder
| Kod | Betydelse |
|---|---|
0 | Konverterad rent (info- och warning-noteringar ger fortfarande 0). |
2 | Konverterad, men blocker-noteringar finns — utdatan skrivs ändå, men granska blockeringarna innan du applicerar. |
1 | Ett fel i användning, I/O, API eller autentisering — inget användbart skrevs. |
Blockeringar underkänner valideringen med flit
Blockeringar skrivs som markörer som får terraform validate att misslyckas. Detta är avsiktligt: du kan aldrig köra terraform apply på en plan som konverteraren redan visste var ofullständig. Åtgärda varje blockering — fyll i FM-TODO-värdena och hantera FM-CONVERT-blocken — kör sedan terraform validate igen, och först därefter terraform plan.
Vad som konverteras, per moln
Den exakta mappningen — varje resurstyp och attribut, och vad som händer med var och en — publiceras som en matris per moln (på engelska):
Se matrisöversikten för alla fyra.
Nästa steg
- Konvertera:
fm terraform convert ./infra. - Åtgärda markörerna
FM-TODOochFM-CONVERTi utdatan. - Kör
terraform init && terraform validatei utdatakatalogen. - Kör
terraform planoch granska den innanterraform apply.
Relaterat
- Översikt över Terraform-providern
- Kom igång med Terraform
- Terraform Provider Reference (på engelska)
- fm CLI-guide
Varumärken
Frostmoln är en oberoende molnleverantör och ett konkurrerande alternativ till Amazon Web Services, Microsoft Azure, Google Cloud och Oracle Cloud. Frostmoln är inte anslutet till, godkänt av eller sponsrat av någon av dem. AWS, Azure, Google Cloud och Oracle Cloud är varumärken som tillhör respektive ägare; alla hänvisningar är nominativa och sker endast för interoperabilitet.