Bash ile Azure Cloud Shell'de Terraform'ı yapılandırma
Terraform , bulut altyapısının tanımı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:
- Cloud Shell yapılandırma
- Geçerli Azure hesabını görüntüleme
- Yaygın Terraform ve Azure kimlik doğrulama senaryolarını anlama
- Cloud Shell'dan microsoft hesabı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. Cloud Shell açın
Zaten açık bir Cloud Shell oturum varsa sonraki bölüme atlayabilirsiniz.
Azure portalına gidin
Gerekirse Azure aboneliğinizde oturum açın ve Azure dizinini değiştirin.
Cloud Shell'i açın.
Daha önce Cloud Shell kullanmadıysanız ortam ve depolama ayarlarını yapılandırın.
Komut satırı ortamını seçin.
3. Terraform'un en son sürümünü Azure Cloud Shell'a yükleyin
Cloud Shell Terraform'un en son sürümüne otomatik olarak güncelleştirilir. Ancak güncelleştirmeler yayından itibaren birkaç hafta içinde kullanıma sunulur. Bu makalede Terraform'un geçerli sürümünü indirme ve yükleme işlemi gösterilmektedir.
Cloud Shell kullanılan Terraform sürümünü belirleyin.
terraform version
Cloud Shell'de yüklenen Terraform sürümü en son sürüm değilse Terraform sürümünün güncel olmadığını belirten bir ileti görürsünüz.
Belirtilen sürümle iyi çalışıyorsanız sonraki bölüme geçin. Aksi takdirde, aşağıdaki adımlarla devam edin.
Ekranı aşağı kaydırarak Linux indirme bağlantılarına gidin.
Farenizi 64 bit bağlantının üzerine getirin. Bu bağlantı, Cloud Shell için uygun olan en son 64 bit Linux AMD sürümüne yöneliktir.
URL'yi kopyalayın.
komutunu çalıştırın
curl
ve yer tutucusunu önceki adımdaki URL ile değiştirin.curl -O <terraform_download_url>
Dosyanın sıkıştırmasını açın.
unzip <zip_file_downloaded_in_previous_step>
Dizin yoksa adlı
bin
bir dizin oluşturun.mkdir bin
terraform
Dosyayı dizininebin
taşıyın.mv terraform bin/
Cloud Shell kapatın ve yeniden başlatın.
Terraform'un indirilen sürümünün yolda ilk olduğunu doğrulayın.
terraform version
4. Varsayılan Azure aboneliğini doğrulama
bir Microsoft hesabıyla Azure portal oturum açtığınızda, bu hesabın varsayılan Azure aboneliği kullanılır.
Terraform, varsayılan Azure aboneliğindeki bilgileri kullanarak otomatik olarak kimlik doğrulaması yapar.
Geçerli Microsoft hesabını ve Azure aboneliğini doğrulamak için az account show komutunu çalıştırın.
az account show
Terraform aracılığıyla yaptığınız tüm değişiklikler, görüntülenen Azure aboneliğine göre değişir. İstediğiniz buysa, bu makalenin geri kalanını atlayın.
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 kimliğini doğrulama adımları 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 (Bash veya PowerShell ile) kullanarak bir Microsoft hesabıyla kimlik doğrulama ve
- Windows kullanarak microsoft hesabıyla kimlik doğrulaması (Bash veya PowerShell ile)
- Hizmet sorumlusu aracılığıyla kimlik doğrulaması:
Microsoft hesabıyla Azure'da kimlik doğrulaması
Microsoft hesabı, Azure gibi Microsoft hizmetlerinde oturum açmak için kullanılan bir kullanıcı adıdır (e-posta ve kimlik bilgileriyle ilişkilendirilir). Bir Microsoft hesabı bir veya daha fazla Azure aboneliğiyle ilişkilendirilebilir ve bu aboneliklerden biri varsayılandır.
Aşağıdaki adımlarda, Bir Microsoft hesabı kullanarak Azure'da etkileşimli olarak oturum açma, hesabın ilişkili Azure aboneliklerini listeleme (varsayılan dahil) ve geçerli aboneliği ayarlama işlemleri gösterilir.
Azure CLI'ya erişimi olan bir komut satırı açın.
Herhangi bir parametre olmadan az login komutunu ç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, uygulamaların tam ayrıcalığa sahip kullanıcılar olarak oturum açmasına izin vermek yerine hizmet sorumlularını sunuyor.
En yaygın desen Azure'da etkileşimli olarak oturum açmak, bir hizmet sorumlusu oluşturmak, hizmet sorumlusunu test etmek ve daha sonra gelecekte kimlik doğrulaması için (etkileşimli olarak veya betiklerinizden) bu hizmet sorumlusunu kullanmaktır.
Hizmet sorumlusu oluşturmak için Azure'da oturum açın. Microsoft hesabıyla Azure'da kimlik doğrulaması yaptıktan sonra buraya dönün.
Git Bash'ten 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 bir sonraki adımda kullanılır. - Parola kaybolursa alınamaz. Bu nedenle, parolanızı güvenli bir yerde saklamalısınız. 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. Role-Based Access Control (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. Kodunuzda bu kimlik bilgilerini içermediğinizden emin olun veya kaynak denetiminizde kimlik bilgilerini denetleyin.
- 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
. Betiğin otomatik olarak çalışması için Cloud Shell da çı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 aboneliği 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 göz atalı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 üzerindedir. 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 AltB 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
Terraform yapılandırma dosyasında Azure aboneliği kimlik bilgilerinizi belirtme özelliği, özellikle test sırasında 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