Snabbstart: Skapa en principtilldelning för att identifiera icke-kompatibla resurser med Terraform
Det första steget mot att förstå kompatibilitet i Azure är att identifiera dina resursers status. Denna snabbstart vägleder dig genom processen för att skapa en principtilldelning som identifierar virtuella datorer som inte använder hanterade diskar.
Efter den här genomgången kommer du att kunna identifiera virtuella datorer som inte använder hanterade diskar. De är inkompatibla med principtilldelningen.
Förutsättningar
- Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- Terraform version 0.12.0 eller senare konfigurerad i din miljö. Anvisningar finns i Konfigurera Terraform med hjälp av Azure Cloud Shell.
- Den här snabbstarten kräver att du kör Azure CLI version 2.13.0 eller senare. Kör
az --versionför att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.
Skapa Terraform-konfigurations-, variabel- och utdatafilen
I den här snabbstarten skapar du en principtilldelning och tilldelar definitionen Granska virtuella datorer som inte använder hanterade diskar ( 06a78e20-9358-41c9-923c-fb736d382a4d ). Den här principdefinitionen identifierar resurser som inte uppfyller villkoren i principdefinitionen.
Konfigurera först Terraform-konfigurations-, variabel- och utdatafilerna. Terraform-resurserna för Azure Policy använda Azure-providern.
Skapa en ny mapp med
policy-assignmentnamnet och ändra katalogerna till den.Skapa
main.tfmed följande kod:provider "azurerm" { version = "~>2.0" features {} } resource "azurerm_policy_assignment" "auditvms" { name = "audit-vm-manageddisks" scope = var.cust_scope 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" }Skapa
variables.tfmed följande kod:variable "cust_scope" { default = "{scope}" }Ett omfång avgör vilka resurser eller grupper med resurser som principtilldelningen används i. Det kan vara allt från en hanteringsgrupp till en enskild resurs. Se till att
{scope}ersätta med något av följande mönster:- Prenumeration:
/subscriptions/{subscriptionId} - Resursgrupp:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName} - Resurs:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Prenumeration:
Skapa
output.tfmed följande kod:output "assignment_id" { value = azurerm_policy_assignment.auditvms.id }
Initiera Terraform och skapa en plan
Initiera sedan Terraform för att ladda ned nödvändiga leverantörer och skapa sedan en plan.
Kör kommandot terraform init. Det här kommandot laddar ned de Azure-moduler som krävs för att skapa Azure-resurserna i Terraform-konfigurationen.
terraform init
Autentisera med Azure CLI för Terraform. Mer information finns i Azure Provider: Authenticating using the Azure CLI (Azure-provider: Autentisera med Hjälp av Azure CLI).
az loginSkapa körningsplanen med kommandot terraform plan och out-parametern.
terraform plan -out assignment.tfplan
Anteckning
Information om ständiga körningsplaner och säkerhet finns i Terraform-plan: Säkerhetsvarning.
Använd Terraform-körningsplanen
Tillämpa sedan körningsplanen.
Kör kommandot terraform apply och ange den som assignment.tfplan redan har skapats.
terraform apply assignment.tfplan
Med "Tillämpa klart! Resurser: 1 tillagd, 0 ändrad, 0 förstörs." skapas principtilldelningen nu. Eftersom vi definierade outputs.tf filen returneras även _ tilldelnings-ID:t.
Identifiera icke-kompatibla resurser
Om du vill visa de resurser som inte är kompatibla med den här nya tilldelningen använder du _ tilldelnings-ID:t som returneras av terraform apply . Med den kör du följande kommando för att hämta resurs-ID:erna för icke-kompatibla resurser som matas ut till en JSON-fil:
armclient post "/subscriptions/<subscriptionID>/resourceGroups/<rgName>/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>
Ditt resultat liknar följande exempel:
{
"@odata.context": "https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
"@odata.count": 3,
"value": [{
"@odata.id": null,
"@odata.context": "https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"ResourceId": "/subscriptions/<subscriptionId>/resourcegroups/<rgname>/providers/microsoft.compute/virtualmachines/<virtualmachineId>"
},
{
"@odata.id": null,
"@odata.context": "https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"ResourceId": "/subscriptions/<subscriptionId>/resourcegroups/<rgname>/providers/microsoft.compute/virtualmachines/<virtualmachine2Id>"
},
{
"@odata.id": null,
"@odata.context": "https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"ResourceId": "/subscriptions/<subscriptionName>/resourcegroups/<rgname>/providers/microsoft.compute/virtualmachines/<virtualmachine3ID>"
}
]
}
Resultatet är jämförbart med det du vanligtvis skulle se under Icke-kompatibla resurser i Azure-portalens vy.
Rensa resurser
Om du vill ta bort tilldelningen som skapats använder du Azure CLI eller omvänder Terraform-körningsplanen med terraform destroy .
Azure CLI
az policy assignment delete --name 'audit-vm-manageddisks' --scope '/subscriptions/<subscriptionID>/<resourceGroupName>'Terraform
terraform destroy assignment.tfplan
Nästa steg
I den här snabbstarten har du tilldelat en principdefinition för att identifiera icke-kompatibla resurser i Azure-miljön.
Om du vill ha mer information om tilldelning av principer för att validera att de nya resurserna är kompatibla fortsätter du till självstudien för att: