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.
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
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`
terraform init komutunu çalıştırın.
terraform init --upgrade
Terraform planını çalıştırın.
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-only
oluş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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin