Skip to content

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 en frostmoln_vpc och en säkerhetsgrupp blir en frostmoln_security_group plus 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:

bash
fm terraform convert ./infra

Som 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

FlaggaVad den gör
--providerKällmoln: auto (standard), aws, azure, gcp eller oci. auto upptäcker det från konfigurationen.
--outUtdatakatalog (standard: <dir>/frostmoln).
--reportSkriv den fullständiga rapporten som JSON till denna sökväg.
--onlineSlå 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).
--forceSkriv över en icke-tom utdatakatalog.
bash
# 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.json

Med --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:

bash
grep -rn FM-TODO    ./infra/frostmoln   # katalogvärden att fylla i
grep -rn FM-CONVERT ./infra/frostmoln   # bortkommenterad konfiguration som inte stöds
  • FM-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 list och datakällan frostmoln_regions hjälper dig att hitta ett. Att köra med --online fyller 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:

AllvarlighetsgradBetydelse
blockerDen konverterade konfigurationen klarar inte terraform validate förrän du agerar — ett obligatoriskt värde saknas, eller en konstruktion kan inte representeras.
warningKonverterad, men med en beteendeskillnad värd att granska (till exempel en standard som skiljer sig från källmolnet).
infoInformativt — 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

KodBetydelse
0Konverterad rent (info- och warning-noteringar ger fortfarande 0).
2Konverterad, men blocker-noteringar finns — utdatan skrivs ändå, men granska blockeringarna innan du applicerar.
1Ett 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

  1. Konvertera: fm terraform convert ./infra.
  2. Åtgärda markörerna FM-TODO och FM-CONVERT i utdatan.
  3. Kör terraform init && terraform validate i utdatakatalogen.
  4. Kör terraform plan och granska den innan terraform apply.

Relaterat

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.