Så här fungerar Azure Export for Terraform
I den här artikeln introduceras du till arbetsflödena för Azure Export för Terraform. I den här artikeln får du lära dig mer om verktygets vägledning för bästa praxis, aktuella begränsningar och hur du kan minska dessa begränsningar.
Interaktivt läge
Som standard körs Azure Export for Terraform i interaktivt läge. När du kör i interaktivt läge visas de tillgängliga kortkommandona längst ned på skärmen.
Uppgift | Kortkommandon |
---|---|
Navigering | |
Välj föregående objekt i resurslistan. | ↑ -eller- k |
Välj nästa objekt i resurslistan. | ↓ -eller- j |
Flytta till föregående sida i resurslistan. | ← eller h eller Page Up |
Flytta till nästa sida i resurslistan. | → eller l eller Page Down |
Gå till början av resurslistan. | g -or- Hem |
Gå till slutet av resurslistan. | G eller End |
Välja resurser för att hoppa över | |
Hoppa över resursen (eller avmarkera om den är markerad som "Hoppa över") | Ta bort |
filteråtgärder | |
Definiera ett filter efter text i resurslistan. | / |
Rensa alla aktuella filter | Esc |
Spara åtgärder | |
Spara en mappningsfil i resurslistan. Utdatafilen påverkas av hoppar över (men inte filtrering). | s |
Exportera resurser till stat (om --hcl-only inte har angetts) och genererar en konfiguration. |
w |
Användarupplevelse | |
Visa rekommendationer för den aktuella resursen. | r |
Visa resursexportfel (om det finns några). | e |
Visa hjälp. | ? |
Avsluta | |
Avsluta interaktivt läge. | q |
För varje resurs försöker Azure Export for Terraform identifiera motsvarande Terraform-resurstyp. Om den hittar en matchning markeras raden med följande indikator: 💡.
Om resursen inte kan matchas måste du ange Terraform-resursadressen i följande formulär: <resource type>.<resource name>
. Till exempel refererar azurerm_linux_virtual_machine.test
till en Terraform-resurstyp av azurerm_linux_virtual_machine medan test
refererar till namnet på den virtuella datorn som används i konfigurationsfilerna.
Om du vill se tillgängliga resurstyper för den valda resursen trycker du på r.
I vissa fall finns det Azure-resurser som inte har några motsvarande Terraform-resurser, till exempel om resursen saknar Terraform-stöd. Vissa resurser kan också skapas som en bieffekt av etableringen av en annan resurs, till exempel os-diskresursen som skapas när en virtuell dator etableras. I dessa fall kan du hoppa över resurserna utan att tilldela något.
När du har gått igenom alla resurser som ska importeras trycker du på w för att börja generera Terraform-konfigurationen och (om --hcl-only
inte är markerad) importera till Terraform-tillstånd.
Icke-interaktivt läge
Som standard körs Azure Export for Terraform i interaktivt läge. Om du vill ange att verktyget ska köras i icke-interaktivt läge anger du flaggan --non-interactive
.
aztfexport [command] --non-interactive <scope>
Viktig
Om katalogen där du kör Azure Export for Terraform inte är tom måste du lägga till flaggan --overwrite
för att använda flaggan --hcl-only
.
Metodtips för kärnarbetsflöden
På en grundläggande nivå står alla användare av Azure Export inför ett beslut mellan två alternativ:
Följande underavsnitt ger vägledning om vilket alternativ som ska användas baserat på scenariot.
Hantera infrastruktur
Du kanske inte behöver exportera för att ange om du inte har verifierat att de konfigurerade resurserna fungerar i din miljö på önskat sätt.
Om du är säker på att du vill hantera resursuppsättningen i Terraform genom terraform init plan apply
-arbetsflöden är det väsentligt att exportera till state-filen.
Om du inte är säker på att du vill hantera resurserna ännu rekommenderar vi att du skickar flaggan --hcl-only
.
Befintlig infrastruktur
I scenarier där du exporterar till befintliga Terraform-miljöer kan det vara bra att tänka på --hcl-only
som en terraformplan-ekvivalent, särskilt innan du lägger till i befintliga miljöer.
Kommandot terraform apply
motsvarar export av resurser – under vilket deras konfiguration är knuten till det befintliga tillståndet. I det här scenariot sparar användning av en mappningsfil körningstid för att lista och mappa resurser.
Upptäcka infrastruktur
Om du inte är säker på vilka resurser som finns i en miljö kan du verifiera genom att ange flaggan --generate-mapping-file
. Mer information om det här ämnet finns i Utforska anpassad resursval och namngivning med hjälp av Azure Export för Terraform.
Begränsningar
Azure Export for Terraform är ett komplext verktyg som försöker konvertera Azure-infrastrukturen till Terraform-kod och -tillstånd. Dess aktuella kända begränsningar förklaras i följande underavsnitt.
Begränsningar mellan egenskaper
AzureRM-providern kan ange två egenskaper som står i konflikt med varandra. När Azure Export for Terraform läser motstridiga egenskaper kan båda egenskaperna anges till samma värde trots att användaren bara konfigurerar en. Ytterligare komplikationer uppstår när det finns flera begränsningar för flera egenskaper inom samma genererade konfiguration. Du måste veta var konflikter mellan egenskaper finns i konfigurationen för att åtgärda det här problemet.
Infrastruktur utanför resursomfång
När du använder Azure Export for Terraform för att rikta resursomfattningar kan det finnas resurser som krävs för konfigurationen utanför det angivna omfånget. Ett exempel är en rolltilldelning. Användaren måste identifiera resurser som ligger utanför omfånget.
Endast skrivbara egenskaper
Azure Export kan inte generera skrivskyddade egenskaper (till exempel lösenord) i konfigurationen. Du behöver veta mer om skrivskyddade egenskaper och definiera dem i en konfiguration för att skapa nya uppsättningar med resurser.
Ändra kod för att matcha kodningsstandarder
Det finns några nödvändiga åtgärder om användaren vill ändra sin kod för att följa kodningsstandarder. De här stegen skulle bara vara nödvändiga om användaren planerar att använda koden i icke-sandbox-miljöer.
Egenskapsdefinierade resurser
Vissa resurser i Azure kan definieras som antingen en egenskap i en överordnad Terraform-resurs eller en enskild Terraform-resurs. Ett exempel är ett undernät. Azure Export for Terraform definierar resursen som en enskild resurs, men det är bästa praxis att matcha din befintliga kodningskonfiguration.
Explicita beroenden
Azure Export for Terraform kan för närvarande endast deklarera explicita beroenden. Du måste känna till mappningen av relationerna mellan resurser för att omstrukturera koden för att inkludera eventuella implicita beroenden som behövs.
Hårdkodade värden
Azure Export for Terraform genererar för närvarande hårdkodade strängar. Vi rekommenderar att du omstrukturerar dessa värden till variabler. När du använder flaggan --full-properties
för att exponera alla egenskaper kan viss känslig information (till exempel hemligheter) visas i den genererade konfigurationen. Använd rekommenderade metoder för att skydda den här kodens synlighet.