Migrering til Frostmoln med Terraform
Hvis du allerede administrerer infrastruktur med Terraform i en anden cloud, kan fm-CLI'en konvertere den konfiguration til Frostmoln-udbyderen for dig. Den omskriver det, der mapper rent, og — vigtigst af alt — rapporterer hver eneste ressource og attribut, som Frostmoln endnu ikke understøtter, så intet forsvinder i stilhed.
Understøttede kildeclouds: Amazon Web Services (AWS), Microsoft Azure, Google Cloud (GCP) og Oracle Cloud Infrastructure (OCI).
Hvad konverteren gør
- Bevarer dit layout — din fil- og modulstruktur bevares; hver kildefil bliver til den tilsvarende Frostmoln-konfiguration samme sted.
- Omskriver det, der mapper rent — en instans bliver for eksempel til en
frostmoln_instance, et VPC bliver til etfrostmoln_vpc, og en sikkerhedsgruppe bliver til enfrostmoln_security_groupplus dens selvstændige regler. - Gætter aldrig i stilhed — hvor en værdi ikke kan udledes, bevares originalen, og der registreres et fund; alt, der ikke understøttes, kommenteres ud på stedet bag en grep-bar markør i stedet for at blive smidt væk.
- Rapporterer alt — kørslen udskriver en oversigt over hvert fund grupperet efter alvorlighedsgrad og kan skrive en fuld JSON-rapport.
Kun konfiguration: migrering af state er uden for omfanget. Konverteren læser dine .tf-filer og skriver nye — den rører aldrig Terraform-state eller din eksisterende cloud.
Installer
Konverteren er indbygget i fm-CLI'en — se fm CLI-guiden for at installere den. Der kræves ingen ekstra plugin.
Kør den
Peg kommandoen mod roden af det repository, der indeholder din eksisterende Terraform:
fm terraform convert ./infraSom standard kører dette helt offline — der kræves hverken konto eller netværk — og den konverterede konfiguration skrives til ./infra/frostmoln.
Sigt mod repository-roden frem for mod en enkelt miljømappe. Hver mappe med .tf-filer konverteres i én kørsel, og modulkilder som ../modules/network kan kun slås op, når de delte moduler ligger inde i det træ, der konverteres. Outputmappen udelades fra inputtet, så det er sikkert at køre igen.
Valgmuligheder
| Flag | Hvad den gør |
|---|---|
--provider | Kildecloud: auto (standard), aws, azure, gcp eller oci. auto registrerer den ud fra konfigurationen. |
--out | Outputmappe (standard: <dir>/frostmoln). |
--report | Skriv den fulde fundrapport som JSON til denne sti. |
--online | Slå aktuelle katalogværdier op (flavors, images, regioner) via din autentificerede Frostmoln-konto i stedet for at efterlade pladsholdere. Kræver fm auth login (eller en API-nøgle). |
--force | Overskriv en ikke-tom outputmappe. |
# Gennemtving kildeudbyderen og vælg en outputmappe
fm terraform convert ./infra --provider aws --out ./frostmoln
# Slå rigtige katalogværdier op og gem rapporten
fm terraform convert ./infra --online --report report.jsonMed --online slår konverteren rigtige flavors, images og regioner op fra din konto og udfylder dem. Hvis kataloget ikke kan nås, falder den tilbage til de samme pladsholdere som i en offlinekørsel og udskriver en advarsel — den lader aldrig konverteringen mislykkes af den grund.
Læs outputtet
To markører markerer alt, der kræver din opmærksomhed. Find dem med grep:
grep -rn FM-TODO ./infra/frostmoln # katalogværdier, der skal udfyldes
grep -rn FM-CONVERT ./infra/frostmoln # alt, der kræver din opmærksomhedFM-TODO— en pladsholder, hvor der er brug for en aktuel katalogværdi (en flavor, et image eller en region), men den blev ikke slået op. Erstat den med en rigtig værdi;fm compute flavor list,fm compute image listog datakildenfrostmoln_regionshjælper dig med at finde en. At køre med--onlineudfylder de fleste af disse automatisk.FM-CONVERT— noget, der kræver din opmærksomhed. Konfiguration, som Frostmoln endnu ikke understøtter, kommenteres ud på stedet (den smides aldrig væk), så du kan beslutte, hvad du vil gøre med den: fjern den, eller genskab adfærden på en anden måde. Markøren sættes også på blokke, der er efterladt fungerende, men stadig hører til din gamle cloud (se nedenfor), og på værdier, der er værd at dobbelttjekke.
Blokke, der stadig kræver din gamle cloud
Nogle ressourcer er ikke Frostmolns at konvertere — en identitetsudbyders applikationsregistrering, en rå ARM- eller cloudspecifik nødudgang, en repository- eller pipelinedefinition. De kopieres igennem uændrede og stadig fungerende, og hver enkelt markeres og tælles separat i oversigten. De er den del af din konfiguration, som en migrering ikke gør færdig af sig selv: beslut for hver enkelt, om den skal blive, hvor den er, eller erstattes.
Hvad der ender i outputmappen
Outputtet indeholder din Terraform — .tf, .tf.json, .tfvars, .tfvars.json — plus enhver fil, som din konfiguration rent faktisk læser med file(), templatefile() eller en beslægtet funktion: et user_data-script, en cloud-init-skabelon, et politikdokument, en offentlig SSH-nøgle. De kopieres uændret, fordi den konverterede konfiguration stadig henviser til dem.
Alt andet i kildetræet kopieres ikke, og hver oversprunget fil listes som et info-fund. Outputmappen er et nyt sted, som du måske ikke har gitignoreret, og som du udmærket kan komme til at dele med en kollega, så konverteren duplikerer ikke i stilhed dine editorindstillinger, git-hooks eller urelaterede datafiler derind.
Variabelfiler kopieres, og de indeholder som regel hemmeligheder
.tfvars-filer kopieres uændret — den konverterede konfiguration har brug for deres værdier — og hver enkelt udløser en warning, der navngiver filen. Variabelfiler er dér, hvor legitimationsoplysninger plejer at bo. CLI'en opretter outputmappen, så kun du kan læse den, men tjek rettighederne igen, før du flytter, committer eller deler den.
Fund og alvorlighedsgrader
Hver kørsel udskriver en oversigt, hvor hvert fund har en alvorlighedsgrad:
| Alvorlighedsgrad | Betydning |
|---|---|
| blocker | Den konverterede konfiguration består ikke terraform validate, før du handler — en påkrævet værdi mangler, eller en konstruktion kan ikke repræsenteres. |
| warning | Konverteret, men med en adfærdsforskel, der er værd at gennemgå (for eksempel en standardværdi, der afviger fra kildecloudens). |
| info | Informativt — en oversprunget fil, en fjernet ressource uden tilsvarende, og så videre. |
Angiv --report report.json for at få den fulde maskinlæsbare liste over fund.
Afslutningskoder
| Kode | Betydning |
|---|---|
0 | Konverteret rent (info- og warning-fund afslutter stadig med 0). |
2 | Konverteret, men der findes blocker-fund — outputtet skrives stadig, men gennemgå blokeringerne, før du anvender det. |
1 | En fejl i brug, I/O, API eller autentificering — der blev ikke skrevet noget brugbart. |
Blokeringer underkender valideringen med vilje
Blokeringer udsendes som markører, der får terraform validate til at fejle. Det er bevidst: du kan aldrig køre terraform apply på en plan, som konverteren allerede vidste var ufuldstændig. Løs hver eneste blokering — udfyld FM-TODO-værdierne og håndter FM-CONVERT-blokkene — kør derefter terraform validate igen, og først derefter terraform plan.
Hvad der konverteres, pr. cloud
Den præcise mapping — hver ressourcetype og attribut, og hvad der sker med hver enkelt — er offentliggjort som en matrix pr. cloud (på engelsk):
Se matrixoversigten for alle fire.
Næste trin
- Konverter:
fm terraform convert ./infra. - Løs markørerne
FM-TODOogFM-CONVERTi outputtet. - Kør
terraform init && terraform validatei outputmappen. - Kør
terraform plan, og gennemgå den, førterraform apply.
Konvertering til OpenTofu
fm terraform convert skriver den korte kildeadresse frostmoln/frostmoln ind i den konverterede konfiguration. Under OpenTofu kan den adresse ikke slås op — ændr den til registry.terraform.io/frostmoln/frostmoln før trin 3. Se oversigten over udbyderen.
Relateret
- Oversigt over Terraform-udbyderen
- Kom godt i gang med Terraform
- Terraform Provider Reference (på engelsk)
- fm CLI-guide
Varemærker
Frostmoln er en uafhængig cloududbyder og et konkurrerende alternativ til Amazon Web Services, Microsoft Azure, Google Cloud og Oracle Cloud. Frostmoln er ikke tilknyttet, godkendt af eller sponsoreret af nogen af dem. AWS, Azure, Google Cloud og Oracle Cloud er varemærker tilhørende deres respektive ejere; alle henvisninger er nominative og udelukkende af hensyn til interoperabilitet.