Bash ile Windows'a Terraform yükleme
Terraform , bulut altyapısının tanımlanmasını, önizlemesini ve dağıtımını sağlar. Terraform kullanarak HCL söz dizimlerini kullanarak yapılandırma dosyaları oluşturursunuz. HCL söz dizimi, Azure gibi bulut sağlayıcısını ve bulut altyapınızı oluşturan öğeleri belirtmenize olanak tanır. Yapılandırma dosyalarınızı oluşturduktan sonra, altyapı değişikliklerinizin dağıtılmadan önce önizlemesini görüntülemenizi sağlayan bir yürütme planı oluşturursunuz. Değişiklikleri doğruladıktan sonra, altyapıyı dağıtmak için yürütme planını uygularsınız.
Bu makalede Terraform ile kullanmak üzere Azure'da kimlik doğrulaması yapma seçenekleri sunulur.
Bu makalede şunları öğreneceksiniz:
- Git Bash terminal öykünücüsü yükleme
- Azure CLI'yı yükleme
- Terraform'u yükleme
- Ortamınızı Terraform'u Windows'da çalıştıracak şekilde yapılandırma
- Yaygın Terraform ve Azure kimlik doğrulama senaryolarını anlama
- Cloud Shell'den bir Microsoft hesabı aracılığıyla kimlik doğrulaması (Bash veya PowerShell kullanarak)
- Windows'tan bir Microsoft hesabı aracılığıyla kimlik doğrulaması (Bash veya PowerShell kullanarak)
- Azure CLI kullanarak hizmet sorumlusu oluşturma
- Azure PowerShell’i kullanarak hizmet sorumlusu oluşturma
- Ortam değişkenlerinde hizmet sorumlusu kimlik bilgilerini belirtme
- Terraform sağlayıcı bloğunda hizmet sorumlusu kimlik bilgilerini belirtme
1. Ortamınızı yapılandırma
- Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
2. Terminal öykünücüsü yükleme
Windows'ta Bash komutlarını çalıştırmak için Git Bash ve Windows Terminali gibi birçok seçenek vardır. Bu makale Git Bash kullanılarak test edilmiştir. Git Bash'i indirin ve yükleyin.
3. Azure CLI'yi yükleme
Azure CLI'yi yükleyin. Bu makale, Azure CLI sürüm 2.26.1 kullanılarak test edilmiştir.
4. Windows için Terraform'u yükleme
Terraform'ı indirin. Bu makale Terraform sürüm 1.1.4 kullanılarak test edilmiştir.
İndirmeden, yürütülebilir dosyayı seçtiğiniz bir dizine (örneğin,
c:\terraform
) ayıklayın.Sisteminizin genel PATH ortam değişkenini yürütülebilir dosyayı içeren dizini içerecek şekilde güncelleştirin.
Bir terminal penceresi açın.
komutuyla
terraform
genel yol yapılandırmasını doğrulayın.terraform -version
5. Terraform'un kimliğini Azure'da doğrulama
Terraform ve Azure kimlik doğrulama senaryoları
Terraform yalnızca Azure CLI aracılığıyla Azure'da kimlik doğrulamayı destekler. Azure PowerShell kullanarak kimlik doğrulaması desteklenmez. Bu nedenle Terraform çalışmanızı yaparken Azure PowerShell modülünü kullanabilirsiniz ancak önce Azure CLI kullanarak Azure'da kimlik doğrulaması yapmanız gerekir.
Bu makalede, aşağıdaki senaryolar için Terraform'un Azure'da kimlik doğrulaması nasıl yapılır açıklanmaktadır. Terraform'un Azure'da kimliğini doğrulama seçenekleri hakkında daha fazla bilgi için bkz . Azure CLI kullanarak kimlik doğrulama.
- Cloud Shell kullanarak bir Microsoft hesabı üzerinden kimlik doğrulaması (Bash veya PowerShell ile)
- Windows kullanarak bir Microsoft hesabı aracılığıyla kimlik doğrulaması (Bash veya PowerShell ile)
- Hizmet sorumlusu aracılığıyla kimlik doğrulaması:
- Hizmet sorumlunuz yoksa bir hizmet sorumlusu oluşturun.
- Ortam değişkenlerini kullanarak Azure'da kimlik doğrulaması yapın veya Terraform sağlayıcı bloğunu kullanarak Azure'da kimlik doğrulaması yapın
Microsoft hesabı aracılığıyla Azure'da kimlik doğrulaması
Microsoft hesabı, Azure gibi Microsoft hizmetleri oturum açmak için kullanılan bir kullanıcı adıdır (e-posta ve kimlik bilgileriyle ilişkilendirilmiş). Bir Microsoft hesabı, bir veya daha fazla Azure aboneliğiyle ilişkilendirilebilir ve bu aboneliklerden biri varsayılandır.
Aşağıdaki adımlarda aşağıdaki adımların nasıl yapıldığını gösterir:
- Microsoft hesabı kullanarak Azure'da etkileşimli olarak oturum açma
- Hesabın ilişkili Azure aboneliklerini listeleme (varsayılan abonelik dahil)
- Geçerli aboneliği ayarlayın.
Azure CLI'ya erişimi olan bir komut satırı açın.
Az login komutunu herhangi bir parametre olmadan çalıştırın ve Azure'da oturum açmak için yönergeleri izleyin.
az login
Önemli noktalar:
- Oturum başarıyla açıldıktan sonra,
az login
varsayılan abonelik de dahil olmak üzere oturum açmış Microsoft hesabıyla ilişkili Azure aboneliklerinin listesini görüntüler.
- Oturum başarıyla açıldıktan sonra,
Geçerli Azure aboneliğini onaylamak için az account show komutunu çalıştırın.
az account show
Belirli bir Microsoft hesabının tüm Azure abonelik adlarını ve kimliklerini görüntülemek için az account list komutunu çalıştırın.
az account list --query "[?user.name=='<microsoft_account_email>'].{Name:name, ID:id, Default:isDefault}" --output Table
Önemli noktalar:
- Yer tutucuyu
<microsoft_account_email>
, Azure aboneliklerini listelemek istediğiniz Microsoft hesabı e-posta adresiyle değiştirin. - Hotmail veya Outlook gibi bir Live hesabıyla, tam e-posta adresini belirtmeniz gerekebilir. Örneğin, e-posta adresiniz ise
admin@hotmail.com
yer tutucuyu ilelive.com#admin@hotmail.com
değiştirmeniz gerekebilir.
- Yer tutucuyu
Belirli bir Azure aboneliğini kullanmak için az account set komutunu çalıştırın.
az account set --subscription "<subscription_id_or_subscription_name>"
Önemli noktalar:
- Yer tutucuyu
<subscription_id_or_subscription_name>
, kullanmak istediğiniz aboneliğin kimliği veya adıyla değiştirin. - Arama
az account set
, belirtilen Azure aboneliğine geçmenin sonuçlarını görüntülemez. Ancak, geçerli Azure aboneliğinin değiştiğini onaylamak için kullanabilirsinizaz account show
. - Önceki adımda komutunu
az account list
çalıştırırsanız, varsayılan Azure aboneliğinin ileaz account set
belirttiğiniz aboneliğe değiştiğini görürsünüz.
- Yer tutucuyu
Hizmet sorumlusu oluşturma
Terraform gibi Azure hizmetlerini dağıtan veya kullanan otomatik araçlar her zaman kısıtlı izinlere sahip olmalıdır. Azure, uygulamalarda tamamen ayrıcalıklı bir kullanıcı olarak oturum açma olması yerine hizmet sorumluları sağlar.
En yaygın desen, Azure'da etkileşimli olarak oturum açmak, bir hizmet sorumlusu oluşturmak, hizmet sorumlusunu test etmek ve sonra bu hizmet sorumlusunu gelecekteki kimlik doğrulaması için (etkileşimli olarak veya betiklerinizden) kullanmaktır.
Hizmet sorumlusu oluşturmak için Azure'da oturum açın. Bir Microsoft hesabı aracılığıyla Azure'da kimlik doğrulaması yaptıktan sonra buraya dönün.
Git Bash'ten bir hizmet sorumlusu oluşturuyorsanız ortam değişkenini
MSYS_NO_PATHCONV
ayarlayın. (Cloud Shell kullanıyorsanız bu adım gerekli değildir.)export MSYS_NO_PATHCONV=1
Önemli noktalar:
- Ortam değişkenini
MSYS_NO_PATHCONV
genel olarak (tüm terminal oturumları için) veya yerel olarak (yalnızca geçerli oturum için) ayarlayabilirsiniz. Hizmet sorumlusu oluşturmak sık yaptığınız bir şey olmadığından, örnek geçerli oturum için değeri ayarlar. Bu ortam değişkenini genel olarak ayarlamak için, ayarı dosyaya~/.bashrc
ekleyin.
- Ortam değişkenini
Hizmet sorumlusu oluşturmak için az ad sp create-for-rbac komutunu çalıştırın.
az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>
Önemli noktalar:
- öğesini ortamınız için özel bir adla değiştirebilir
<service-principal-name>
veya parametresini tamamen atlayabilirsiniz. parametresini atlarsanız, hizmet asıl adı geçerli tarih ve saat temelinde oluşturulur. - Başarıyla tamamlandıktan sonra birkaç
az ad sp create-for-rbac
değer görüntüler.appId
,password
vetenant
değerleri sonraki adımda kullanılır. - Parola kaybolursa alınamaz. Bu nedenle, parolanızı güvenli bir yerde depolamanız gerekir. Parolanızı unutursanız hizmet sorumlusu kimlik bilgilerini sıfırlayabilirsiniz.
- Bu makale için Katkıda Bulunan rolüne sahip bir hizmet sorumlusu kullanılıyor. Rol Tabanlı Erişim Denetimi (RBAC) rolleri hakkında daha fazla bilgi için bkz . RBAC: Yerleşik roller.
- Hizmet sorumlusu oluşturma çıktısı hassas kimlik bilgilerini içerir. Bu kimlik bilgilerini kodunuza eklemediğinizden veya kaynak denetiminizde kimlik bilgilerini denetlemediğinizden emin olun.
- Azure CLI ile hizmet sorumlusu oluşturma seçenekleri hakkında daha fazla bilgi için Azure CLI ile Azure hizmet sorumlusu oluşturma makalesine bakın.
- öğesini ortamınız için özel bir adla değiştirebilir
Ortam değişkenlerinde hizmet sorumlusu kimlik bilgilerini belirtme
Hizmet sorumlusu oluşturduktan sonra ortam değişkenleri aracılığıyla Terraform'a kimlik bilgilerini belirtebilirsiniz.
~/.bashrc
Aşağıdaki ortam değişkenlerini ekleyerek dosyayı düzenleyin.export ARM_SUBSCRIPTION_ID="<azure_subscription_id>" export ARM_TENANT_ID="<azure_subscription_tenant_id>" export ARM_CLIENT_ID="<service_principal_appid>" export ARM_CLIENT_SECRET="<service_principal_password>"
Betiği yürütmek
~/.bashrc
için komutunu (veya kısaltılmış eşdeğerini. ~/.bashrc
) çalıştırınsource ~/.bashrc
. Ayrıca betiğin otomatik olarak çalışması için Cloud Shell'de çıkıp yeniden açabilirsiniz.. ~/.bashrc
Ortam değişkenleri ayarlandıktan sonra, değerlerini aşağıdaki gibi doğrulayabilirsiniz:
printenv | grep ^ARM*
Önemli noktalar:
- Herhangi bir ortam değişkeninde olduğu gibi, Terraform betiğinin içinden bir Azure abonelik değerine erişmek için aşağıdaki söz dizimini kullanın:
${env.<environment_variable>}
. Örneğin, değerine erişmekARM_SUBSCRIPTION_ID
için değerini belirtin${env.ARM_SUBSCRIPTION_ID}
. - Terraform yürütme planlarının oluşturulması ve uygulanması, hizmet sorumlusuyla ilişkili Azure aboneliğinde değişiklikler yapar. Bir Azure aboneliğinde oturum açtıysanız ve ortam değişkenleri ikinci bir Azure aboneliğine işaret ederse bu durum bazen kafa karıştırıcı olabilir. Şimdi açıklamak için aşağıdaki örneğe bakalım. İki Azure aboneliğiniz olduğunu varsayalım: SubA ve SubB. Ortam değişkenleri SubB'yi işaret ederken geçerli Azure aboneliği SubA (aracılığıyla
az account show
belirlenir) ise Terraform tarafından yapılan tüm değişiklikler SubB'de olur. Bu nedenle, değişikliklerinizi görüntülemek için Azure CLI komutlarını veya Azure PowerShell komutlarını çalıştırmak için SubB aboneliğinizde oturum açmanız gerekir.
Terraform sağlayıcı bloğunda hizmet sorumlusu kimlik bilgilerini belirtme
Azure sağlayıcı bloğu, Azure aboneliğinizin kimlik doğrulama bilgilerini belirtmenize olanak tanıyan söz dizimini tanımlar.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>2.0"
}
}
}
provider "azurerm" {
features {}
subscription_id = "<azure_subscription_id>"
tenant_id = "<azure_subscription_tenant_id>"
client_id = "<service_principal_appid>"
client_secret = "<service_principal_password>"
}
# Your code goes here
Dikkat
Azure aboneliği kimlik bilgilerinizi bir Terraform yapılandırma dosyasında belirtme özelliği, özellikle test ederken kullanışlı olabilir. Ancak, kimlik bilgilerinin güvenilir olmayan kişiler tarafından görüntülenebilen bir düz metin dosyasında depolanması önerilmez.
Azure'da Terraform sorunlarını giderme
Azure'da Terraform kullanırken karşılaşılan yaygın sorunları giderme
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