Aracılığıyla paylaş


Gelişmiş senaryolarda Terraform için Azure Export'ı kullanma

Bu makalede Terraform için Azure Dışarı Aktarma ile daha gelişmiş görevlerden bazılarının nasıl gerçekleştir olduğu açıklanmaktadır.

  • Kaynakları mevcut Terraform ortamlarına ekleyin.
  • Kaynakları uzak arka uç durumuna sahip mevcut bir Terraform ortamına dışarı aktarma

Mevcut kaynaklara ekleme

Varsayılan olarak Terraform için Azure Dışarı Aktarma, mevcut kullanıcı dosyalarıyla çakışmaları önlemek için çıkış dizininin boş olmasını sağlar. Kaynakları mevcut bir durum dosyasına aktarmanız gerekiyorsa bayrağını --append ekleyin.

aztfexport [command] --append <scope>

Bayrak belirtildiğinde --append Terraform için Azure Dışarı Aktarma, geçerli dizindeki dosyalardan herhangi birinde önceden var olan veya terraform engel olan provider bir dosya olup olmadığını doğrular. Aksi takdirde, araç her blok için bir dosya oluşturur ve dışarı aktarma işlemine devam eder. Çıkış dizininde durum dosyası varsa, dışarı aktarılan tüm kaynaklar durum dosyasına aktarılır.

Ayrıca, oluşturulan dosya, olası dosya adı çakışmalarını önlemek için uzantıdan main.aztfexport.tf önce bir .aztfexport son eke sahiptir.

Birden çok kez çalıştırırsanız aztfexport --append , komut her çalıştırıldığında dışarı aktarma sonuçları dosyaya eklenmiş olarak tek main.aztfexport.tf bir oluşturulur.

Kendi Terraform yapılandırmanızı getirme

Varsayılan olarak Terraform için Azure Dışarı Aktarma, durum dosyasını depolamak için yerel bir arka uç kullanır. Ancak uzak arka uç da kullanabilirsiniz. Terraform için Azure Dışarı Aktarma, geçirmek istediğiniz blokları veya provider kendi terraform bloklarınızı tanımlamanızı sağlar.

Bu blokları hedef dizininizdeki bir .tf dosyada tanımlayın, bayrağıyla dışarı aktarın --append ve yapılandırmanız belirtilen arka uç ve sağlayıcı sürümüne (sağlandıysa) dışarı aktarır.

Önemli

Dışarı aktarma sırasında belirtilen AzureRM sürümü yüklü sürümünüzle eşleşmiyorsa, komut başarısız olur.

Azure Depolama örneği

Bu örnek, Terraform durumunu Azure'da depolama Depolama makalesini temel alır.

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>3.0"
    }
  }
    backend "azurerm" {
        resource_group_name  = "tfstate"
        storage_account_name = "storageacc"
        container_name       = "tfstate"
        key                  = "terraform.tfstate"
    }

}

provider "azurerm" {
  features {}
}

Terraform Cloud örneği

terraform {
  cloud {
    organization = "aztfexport-test"
    workspaces {
      name = "aztfexport-playground"
    }
  }
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
      version = "~>3.0"
    }
  }
}
provider "azurerm" {
  features {
  }
}

Satır içi deneyim

Arka uç satır içinde dışarı aktarmak için ve --backend-config seçeneklerini kullanın--backend-type. Terraform arka ucu yapılandırma hakkında daha fazla bilgi için bkz . Terraform arka uç yapılandırması.

Azure depolama hesabı örneğimizi kullanarak, AzureRM arka uç belgelerinde açıklandığı gibi aşağıdakilere ihtiyacınız vardır.

  • Kaynak grubu adı
  • Depolama hesabı adı
  • kapsayıcı adını Depolama

Bu parametreleri arka uç türünüzle birlikte komutuna geçirin:

aztfexport [subcommand] --backend-type=azurerm \
                        --backend-config=resource_group_name=<resource group name> \
                        --backend-config=storage_account_name=<account name> \
                        --backend-config=container_name=<container name> \
                        --backend-config=key=terraform.tfstate 

Önemli noktalar:

  • Önceki örnekte, kodun tarayıcıda düzgün bir şekilde görüntülenebilmesi için Unix satır devamlılığı karakterini kullanıyorum. Bu karakterleri PowerShell gibi komut satırı ortamınızla eşleşecek şekilde değiştirmeniz veya komutu tek bir satırda birleştirmeniz gerekebilir.
  • Arka uç durumu zaten varsa Terraform için Azure Dışarı Aktarma yeni kaynakları otomatik olarak mevcut durumla birleştirir. Seçeneği satır içi olarak belirtmeniz --append gerekmez.

Azure kaynaklarını mevcut terraform ortamına aktarma

Şimdi hepsini bir araya getirelim! Terraform'un dışında Terraform yönetimine taşınması gereken yeni kaynakların oluşturulduğunu düşünün. Bölümü tamamlamak için bir arka ucun yapılandırıldığından emin olun. Bu öğretici, Azure depolama uzak durumu öğreticisinde belirtilen yapılandırmanın aynısını kullanır.

  1. Geçici dizinin oluşturulmasını istediğiniz üst dizinde aşağıdaki komutu çalıştırın:

    aztfexport resource -o tempdir --hcl-only <resource_id>
    

    Önemli noktalar:

    • -o bayrağı, yoksa dizinin oluşturulacağını belirtir.
    • bayrağı, --hcl-only yapılandırılan kaynakların HCL'ye dışarı aktarıldığını belirtir
  2. Kaynağın eklenebildiğini denetledikten sonra Oluşturulan eşleme dosyasını ve --append bayrağını kullanarak Azure Dışarı Aktarma'nın mevcut ortamımızdaki önceden var olan uzak durum ve sağlayıcı sürümlerine uygun olduğundan emin olun:

    aztfexport map --append `./tempdir/aztfexportResourceMapping.json`
    
  3. terraform init komutunu çalıştırın.

    terraform init --upgrade
    
  4. Terraform planını çalıştırın.

  5. Terraform için Azure Dışarı Aktarma'da Değişiklik gerekmez görüntülenmelidir.

Tebrikler! Altyapınız ve ilgili durumu Terraform ortamınıza başarıyla eklendi.

Planınız sorunlarla karşılaşırsa, tarafından --hcl-onlyoluşturulan kodu dağıtmayla ilgili sınırlamaları anlamak için bkz. Terraform için Azure Dışarı Aktarma kavramları. Bu makale size yardımcı olmazsa bir GitHub sorunu açın.

Sonraki adımlar