Terrayform ve HCL ile Azure VM kümesi oluşturma
Bu makalede, HCLkullanarak küçük bir işlem kümesi oluşturmayı göreceksiniz.
Bu makalede şunları öğreneceksiniz:
- Azure kimlik doğrulamasını ayarlayın.
- Bir Terrayform yapılandırma dosyası oluşturun.
- Bir yük dengeleyici oluşturmak için bir Terrayform yapılandırma dosyası kullanın.
- Bir kullanılabilirlik kümesinde iki Linux VM dağıtmak için bir Terrayform yapılandırma dosyası kullanın.
- Terraform'u başlatın.
- Terrayform yürütme planı oluşturun.
- Azure kaynaklarını oluşturmak için Terrayform yürütme planını uygulayın.
1. ortamınızı yapılandırın
- Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Teroyform 'U Yapılandır: Henüz yapmadıysanız, aşağıdaki seçeneklerden birini kullanarak Terrayform 'u yapılandırın:
2. kodu uygulayın
Örnek Terüform kodunu test etmek ve geçerli dizin yapmak için bir dizin oluşturun.
terraform { required_version = ">=0.12" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>2.0" } } } provider "azurerm" { features {} } resource "azurerm_resource_group" "test" { name = "acctestrg" location = "West US 2" } resource "azurerm_virtual_network" "test" { name = "acctvn" address_space = ["10.0.0.0/16"] location = azurerm_resource_group.test.location resource_group_name = azurerm_resource_group.test.name } resource "azurerm_subnet" "test" { name = "acctsub" resource_group_name = azurerm_resource_group.test.name virtual_network_name = azurerm_virtual_network.test.name address_prefixes = ["10.0.2.0/24"] } resource "azurerm_public_ip" "test" { name = "publicIPForLB" location = azurerm_resource_group.test.location resource_group_name = azurerm_resource_group.test.name allocation_method = "Static" } resource "azurerm_lb" "test" { name = "loadBalancer" location = azurerm_resource_group.test.location resource_group_name = azurerm_resource_group.test.name frontend_ip_configuration { name = "publicIPAddress" public_ip_address_id = azurerm_public_ip.test.id } } resource "azurerm_lb_backend_address_pool" "test" { loadbalancer_id = azurerm_lb.test.id name = "BackEndAddressPool" } resource "azurerm_network_interface" "test" { count = 2 name = "acctni${count.index}" location = azurerm_resource_group.test.location resource_group_name = azurerm_resource_group.test.name ip_configuration { name = "testConfiguration" subnet_id = azurerm_subnet.test.id private_ip_address_allocation = "dynamic" } } resource "azurerm_managed_disk" "test" { count = 2 name = "datadisk_existing_${count.index}" location = azurerm_resource_group.test.location resource_group_name = azurerm_resource_group.test.name storage_account_type = "Standard_LRS" create_option = "Empty" disk_size_gb = "1023" } resource "azurerm_availability_set" "avset" { name = "avset" location = azurerm_resource_group.test.location resource_group_name = azurerm_resource_group.test.name platform_fault_domain_count = 2 platform_update_domain_count = 2 managed = true } resource "azurerm_virtual_machine" "test" { count = 2 name = "acctvm${count.index}" location = azurerm_resource_group.test.location availability_set_id = azurerm_availability_set.avset.id resource_group_name = azurerm_resource_group.test.name network_interface_ids = [element(azurerm_network_interface.test.*.id, count.index)] vm_size = "Standard_DS1_v2" # Uncomment this line to delete the OS disk automatically when deleting the VM # delete_os_disk_on_termination = true # Uncomment this line to delete the data disks automatically when deleting the VM # delete_data_disks_on_termination = true storage_image_reference { publisher = "Canonical" offer = "UbuntuServer" sku = "16.04-LTS" version = "latest" } storage_os_disk { name = "myosdisk${count.index}" caching = "ReadWrite" create_option = "FromImage" managed_disk_type = "Standard_LRS" } # Optional data disks storage_data_disk { name = "datadisk_new_${count.index}" managed_disk_type = "Standard_LRS" create_option = "Empty" lun = 0 disk_size_gb = "1023" } storage_data_disk { name = element(azurerm_managed_disk.test.*.name, count.index) managed_disk_id = element(azurerm_managed_disk.test.*.id, count.index) create_option = "Attach" lun = 1 disk_size_gb = element(azurerm_managed_disk.test.*.disk_size_gb, count.index) } os_profile { computer_name = "hostname" admin_username = "testadmin" admin_password = "Password1234!" } os_profile_linux_config { disable_password_authentication = false } tags = { environment = "staging" } }
3. Terrayform 'u başlatma
Terrayform dağıtımını başlatmak için terrayform init ' i çalıştırın.
terraform init
Anahtar noktaları:
- Bu komut, Azure Kaynak grubu oluşturmak için gereken Azure modüllerini indirir.
4. bir Terrayform yürütme planı oluşturma
Bir yürütme planı oluşturmak için terrayform planını çalıştırın.
terraform plan -out main.tfplan
Anahtar noktaları:
terraform planKomut 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 model, gerçek kaynaklarda herhangi bir değişiklik yapmadan önce yürütme planının beklentilerinizi eşleşip eşleşmediğini doğrulamanızı sağlar.- İsteğe bağlı
-outparametresi, plan için bir çıkış dosyası belirtmenize olanak tanır. Parametresinin kullanılması,-outgözden geçirdiğiniz planın tam olarak uygulanmış olmasını sağlar. - Kalıcı yürütme planları ve güvenlik hakkında daha fazla bilgi edinmek için güvenlik uyarısı bölümünebakın.
5. Teraform yürütme planı uygulama
Yürütme planını bulut altyapınıza uygulamak için terrayform uygulamasını çalıştırın.
terraform apply main.tfplan
Anahtar noktaları:
terraform applyYukarıdaki komutu daha önce çalıştırdığınız varsayılırterraform plan -out main.tfplan.- Parametresi için farklı bir dosya adı belirttiyseniz
-out, çağrısında aynı dosya adını kullanınterraform apply. -outParametresini kullanmıyorsanız, yalnızcaterraform applyherhangi bir parametre olmadan çağrı yapmanız yeterlidir.
6. sonuçları doğrulayın
Kaynak grubunda oluşturulan VM 'Leri göstermek için az VM List komutunu bir jmespath sorgusuyla çalıştırın.
az vm list -g acctestrg --query "[].{\"VM Name\":name}" -o table
7. Kaynakları Temizleme
Terrayform ile oluşturulan kaynaklara artık ihtiyacınız kalmadığında aşağıdaki adımları uygulayın:
Terrayform planını çalıştırın ve bayrağını belirtin .
terraform plan -destroy -out main.destroy.tfplanAnahtar noktaları:
terraform planKomut 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 model, gerçek kaynaklarda herhangi bir değişiklik yapmadan önce yürütme planının beklentilerinizi eşleşip eşleşmediğini doğrulamanızı sağlar.- İsteğe bağlı
-outparametresi, plan için bir çıkış dosyası belirtmenize olanak tanır. Parametresinin kullanılması,-outgözden geçirdiğiniz planın tam olarak uygulanmış olmasını sağlar. - Kalıcı yürütme planları ve güvenlik hakkında daha fazla bilgi edinmek için güvenlik uyarısı bölümünebakın.
Yürütme planını uygulamak için terrayform Uygula ' yı çalıştırın.
terraform apply main.destroy.tfplan
Azure 'da Terrampaform sorunlarını giderme
Azure 'da Terrampaform kullanırken karşılaşılan yaygın sorunları giderme