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

  1. Zaten açık bir Cloud Shell oturum varsa sonraki bölüme atlayabilirsiniz.

  2. Azure portalına gidin

  3. Gerekirse Azure aboneliğinizde oturum açın ve Azure dizinini değiştirin.

  4. Cloud Shell'i açın.

    Azure portal üstteki menüden Cloud Shell açın.

  5. Daha önce Cloud Shell kullanmadıysanız ortam ve depolama ayarlarını yapılandırın.

  6. Komut satırı ortamını seçin.

    Cloud Shell kullanmak istediğiniz CLI'yi 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.

  1. Cloud Shell kullanılan Terraform sürümünü belirleyin.

    terraform version
    
  2. 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.

  3. Belirtilen sürümle iyi çalışıyorsanız sonraki bölüme geçin. Aksi takdirde, aşağıdaki adımlarla devam edin.

  4. Terraform indirmeleri sayfasına gidin.

  5. Ekranı aşağı kaydırarak Linux indirme bağlantılarına gidin.

  6. 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.

  7. URL'yi kopyalayın.

  8. komutunu çalıştırın curlve yer tutucusunu önceki adımdaki URL ile değiştirin.

    curl -O <terraform_download_url>
    
  9. Dosyanın sıkıştırmasını açın.

    unzip <zip_file_downloaded_in_previous_step>
    
  10. Dizin yoksa adlı binbir dizin oluşturun.

    mkdir bin
    
  11. terraform Dosyayı dizinine bin taşıyın.

    mv terraform bin/    
    
  12. Cloud Shell kapatın ve yeniden başlatın.

  13. 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.

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.

  1. Azure CLI'ya erişimi olan bir komut satırı açın.

  2. 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.
  3. Geçerli Azure aboneliğini onaylamak için az account show komutunu çalıştırın.

    az account show
    
  4. 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.comyer tutucuyu ile live.com#admin@hotmail.comdeğiştirmeniz gerekebilir.
  5. 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 kullanabilirsiniz az account show .
    • Önceki adımda komutunu az account list çalıştırırsanız, varsayılan Azure aboneliğinin ile az account setbelirttiğiniz aboneliğe değiştiğini görürsünüz.

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.

  1. 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.

  2. 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.
  3. 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. , appIdpasswordve tenant 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.

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.

  1. ~/.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>"
    
  2. Betiği yürütmek ~/.bashrc için komutunu (veya kısaltılmış eşdeğerini. ~/.bashrc) çalıştırın source ~/.bashrc . Betiğin otomatik olarak çalışması için Cloud Shell da çıkıp yeniden açabilirsiniz.

    . ~/.bashrc
    
  3. 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şmek ARM_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 showbelirlenir) 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

Sonraki adımlar