Så här fungerar Azure Export for Terraform
Den här artikeln beskriver azure export för Terraform-arbetsflöden . 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. | ↑ -or- k |
Välj nästa objekt i resurslistan. | ↓ -or- j |
Flytta till föregående sida i resurslistan. | ← -or- h -or- Page Up |
Flytta till nästa sida i resurslistan. | → -or- l -or- Page Down |
Gå till början av resurslistan. | g -or- Home |
Gå till slutet av resurslistan. | G -or- End |
Välja resurser att hoppa över | |
Hoppa över resursen (eller ta bort skip 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 tillstånd (om --hcl-only det inte anges) och genererar konfigurationen. |
a |
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>
. Refererar till exempel 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.
Tryck på r om du vill se tillgängliga resurstyper för den valda resursen.
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 har valts) importera till Terraform-tillstånd.
Icke-interaktivt läge
Som standard körs Azure Export for Terraform i interaktivt läge. Ange flaggan för att ange att verktyget ska köras i icke-interaktivt läge --non-interactive
.
aztfexport [command] --non-interactive <scope>
Viktigt!
Om katalogen där du kör Azure Export for Terraform inte är tom måste du lägga till --overwrite
flaggan för att använda --hcl-only
flaggan.
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 med terraform init plan apply
arbetsflöden är det viktigt att exportera till tillstånd.
Om du inte är säker på att du vill hantera resurserna ännu rekommenderar vi att du skickar --hcl-only
flaggan.
Befintlig infrastruktur
I scenarier där du exporterar till befintliga Terraform-miljöer kan det vara bra att se --hcl-only
det som en terraform-planmotsvarighet , särskilt innan du lägger till i befintliga miljöer.
Kommandot terraform apply
motsvarar export av resurser – under vilken 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.
Identifiera infrastruktur
Om du inte är säker på vilka resurser som finns i en miljö kan du verifiera genom att --generate-mapping-file
ange flaggan. Mer information om det här ämnet finns i Utforska val och namngivning av anpassade resurser 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.
Skrivskyddade egenskaper
Vissa egenskaper i AzureRM är skrivskyddade och ingår inte i den genererade kod som Azure Export for Terraform skapar. Problemet åtgärdas genom att definiera egenskapen efter export till HCL-kod.
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.
Skrivskyddade 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-box-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 --full-properties
flaggan för att exponera alla egenskaper kan även 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.