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

  1. Terraform'ı indirin. Bu makale Terraform sürüm 1.1.4 kullanılarak test edilmiştir.

  2. İndirmeden, yürütülebilir dosyayı seçtiğiniz bir dizine (örneğin, c:\terraform) ayıklayın.

  3. Sisteminizin genel PATH ortam değişkenini yürütülebilir dosyayı içeren dizini içerecek şekilde güncelleştirin.

  4. Bir terminal penceresi açın.

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

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.
  1. Azure CLI'ya erişimi olan bir komut satırı açın.

  2. 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.
  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, 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.

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

  2. 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.
  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. appId, passwordve tenant 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.

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 . Ayrıca betiğin otomatik olarak çalışması için Cloud Shell'de çı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 abonelik 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 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 showbelirlenir) 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