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 Depolama'da 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ı
- Depolama kapsayıcısı adı
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.
Sorgunuzu daha fazla özelleştirme
Aşağıdaki ek gelişmiş bayrakların nasıl kullanıldığı açıklanmıştır:
Bulut ortamını seçme
Genel bulut dışında farklı bir ortam belirtmek için bayrağını --env
kullanın. Örneğin, US Government için:
aztfexport [command] --env="usgovernment" [further options] <scope>
Terraform sağlayıcı sürümünü değiştirme
Tercih edilen AzureRM
veya AzAPI
sürüme daha basit erişim için bayrağını --provider-version
kullanın. Örneğin, sürümündeyseniz AzAPI
1.10.0
:
aztfexport [command] --provider-name=azapi --provider-version=1.10.0 [further options] <scope>
Kimlik Doğrulaması
Kimlik doğrulama yapılandırmasını yönetmek için çeşitli bayraklar vardır. Bazı bayraklar şu kadar v0.15
geç eklendi:
--env
--tenant-id
--auxiliary-tenant-ids
--client-id
--client-id-file-path
--client-certificate
--client-certificate-path
--client-certificate-password
--client-secret
--client-secret-file-path
--oidc-request-token
--oidc-request-url
--oidc-token
--oidc-token-file-path
--use-managed-identity-cred
(varsayılan olarak false olur)--use-azure-cli-cred
(varsayılan olarak true olarak ayarlanır)--use-oidc-cred
(varsayılan olarak false olur)
Yukarıdaki bayraklar sağlayıcının adlandırma kuralına azurerm
uyar. Tüm bayraklar, sağlayıcıda azurerm
tanımlanan ortam değişkenini içeren ortam değişkenleri aracılığıyla da yapılandırılabilir.
aztfexport
kimlik bilgisi türlerinin her biriyle kimlik doğrulaması yapmaya çalışır, aşağıdaki sırayla, belirteç sağlandığında durduruluyor:
- İstemci gizli anahtarı
- İstemci sertifikası
- OIDC
- Yönetilen kimlik
- Azure CLI
Bir veya daha fazla use-xxx-cred
doğru değilse, bu kimlik bilgisi türü atlanır. Bu davranış sağlayıcıyla aynıdır.
Sağlayıcı yapılandırması, herhangi bir kimlik doğrulama yapılandırmasını geçersiz aztfexport
kılabilir. Bu, kullanıcıların ve sağlayıcı arasında aztfexport
farklı kimlik bilgileri türleri kullanmasını mümkün kılar.
Rol atamalarını ekleme
Kaynak kapsamınızı dışarı aktarırken rol atamaları eklemek istiyorsanız komutunu kullanın --include-role-assignment
:
aztfexport [command] --include-role-assignment [further options] <scope>