Hoe Azure Export voor Terraform werkt
In dit artikel maakt u kennis met de Azure Export voor Terraform-werkstromen . In dit artikel vindt u informatie over de best practice-richtlijnen van het hulpprogramma, de huidige beperkingen en hoe u deze beperkingen kunt beperken.
Interactieve modus
Standaard wordt Azure Export voor Terraform uitgevoerd in de interactieve modus. Wanneer u in de interactieve modus wordt uitgevoerd, worden de beschikbare sneltoetsen onder aan de weergave weergegeven.
Opdracht | Sneltoets(en) |
---|---|
Navigatie | |
Selecteer het vorige item in de lijst met resources. | ↑ -of- k |
Selecteer het volgende item in de lijst met resources. | ↓ -or- j |
Naar de vorige pagina in de lijst met resources gaan. | ← -of- h -or- Page Up |
Naar de volgende pagina in de lijst met resources gaan. | → -of- l -or- Page Down |
Ga naar het begin van de lijst met resources. | g -or- Home |
Ga naar het einde van de lijst met resources. | G -or- Einde |
Resources selecteren om over te slaan | |
Resource overslaan (of uitpakken als deze is gemarkeerd als 'Overslaan') | Delete |
Filterbewerkingen | |
Definieer een filter op tekst in de resourcelijst. | / |
Alle huidige filters wissen | Esc |
Bewerkingen opslaan | |
Sla een toewijzingsbestand van de resourcelijst op. Het uitvoerbestand wordt beïnvloed door overslaan (maar niet filteren). | s |
Exporteer resources naar de status (indien --hcl-only niet opgegeven) en genereert de configuratie. |
w |
Gebruikerservaring | |
Aanbevelingen voor de huidige resource weergeven. | R |
Fouten bij het exporteren van resources weergeven (indien van toepassing). | E |
Help weergeven. | ? |
Sluit | |
Sluit de interactieve modus af. | k |
Voor elke resource probeert Azure Export voor Terraform het bijbehorende Terraform-resourcetype te herkennen. Als er een overeenkomst wordt gevonden, wordt de lijn gemarkeerd met de volgende indicator: 💡.
Als de resource niet kan worden omgezet, moet u het Terraform-resourceadres invoeren in het volgende formulier: <resource type>.<resource name>
Verwijst bijvoorbeeld azurerm_linux_virtual_machine.test
naar een Terraform-resourcetype van azurerm_linux_virtual_machine terwijl de test
naam verwijst naar de naam van de virtuele machine die in de configuratiebestanden wordt gebruikt.
Druk op r om de beschikbare resourcetypen voor de geselecteerde resource weer te geven.
In sommige gevallen zijn er Azure-resources die geen bijbehorende Terraform-resources hebben, bijvoorbeeld als de resource ondersteuning voor Terraform mist. Sommige resources kunnen ook worden gemaakt als neveneffect van het inrichten van een andere resource, zoals de besturingssysteemschijfresource die wordt gemaakt bij het inrichten van een virtuele machine. In deze gevallen kunt u de resources overslaan zonder iets toe te wijzen.
Nadat u alle resources hebt doorlopen die moeten worden geïmporteerd, drukt u op w om de Terraform-configuratie te genereren en (indien --hcl-only
niet geselecteerd) te importeren naar de Terraform-status.
Niet-interactieve modus
Standaard wordt Azure Export voor Terraform uitgevoerd in de interactieve modus. Als u wilt opgeven dat het hulpprogramma moet worden uitgevoerd in de niet-interactieve modus, geeft u de --non-interactive
vlag op.
aztfexport [command] --non-interactive <scope>
Belangrijk
Als de map waarin u Azure Export voor Terraform uitvoert, niet leeg is, moet u de vlag toevoegen om de --overwrite
--hcl-only
vlag te gebruiken.
Aanbevolen procedures voor kernwerkstromen
Op fundamenteel niveau staat elke gebruiker van Azure Export voor een beslissing tussen twee opties:
De volgende subsecties bieden richtlijnen over welke optie u kunt nemen op basis van het scenario.
Infrastructuur beheren
Mogelijk hoeft u niet te exporteren naar de status als u de geconfigureerde resources niet op de gewenste manier in uw omgeving hebt gecontroleerd.
Als u zeker weet dat u de set resources in Terraform wilt beheren met terraform init plan apply
werkstromen, is exporteren naar status essentieel.
Als u nog niet zeker weet of u de resources wilt beheren, wordt het doorgeven van de --hcl-only
vlag aanbevolen.
Bestaande infrastructuur
In scenario's waarin u exporteert naar bestaande Terraform-omgevingen, kan het handig zijn om te denken --hcl-only
aan een terraform-planequivalent , met name voordat u toevoegt aan bestaande omgevingen.
De terraform apply
opdracht is gelijk aan het exporteren van resources, waarbij de configuratie is gekoppeld aan de bestaande status. In dit scenario bespaart het gebruik van een toewijzingsbestand runtime om resources weer te geven en toe te wijzen.
Infrastructuur detecteren
Als u niet zeker weet welke resources in een omgeving bestaan, kunt u dit controleren door de --generate-mapping-file
vlag op te geven. Zie Aangepaste resourceselectie en -naamgeving verkennen met behulp van Azure Export voor Terraform voor meer informatie over dit onderwerp.
Beperkingen
Azure Export voor Terraform is een complex hulpprogramma waarmee wordt geprobeerd de Azure-infrastructuur te converteren naar Terraform-code en -status. De huidige bekende beperkingen worden beschreven in de volgende subsecties.
Eigenschappen voor alleen-schrijven
Bepaalde eigenschappen in AzureRM zijn alleen-schrijven en worden niet opgenomen in de gegenereerde code die door Azure Export voor Terraform wordt gemaakt. Het probleem wordt opgelost door de eigenschap te definiëren na het exporteren naar HCL-code.
Beperkingen voor meerdere eigenschappen
De AzureRM-provider kan twee eigenschappen instellen die met elkaar conflicteren. Wanneer Azure Export voor Terraform conflicterende eigenschappen leest, kunnen beide eigenschappen worden ingesteld op dezelfde waarde, ondanks dat de gebruiker er slechts één configureert. Er treden verdere complicaties op wanneer er meerdere beperkingen voor meerdere eigenschappen bestaan binnen dezelfde gegenereerde configuratie. U moet weten waar conflicten tussen eigenschappen in uw configuratie bestaan om dit probleem te verhelpen.
Infrastructuur buiten resourcebereik
Wanneer u Azure Export voor Terraform gebruikt om resourcebereiken te bereiken, kunnen resources die vereist zijn voor de configuratie, bestaan buiten het opgegeven bereik. Een voorbeeld hiervan is een roltoewijzing. De gebruiker moet resources identificeren die buiten het bereik vallen.
Eigenschappen voor alleen-schrijven
Azure Export kan geen eigenschappen genereren die alleen-schrijven zijn (zoals wachtwoorden) binnen de configuratie. U moet weten wat de eigenschappen alleen-schrijven zijn en deze definiëren in een configuratie om nieuwe sets resources te maken.
Code aanpassen aan coderingsstandaarden
Er zijn enkele noodzakelijke bewerkingen als de gebruiker de code wil wijzigen om zich aan de coderingsstandaarden te houden. Deze stappen zijn alleen nodig als de gebruiker van plan is om de code te gebruiken in niet-enbox-omgevingen.
Door eigenschappen gedefinieerde resources
Bepaalde resources in Azure kunnen worden gedefinieerd als een eigenschap in een bovenliggende Terraform-resource of een afzonderlijke Terraform-resource. Een voorbeeld hiervan is een subnet. Azure Export voor Terraform definieert de resource als een afzonderlijke resource, maar het is raadzaam om overeen te komen met uw bestaande coderingsconfiguratie.
Expliciete afhankelijkheden
Azure Export voor Terraform kan momenteel alleen expliciete afhankelijkheden declareren. U moet de toewijzing van de relaties tussen resources kennen om de code te herstructureren om eventuele benodigde impliciete afhankelijkheden op te nemen.
Hardgecodeerde waarden
Azure Export voor Terraform genereert momenteel vastgelegde tekenreeksen. Als best practice moet u deze waarden herstructureren naar variabelen. Wanneer u de --full-properties
vlag gebruikt om alle eigenschappen weer te geven, kunnen sommige gevoelige informatie (zoals geheimen) ook worden weergegeven in de gegenereerde configuratie. Gebruik aanbevolen procedures om de zichtbaarheid van deze code te beveiligen.