Hızlı Başlangıç: Terraform kullanarak Azure'da Windows VM kümesi oluşturma
Şunlar için geçerlidir: ✔️ Windows VM'leri
Bu makalede, Terraform kullanarak Azure'da bir Windows VM kümesinin (üç Windows VM örneği içeren) nasıl oluşturulacağı gösterilmektedir.
- random_pet kullanarak Azure kaynak grubu adı için rastgele bir değer oluşturun.
- azurerm_resource_group kullanarak bir Azure kaynak grubu oluşturun.
- random_string Windows VM ana bilgisayar adı için rastgele bir değer oluşturun.
- random_password kullanarak Windows VM'leri için rastgele bir parola oluşturun.
- İşlem modülünü kullanarak bir Windows VM oluşturun.
- Ağ modülünü kullanarak alt ağ ile birlikte bir sanal ağ oluşturun.
Önkoşullar
Terraform kodunu uygulama
Not
Bu makalenin örnek kodu Azure Terraform GitHub deposunda bulunur. Terraform'un geçerli ve önceki sürümlerinden test sonuçlarını içeren günlük dosyasını görüntüleyebilirsiniz.
Azure kaynaklarını yönetmek için Terraform'un nasıl kullanılacağını gösteren diğer makalelere ve örnek koda bakın
Örnek Terraform kodunu test etmek ve geçerli dizin yapmak için bir dizin oluşturun.
adlı
providers.tf
bir dosya oluşturun ve aşağıdaki kodu ekleyin:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }
adlı
main.tf
bir dosya oluşturun ve aşağıdaki kodu ekleyin:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { name = random_pet.rg_name.id location = var.resource_group_location } resource "random_string" "windows_server_vm_hostname" { length = 8 lower = true upper = false special = false } resource "random_pet" "windows_server_public_ip_dns" { prefix = "dns" } resource "random_password" "password" { length = 16 special = true lower = true upper = true numeric = true } # The following module is a Terraform Verified Module. # For more information about Verified Modules, see # https://github.com/azure/terraform-azure-modules/ module "windows_server" { count = 3 # Define 3 Windows Server VMs source = "Azure/compute/azurerm" resource_group_name = azurerm_resource_group.rg.name vnet_subnet_id = module.network.vnet_subnets[0] is_windows_image = true vm_hostname = "vm-${random_string.windows_server_vm_hostname.result}-${count.index}" delete_os_disk_on_termination = true admin_password = random_password.password.result vm_os_simple = "WindowsServer" public_ip_dns = ["${random_pet.windows_server_public_ip_dns.id}-${count.index}"] } # The following module is a Terraform Verified Module. # For more information about Verified Modules, see # https://github.com/azure/terraform-azure-modules/ module "network" { source = "Azure/network/azurerm" resource_group_name = azurerm_resource_group.rg.name version = "5.2.0" subnet_prefixes = ["10.0.1.0/24"] subnet_names = ["subnet1"] use_for_each = true }
adlı
variables.tf
bir dosya oluşturun ve aşağıdaki kodu ekleyin:variable "resource_group_location" { type = string default = "eastus" description = "Location for all resources." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random value so name is unique in your Azure subscription." }
adlı
outputs.tf
bir dosya oluşturun ve aşağıdaki kodu ekleyin:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "windows_vm_public_names" { value = module.windows_server[*].public_ip_dns_name } output "vm_public_ip_addresses" { value = module.windows_server[*].public_ip_address } output "vm_private_ip_addresses" { value = module.windows_server[*].network_interface_private_ip } output "vm_hostnames" { value = module.windows_server[*].vm_names }
Terraform'u başlatma
Terraform dağıtımını başlatmak için terraform init komutunu çalıştırın. Bu komut, Azure kaynaklarınızı yönetmek için gereken Azure sağlayıcısını indirir.
terraform init -upgrade
Önemli noktalar:
-upgrade
parametresi, gerekli sağlayıcı eklentilerini yapılandırmanın sürüm kısıtlamalarına uygun en yeni sürüme yükseltir.
Terraform yürütme planı oluşturma
Terraform planını çalıştırarak yürütme planı oluşturun.
terraform plan -out main.tfplan
Önemli noktalar:
- komutu
terraform plan
bir yürütme planı oluşturur ancak yürütmez. Bunun yerine, yapılandırma dosyalarınızda belirtilen yapılandırmayı oluşturmak için hangi eylemlerin gerekli olduğunu belirler. Bu düzen, gerçek kaynaklarda değişiklik yapmadan önce yürütme planının beklentilerinizle eşleşip eşleşmediğini doğrulamanızı sağlar. - İsteğe bağlı
-out
parametresi, plan için bir çıkış dosyası belirtmenize olanak tanır. parametresinin-out
kullanılması, gözden geçirdiğiniz planın tam olarak uygulanan plan olmasını sağlar.
Terraform yürütme planı uygulama
Yürütme planını bulut altyapınıza uygulamak için terraform apply komutunu çalıştırın.
terraform apply main.tfplan
Önemli noktalar:
- Örnek
terraform apply
komut, daha önce komutunu çalıştırdığınızıterraform plan -out main.tfplan
varsayar. - parametresi için
-out
farklı bir dosya adı belirttiyseniz, çağrısındaterraform apply
aynı dosya adını kullanın. - parametresini
-out
kullanmadıysanız, parametresiz olarak çağırınterraform apply
.
Azure portalında olduğu gibi Terraform için sanal makine oluşturma işlemi sırasında maliyet bilgileri sunulmaz. Sanal makineler için maliyetin nasıl çalıştığı hakkında daha fazla bilgi edinmek istiyorsanız Maliyet iyileştirmeye Genel Bakış sayfasına bakın.
Sonuçları doğrulama
Azure kaynak grubu adını alın.
resource_group_name=$(terraform output -raw resource_group_name)
Kaynak grubunda oluşturulan sanal makinelerin adlarını görüntülemek için az vm list komutunu bir JMESPath sorgusuyla çalıştırın.
az vm list \ --resource-group $resource_group_name \ --query "[].{\"VM Name\":name}" -o table
Kaynakları temizleme
Terraform aracılığıyla oluşturulan kaynaklara artık ihtiyacınız kalmadığında aşağıdaki adımları uygulayın:
terraform planını çalıştırın ve bayrağını
destroy
belirtin.terraform plan -destroy -out main.destroy.tfplan
Önemli noktalar:
- komutu
terraform plan
bir yürütme planı oluşturur ancak yürütmez. Bunun yerine, yapılandırma dosyalarınızda belirtilen yapılandırmayı oluşturmak için hangi eylemlerin gerekli olduğunu belirler. Bu düzen, gerçek kaynaklarda değişiklik yapmadan önce yürütme planının beklentilerinizle eşleşip eşleşmediğini doğrulamanızı sağlar. - İsteğe bağlı
-out
parametresi, plan için bir çıkış dosyası belirtmenize olanak tanır. parametresinin-out
kullanılması, gözden geçirdiğiniz planın tam olarak uygulanan plan olmasını sağlar.
- komutu
Yürütme planını uygulamak için terraform apply komutunu çalıştırın.
terraform apply main.destroy.tfplan
Azure'da Terraform sorunlarını giderme
Azure'da Terraform kullanırken karşılaşılan yaygın sorunları giderme