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

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

  2. Azure portalına gidin

  3. Gerekirse, Azure aboneliğinde oturum açma ve Azure dizinini değiştirme.

  4. Cloud Shell'i açın.

    Cloud Shell üst menüden menüyü Azure portal.

  5. Daha önce bu ayarları Cloud Shell ortam ve depolama ayarlarını yapılandırmanız gerekir.

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

    Aşağıdaki belgelerde kullanmak istediğiniz CLI'Cloud Shell.

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.

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

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

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

  4. Terraform indirme sayfasına göz atın.

  5. Linux indirme bağlantılarına inin.

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

  7. URL'yi kopyalayın.

  8. yer curl tutucusunu önceki adımda yer alan URL ile değiştirerek çalıştırın.

    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ı bir dizin bin oluşturun.

    mkdir bin
    
  11. Dosyayı terraform dizinine bin taşıma.

    mv terraform bin/    
    
  12. 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.

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.

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

  2. 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 login aboneliklerinin listesini görüntüler.
  3. Geçerli Azure aboneliğini onaylamak için az account show çalıştırın.

    az account show
    
  4. Belirli 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.com yer tutucusunu ile değiştirmeniz live.com#admin@hotmail.com gerekir.
  5. 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 set belirtilen Azure aboneliğine geçişin sonuçlarını görüntülemez. Ancak, geçerli az account show Azure 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 list belirttiğiniz aboneliğe değiştiğini az account set görüyorsunuz.

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.

  1. Hizmet sorumlusu oluşturmak için Azure'da oturum açma. Azure'da kimlik doğrulamadan sonra Microsoft hesabıburaya geri dön.

  2. Git Bash'te hizmet sorumlusu oluşturuyorsanız ortam MSYS_NO_PATHCONV değ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_PATHCONV olarak (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 ~/.bashrc ekleyin.
  3. 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-rbac sonra birkaç değer görüntüler. appId, password ve tenant değ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.

Ortam değişkenlerde hizmet sorumlusu kimlik bilgilerini belirtme

Hizmet sorumlusu oluşturdukta, ortam değişkenleri aracılığıyla terraform kimlik bilgilerini belirtebilirsiniz.

  1. Aşağıdaki ~/.bashrc ortam 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>"
    
  2. Betiği yürütmek ~/.bashrc için source ~/.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.

    . ~/.bashrc
    
  3. Ortam 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şmek ARM_SUBSCRIPTION_ID iç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 show değ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

Sonraki adımlar