Başlarken: Terraform'Azure Cloud Shell Azure PowerShell
Terraform, bulut altyapısının tanımını, önizlemesini ve dağıtımını sağlar. Terraform kullanarak HCL söz dizimi kullanarak yapılandırma dosyaları oluşturabilirsiniz. HCL söz dizimi, Azure gibi bulut sağlayıcısını ve bulut altyapınızı sağlayan öğeleri belirtmenize olanak sağlar. Yapılandırma dosyalarınızı oluşturduk sonra, altyapı değişikliklerinizi dağıtıldıktan önce önizlemenize olanak sağlayan bir yürütme planı oluşturun. Değişiklikleri doğrularken, altyapıyı dağıtmak için yürütme planını uygulayabilirsiniz.
Bu makalede Azure'da Azure'da Terraform'a Cloud Shell PowerShell'i nasıl kullanmaya başlayabilirsiniz?
Bu makalede şunları öğreneceksiniz:
- Yapılandırma Cloud Shell
- Yaygın Terraform ve Azure kimlik doğrulama senaryolarını anlama
- Cloud Shell 'den Microsoft hesabı kimlik doğrulaması (Bash veya PowerShell kullanarak)
- Windows Microsoft hesabı (Bash veya PowerShell kullanarak) bir ağ üzerinden kimlik doğrulaması yapma
- Azure CLI kullanarak hizmet sorumlusu oluşturma
- Azure PowerShell’i kullanarak hizmet sorumlusu oluşturma
- Ortam değişkenlerde 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. Açık Cloud Shell
Zaten açık bir Cloud Shell varsa sonraki bölüme atlayabilirsiniz.
Azure portalına gidin
Gerekirse, Azure aboneliğinde oturum açma ve Azure dizinini değiştirme.
Cloud Shell'i açın.
Daha önce bu ayarları Cloud Shell ortam ve depolama ayarlarını yapılandırmanız gerekir.
Komut satırı ortamını seçin.
3. Terraform'un en son sürümünü Azure Cloud Shell
Cloud Shell birkaç hafta içinde Terraform'un en son sürümüne otomatik olarak güncelleştirmeler yapılır. Öte yandan en son sürüme daha erken ihtiyacınız varsa aşağıdaki adımlar Terraform'un geçerli sürümünü indirme ve yükleme adımlarını gösterir.
Verilerde kullanılan Terraform sürümünü Cloud Shell.
terraform versionCloud Shell'da yüklü Terraform sürümü en son sürüm değilse Terraform sürümünün güncel olmadığını belirten bir iletiyle karşınız olur.
Belirtilen sürümle iyi çalışıyorsanız sonraki bölüme atlayabilirsiniz. Aksi takdirde aşağıdaki adımlarla devam edin.
Terraform indirme sayfasına göz atın.
Linux indirme bağlantılarına inin.
Farenizi 64 bit bağlantının üzerine sürükleyin. Bu, en son 64 bit Linux AMD sürümünün bağlantısıdır ve bu bağlantı, Cloud Shell.
URL'yi kopyalayın.
yer
curltutucusunu önceki adımda yer alan URL ile değiştirerek çalıştırın.curl -O <terraform_download_url>Dosyanın sıkıştırmasını açın.
unzip <zip_file_downloaded_in_previous_step>Dizin yoksa adlı bir dizin
binoluşturun.mkdir binDosyayı
terraformdizininebintaşıma.mv terraform bin/Terraform'un indirilen sürümünün ilk olarak yolda olduğunu doğrulayın.
terraform version
4. Varsayılan Azure aboneliğini doğrulama
Hesapta bir Azure portal oturum Microsoft hesabı hesabın varsayılan Azure aboneliği kullanılır.
Terraform, varsayılan Azure aboneliğinden alınan bilgileri kullanarak otomatik olarak kimlik doğrulamasından geçin.
Geçerli aboneliği ve Azure aboneliğini doğrulamak için az account show Microsoft hesabı ç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 karşı olur. Bunu yapmak istemiyorsanız bu makalenin geri kalanını atlayabilirsiniz.
5. Terraform'dan Azure'a kimlik doğrulaması
Terraform ve Azure kimlik doğrulama senaryoları
Terraform yalnızca Azure CLI aracılığıyla Azure'da kimlik doğrulamayı destekler. Kimlik doğrulama Azure PowerShell kimlik doğrulama desteklenmiyor. Bu nedenle Terraform çalışmanızı yaparken Azure PowerShell modülünü kullanabilirsiniz ancak önce Azure CLI'yı kullanarak Azure'da kimlik doğrulamanız gerekir.
Bu makalede aşağıdaki senaryolar için Terraform'dan Azure'a kimlik doğrulaması yapma adımları açıklanmıştır. Terraform'da Azure'da kimlik doğrulaması yapma seçenekleri hakkında daha fazla bilgi için bkz. Azure CLI kullanarak kimlik doğrulama.
- Cloud Shell kullanarak Microsoft hesabı (Bash veya PowerShell ile) ve
- Windows kullanarak Microsoft hesabı kimlik doğrulama (Bash veya PowerShell ile)
- Hizmet sorumlusu aracılığıyla kimlik doğrulama:
Azure'da kimlik doğrulaması Microsoft hesabı
Bu Microsoft hesabı, Azure gibi bir kullanıcı adı (e-posta ve kimlik bilgileriyle ilişkilendirilmiş) Microsoft hizmetleri oturum açmak için kullanılan kullanıcı adıdır. Bir Microsoft hesabı bir veya daha fazla Azure aboneliğiyle ilişkilendirilebilirsiniz ve bu aboneliklerden biri varsayılan değerdir.
Aşağıdaki adımlarda, Azure'da bir Microsoft hesabı kullanarak etkileşimli olarak oturum açma, hesabın ilişkili Azure aboneliklerini (varsayılan dahil) listele ve geçerli aboneliği ayarlama işlemleriyle ilgili bilgiler ve bilgiler yer alır.
Azure CLI erişimi olan bir komut satırı açın.
az login dosyasını parametre olmadan çalıştırın ve yönergeleri izleyerek Azure'da oturum açma.
az loginÖnemli noktalar:
- Başarılı bir oturum açma ardından, varsayılan abonelik de dahil olmak üzere oturum Microsoft hesabı Azure
az loginaboneliklerinin listesini görüntüler.
- Başarılı bir oturum açma ardından, varsayılan abonelik de dahil olmak üzere oturum Microsoft hesabı Azure
Geçerli Azure aboneliğini onaylamak için az account show çalıştırın.
az account showBelirli bir hesabın tüm Azure abonelik adlarını ve kimliklerini görüntülemek Microsoft hesabı az account list çalıştırın.
az account list --query "[?user.name=='<microsoft_account_email>'].{Name:name, ID:id, Default:isDefault}" --output TableÖnemli noktalar:
- yer
<microsoft_account_email>tutucusunu Azure aboneliklerini Microsoft hesabı e-posta adresiyle değiştirin. - Hotmail veya outlook gibi bir Canlı hesap ile tam e-posta adresini belirtmeniz gerekir. Örneğin, e-posta adresiniz ise
admin@hotmail.comyer tutucusunu ile değiştirmenizlive.com#admin@hotmail.comgerekir.
- yer
Belirli bir Azure aboneliğini kullanmak için az account set çalıştırın.
az account set --subscription "<subscription_id_or_subscription_name>"Önemli noktalar:
- yer
<subscription_id_or_subscription_name>tutucusunu kullanmak istediğiniz aboneliğin kimliği veya adıyla değiştirin. - Çağrısı,
az account setbelirtilen Azure aboneliğine geçişin sonuçlarını görüntülemez. Ancak, geçerliaz account showAzure aboneliğinin değiştiğini onaylamak için kullanabilirsiniz. - Önceki adımda komutunu çalıştırdıysanız, varsayılan Azure aboneliğinin ile
az account listbelirttiğiniz aboneliğe değiştiğiniaz account setgörüyorsunuz.
- yer
Hizmet sorumlusu oluşturma
Terraform gibi Azure hizmetlerini dağıtan veya kullanan otomatik araçların her zaman kısıtlı izinlere sahip olması gerekir. Azure, uygulamaların tam ayrıcalıklı bir kullanıcı olarak oturum açması yerine hizmet sorumluları sunar.
En yaygın düzen, Azure'da etkileşimli olarak oturum açmak, bir hizmet sorumlusu oluşturmak, hizmet sorumlularını test etmek ve ardından bu hizmet sorumlularını gelecekteki kimlik doğrulaması (etkileşimli olarak veya betikleriniz aracılığıyla) için kullanmaktır.
Hizmet sorumlusu oluşturmak için Azure'da oturum açma. Azure'da kimlik doğrulamadan sonra Microsoft hesabıburaya geri dön.
Git Bash'te hizmet sorumlusu oluşturuyorsanız ortam
MSYS_NO_PATHCONVdeğişkenlerini ayarlayın. (Uygulama kullanıyorsanız bu adım Cloud Shell.)export MSYS_NO_PATHCONV=1Önemli noktalar:
- Ortam değişkenlerini genel olarak (tüm terminal oturumları için) veya yerel
MSYS_NO_PATHCONVolarak (yalnızca geçerli oturum için) ayarlayın. Hizmet sorumlusu oluşturmak sık sık değil, örnek geçerli oturum için değeri ayarlar. Bu ortam değişkenlerini genel olarak ayarlamak için ayarı dosyaya~/.bashrcekleyin.
- Ortam değişkenlerini genel olarak (tüm terminal oturumları için) veya yerel
Hizmet sorumlusu oluşturmak için az ad sp create-for-rbac çalıştırın.
az ad sp create-for-rbac --name <service_principal_name> --role ContributorÖnemli noktalar:
- parametresini
<service-principal-name>ortamınız için özel bir adla değiştirebilir veya parametresini tamamen atabilirsiniz. parametresini atlarsanız, hizmet asıl adı geçerli tarih ve saat temel alarak oluşturulur. - Başarıyla tamamlandıktan
az ad sp create-for-rbacsonra birkaç değer görüntüler.appId,passwordvetenantdeğerleri bir sonraki adımda kullanılır. - Parola kaybolursa alınamıyor. Bu nedenle parolanızı güvenli bir yerde depolamanız gerekir. Parolanızı unutursanız hizmet sorumlusu kimlik bilgilerini sıfırlayabilirsiniz.
- Bu makalede Katkıda Bulunan rolüne sahip bir hizmet sorumlusu kullanılmaktadır. Yönetim (RBAC) Role-Based Access Control daha fazla bilgi için bkz. RBAC: Yerleşik roller.
- Hizmet sorumlusu oluşturmanın çıktısı hassas kimlik bilgilerini içerir. Bu kimlik bilgilerini kodunuza dahil etmeyebilirsiniz veya kimlik bilgilerini kaynak denetiminize kontrol edin.
- 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.
- parametresini
Ortam değişkenlerde hizmet sorumlusu kimlik bilgilerini belirtme
Hizmet sorumlusu oluşturdukta, ortam değişkenleri aracılığıyla terraform kimlik bilgilerini belirtebilirsiniz.
Aşağıdaki
~/.bashrcortam değişkenlerini ekleyerek dosyasını 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
~/.bashrciçinsource ~/.bashrc(veya kısaltılmış eşdeğerini). ~/.bashrcçalıştırın. Betiğin otomatik olarak çalışması için Cloud Shell yeniden açabilirsiniz.. ~/.bashrcOrtam değişkenleri ayarlanmıştır ve değerlerini aşağıdaki gibi doğrularsınız:
printenv | grep ^ARM*
Önemli noktalar:
- Herhangi bir ortam değişkende olduğu gibi, Terraform betiğinden bir Azure aboneliği değerine erişmek için şu söz dizimlerini kullanın:
${env.<environment_variable>}. Örneğin, değerine erişmekARM_SUBSCRIPTION_IDiçin değerini${env.ARM_SUBSCRIPTION_ID}belirtin. - Terraform yürütme planlarını oluşturma ve uygulama, hizmet sorumlusuyla ilişkili Azure aboneliğinde değişiklikler yapar. Bir Azure aboneliğine oturum açtıysanız ve ortam değişkenleri ikinci bir Azure aboneliğine işaret ediyorsa bu durum bazen kafa karıştırıcı olabilir. Şimdi aşağıdaki örneği açıklayacak şekilde bakalım. İki Azure aboneliğiniz olduğunu varsayın: SubA ve SubB. Ortam değişkenleri SubB'ye işaret ederken geçerli Azure aboneliği SubA (aracılığıyla belirlenir) ise Terraform tarafından yapılan tüm
az account showdeğişiklikler SubB üzerindedir. Bu nedenle, Azure CLI komutlarını çalıştırmak veya değişikliklerinizi görüntülemek için Azure PowerShell abonelikte oturum açabilirsiniz.
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 sağlayan söz dizimi 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ülen kolay bir metin dosyasında depolanabilir olması tavsiye edilemez.
Azure'da Terraform sorunlarını giderme
Azure'da Terraform kullanırken karşılaşılan yaygın sorunları giderme