Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De eerste stap in het begrijpen van naleving in Azure is het identificeren van de status van uw resources. In deze quickstart wordt u stapsgewijs begeleid bij het maken van een beleidstoewijzing om virtuele machines te identificeren die geen beheerde schijven gebruiken.
Wanneer u een ingebouwde beleids- of initiatiefdefinitie toewijst, is het optioneel om te verwijzen naar een versie. Beleidstoewijzingen van ingebouwde definities zijn standaard ingesteld op de meest recente versie en nemen automatisch kleine versiewijzigingen over, tenzij anders opgegeven.
Terraform maakt de definitie, preview en implementatie van de cloudinfrastructuur mogelijk. Met Terraform maakt u configuratiebestanden met behulp van HCL-syntaxis. Met de HCL-syntaxis kunt u de cloudprovider opgeven, zoals Azure, en de elementen waaruit uw cloudinfrastructuur bestaat. Nadat u uw configuratiebestanden hebt gemaakt, maakt u een uitvoeringsplan waarmee u een voorbeeld van uw infrastructuurwijzigingen kunt bekijken voordat ze worden geïmplementeerd. Zodra u de wijzigingen hebt gecontroleerd, past u het uitvoeringsplan toe om de infrastructuur te implementeren.
In dit artikel leert u het volgende:
- Haal de huidige Azure-clientconfiguratie op.
- Maak een Azure-resourcegroep met de gegenereerde willekeurige naam.
- Abonnementsbeleidstoewijzing maken om virtuele machines te identificeren die geen beheerde schijven gebruiken
Vereisten
Maak een Azure-account met een actief abonnement. U kunt gratis een account maken.
De Terraform-code implementeren
De voorbeeldcode voor dit artikel bevindt zich in de Azure Terraform GitHub-opslagplaats. U kunt het logboekbestand met de testresultaten van de huidige en vorige versies van Terraform bekijken. Zie meer artikelen en voorbeeldcode waarin wordt getoond hoe u Terraform gebruikt om Azure-resources te beheren
Maak een map waarin u de Terraform-voorbeeldcode wilt testen en uitvoeren en deze de huidige map kunt maken.
Maak een bestand met de naam
providers.tfen voeg de volgende code in.terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>4.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }Maak een bestand met de naam
main.tfen voeg de volgende code in.# Create a random pet name to ensure unique resource group name resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } # Create a resource group resource "azurerm_resource_group" "example" { location = var.resource_group_location name = random_pet.rg_name.id } # Get the current subscription data "azurerm_subscription" "current" {} # Create a subscription policy assignment resource "azurerm_subscription_policy_assignment" "auditvms" { name = "audit-vm-manageddisks" subscription_id = coalesce(var.scope, "/subscriptions/${data.azurerm_subscription.current.subscription_id}") policy_definition_id = "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d" description = "Shows all virtual machines not using managed disks" display_name = "Audit VMs without managed disks assignment" }Maak een bestand met de naam
variables.tfen voeg de volgende code in.variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } variable "scope" { type = string default = "" description = "Scope of the policy assignment." }Maak een bestand met de naam
outputs.tfen voeg de volgende code in.output "resource_group_name" { value = azurerm_resource_group.example.name } output "assignment_id" { value = azurerm_subscription_policy_assignment.auditvms.id } output "subscription_id" { value = data.azurerm_subscription.current.subscription_id }
Omvang specificeren
Het bereik bepaalt op welke middelen of groepen van middelen de beleidstoewijzing wordt afgedwongen. Het kan variëren van een beheergroep tot een afzonderlijke resource. Als u een van de volgende scopes wilt gebruiken, werkt u de scope variabele in het variables.tf bestand bij. Als u de scope variabele-waarde leeg laat, wordt het bereik "abonnement" gebruikt.
- Abonnement:
/subscriptions/<subscription_id> - Resourcegroep:
/subscriptions/<subscription_id>/resourceGroups/<resource_group_name> - Bron:
/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/<resource_provider_namespace>/[{parentResourcePath}/]
Terraform initialiseren
Belangrijk
Als u de azurerm-provider 4.x gebruikt, moet u expliciet de Azure-abonnements-id opgeven voor verificatie bij Azure voordat u de Terraform-opdrachten uitvoert.
Een manier om de Azure-abonnements-id op te geven zonder deze in het providers blok te plaatsen, is door de abonnements-id op te geven in een omgevingsvariabele met de naam ARM_SUBSCRIPTION_ID.
Zie de referentiedocumentatie voor Azure-providervoor meer informatie.
Voer terraform init uit om de Terraform-implementatie te initialiseren. Met deze opdracht wordt de Azure-provider gedownload die is vereist voor het beheren van uw Azure-resources.
terraform init -upgrade
Belangrijkste punten:
- Met
-upgradede parameter worden de benodigde providerinvoegtoepassingen bijgewerkt naar de nieuwste versie die voldoet aan de versiebeperkingen van de configuratie.
Een Terraform-uitvoeringsplan maken
Voer terraform-plan uit om een uitvoeringsplan te maken.
terraform plan -out main.tfplan
Belangrijkste punten:
- De
terraform planopdracht maakt een uitvoeringsplan, maar voert het niet uit. In plaats daarvan wordt bepaald welke acties nodig zijn om de configuratie te maken die is opgegeven in uw configuratiebestanden. Met dit patroon kunt u controleren of het uitvoeringsplan aan uw verwachtingen voldoet voordat u wijzigingen aanbrengt in de werkelijke resources. - Met de optionele
-outparameter kunt u een uitvoerbestand voor het plan opgeven. Door de-outparameter te gebruiken, zorgt u ervoor dat het plan dat u hebt gecontroleerd precies wordt toegepast.
Een Terraform-uitvoeringsplan toepassen
Voer terraform apply uit om het uitvoeringsplan toe te passen op uw cloudinfrastructuur.
terraform apply main.tfplan
Belangrijkste punten:
- In het voorbeeld
terraform applyopdracht wordt ervan uitgegaan dat u eerderterraform plan -out main.tfplanhebt uitgevoerd. - Als u een andere bestandsnaam voor de
-outparameter hebt opgegeven, gebruikt u diezelfde bestandsnaam in de aanroep naarterraform apply. - Als u de
-out-parameter niet hebt gebruikt, roepterraform applydan zonder parameters aan.
De resultaten controleren
Haal de
_assignment\_id_geretourneerde doorterraform apply.voer de volgende opdracht uit om de resources weer te geven die niet compatibel zijn onder uw nieuwe beleidstoewijzing.
armclient post "/subscriptions/<subscription_id>/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$filter=IsCompliant eq false and PolicyAssignmentId eq '<policyAssignmentID>'&$apply=groupby((ResourceId))" > <json file to direct the output with the resource IDs into>De resultaten zijn vergelijkbaar met wat u ziet onder Niet-compatibele resources in de azure-portalweergave.
Middelen opschonen
Voer de volgende stappen uit wanneer u de resources die zijn gemaakt via Terraform niet meer nodig hebt:
Voer terraform-plan uit en geef de
destroyvlag op.terraform plan -destroy -out main.destroy.tfplanBelangrijkste punten:
- De
terraform planopdracht maakt een uitvoeringsplan, maar voert het niet uit. In plaats daarvan wordt bepaald welke acties nodig zijn om de configuratie te maken die is opgegeven in uw configuratiebestanden. Met dit patroon kunt u controleren of het uitvoeringsplan aan uw verwachtingen voldoet voordat u wijzigingen aanbrengt in de werkelijke resources. - Met de optionele
-outparameter kunt u een uitvoerbestand voor het plan opgeven. Door de-outparameter te gebruiken, zorgt u ervoor dat het plan dat u hebt gecontroleerd precies wordt toegepast.
- De
Voer terraform apply uit om het uitvoeringsplan toe te passen.
terraform apply main.destroy.tfplan
Problemen met Terraform in Azure oplossen
Veelvoorkomende problemen bij het gebruik van Terraform in Azure oplossen.