Hızlı Başlangıç: Terraform kullanarak uyumlu olmayan kaynakları belirlemek için ilke ataması oluşturma
Azure’da uyumluluğu anlamanın ilk adımı, kaynaklarınızın durumunu belirlemektir. Bu hızlı başlangıç, yönetilen disk kullanmayan sanal makineleri belirlemek üzere ilke ataması oluşturma işleminde size yol gösterir.
Bu işlemin sonunda, yönetilen disk kullanmayan sanal makineleri başarılı bir şekilde belirlemiş olacaksınız. Bu sanal makineler, ilke ataması ile uyumsuzdur.
Önkoşullar
- Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Ortamınız için yapılandırılmış Terraform 0.12.0 veya daha yeni bir sürüm. Yönergeler için bkz. Terraform'ı Azure Cloud Shell.
- Bu hızlı başlangıç için Azure CLI 2.13.0 veya sonraki bir sürümü çalıştırmanız gerekir. Sürümü bulmak için
az --versionkomutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.
Terraform yapılandırması, değişkeni ve çıkış dosyasını oluşturma
Bu hızlı başlangıçta, bir ilke ataması oluşturun ve yönetilen diskleri kullanmayan VM'leri denetle ( 06a78e20-9358-41c9-923c-fb736d382a4d ) tanımını atarsınız. Bu ilke tanımı, ilke tanımında ayarlanmış koşullarla uyumlu olmayan kaynakları tanımlar.
İlk olarak Terraform yapılandırmasını, değişkenlerini ve çıkış dosyalarını yapılandırabilirsiniz. Azure Sağlayıcısı'Azure İlkesi için Terraform kaynakları.
adlı yeni bir klasör
policy-assignmentoluşturun ve dizinleri bu klasöre dönüştürebilirsiniz.Aşağıdaki
main.tfkodla oluşturun: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" }Aşağıdaki
variables.tfkodla oluşturun:variable "cust_scope" { default = "{scope}" }Kapsam, ilke atamasının hangi kaynaklarda veya kaynak gruplarında uygulanacağını belirler. Bir yönetim grubundan tek bir kaynağa kadar farklı olabilir. yerine aşağıdaki
{scope}desenlerden birini değiştirilebilir:- Abonelik:
/subscriptions/{subscriptionId} - Kaynak grubu:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName} - Kaynak:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Abonelik:
Aşağıdaki
output.tfkodla oluşturun:output "assignment_id" { value = azurerm_policy_assignment.auditvms.id }
Terraform'i başlatma ve plan oluşturma
Ardından Terraform'ı başlatarak gerekli sağlayıcıları indirin ve bir plan oluşturun.
terraform init komutunu çalıştırın. Bu komut Terraform yapılandırmasında Azure kaynaklarını oluşturmak için gereken Azure modüllerini indirir.
terraform init
Terraform için Azure CLI ile kimlik doğrulaması yapma. Daha fazla bilgi için bkz. Azure Sağlayıcısı: Azure CLI kullanarak kimlik doğrulama.
az loginterraform plan komutu ve out parametresiyle yürütme planını oluşturun.
terraform plan -out assignment.tfplan
Not
Yürütme planlarını ve güvenliğini kalıcı olarak kalıcı olarak uygulama hakkında bilgi için bkz. Terraform Planı: Güvenlik Uyarısı.
Terraform yürütme planını uygulama
Son olarak, yürütme planını uygulama.
terraform apply komutunu çalıştırın ve önceden oluşturulmuş assignment.tfplan olan komutu belirtin.
terraform apply assignment.tfplan
"Uygula tamamlandı! Kaynaklar: 1 eklendi, 0 değiştirildi, 0 yok edildi." iletisiyle, ilke ataması artık oluşturulur. Dosyayı outputs.tf tanımlandığımız için atama _ kimliği de döndürülür.
Uyumlu olmayan kaynakları belirleme
Bu yeni atama altında uyumlu olmayan kaynakları görüntülemek için tarafından döndürülen atama _ kimliğini terraform apply kullanın. Bu komutla, JSON dosyasına çıktı olarak çıkış olarak uyumlu olmayan kaynakların kaynak kimliklerini almak için aşağıdaki komutu çalıştırın:
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>
Sonuçlarınız aşağıdaki örneğe benzer:
{
"@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>"
}
]
}
Sonuçlar, Azure portalı görünümünde Uyumlu olmayan kaynaklar bölümünde gördüklerinize benzer.
Kaynakları temizleme
Oluşturulan atamayı kaldırmak için Azure CLI'yı kullanın veya ile Terraform yürütme planını tersine terraform destroy çevirin.
Azure CLI
az policy assignment delete --name 'audit-vm-manageddisks' --scope '/subscriptions/<subscriptionID>/<resourceGroupName>'Terraform
terraform destroy assignment.tfplan
Sonraki adımlar
Bu hızlı başlangıçta, Azure ortamınızda uyumlu olmayan kaynakları belirlemek üzere bir ilke tanımı atadınız.
Yeni kaynakların uyumlu olduğunu doğrulamak için ilke atama hakkında daha fazla bilgi edinmek için şu öğreticiye devam edin: