Başlarken: Azure Cloud Shell bash ile terrayform 'u yapılandırma

Terrayform , bulut altyapısının tanımını, önizlemesini ve dağıtımını sunar. Terrayform kullanarak, HCL söz diziminikullanarak yapılandırma dosyaları oluşturursunuz. HCL sözdizimi, 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şiklerinizi dağıtılmadan önce önizlemenize olanak tanıyan 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, Azure 'da Terrayform ile kullanım için kimlik doğrulama seçenekleri sunulmaktadır.

Bu makalede şunları öğreneceksiniz:

  • Cloud Shell Yapılandır
  • Geçerli Azure hesabını görüntüle
  • Ortak Teraform ve Azure kimlik doğrulama senaryolarını anlama
  • Cloud Shell Microsoft hesabı aracılığıyla kimlik doğrulama (bash veya PowerShell kullanarak)
  • Windows Microsoft hesabı aracılığıyla kimlik doğrulama (bash veya PowerShell kullanarak)
  • Azure CLı kullanarak hizmet sorumlusu oluşturma
  • Azure PowerShell’i kullanarak hizmet sorumlusu oluşturma
  • Ortam değişkenlerinde hizmet sorumlusu kimlik bilgilerini belirtin
  • Bir Terrayform sağlayıcı bloğunda hizmet sorumlusu kimlik bilgilerini belirtme

1. ortamınızı yapılandırın

  • 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 oturumunuz 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 üst 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 içinde kullanmak istediğiniz CLı 'yi seçin.

3. Azure Cloud Shell için en son Terrayform sürümünü yükler

Cloud Shell, yayının birkaç haftası içinde Terrayform 'un en son sürümüne otomatik olarak güncelleştirilir. Ancak en son sürüme daha erken ihtiyacınız varsa, aşağıdaki adımlarda Terrayform 'un geçerli sürümünün nasıl indirileceği ve yükleneceği gösterilmektedir.

  1. Cloud Shell ' de kullanılan Terrayform sürümünü saptayın.

    terraform version
    
  2. Cloud Shell ' de yüklü olan Terrayform sürümü en son sürüm değilse, Terrayform sürümünün güncel olmadığını belirten bir ileti görürsünüz.

  3. Belirtilen sürümle çalışırken bir sonraki bölüme atlayın. Aksi takdirde, aşağıdaki adımlarla devam edin.

  4. Teroyform İndirmeleri sayfasınagidin.

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

  6. Farenizi 64 bitlik bağlantının üzerine taşıyın. Bu, Cloud Shell için uygun olan en son 64 bitlik Linux AMD sürümünün bağlantıdır.

  7. URL'yi kopyalayın.

  8. curlYer tutucusunu, önceki ADıMDAKI 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 oluşturun bin .

    mkdir bin
    
  11. terraformDosyayı bin dizine taşıyın.

    mv terraform bin/    
    
  12. Terrayform 'un indirilen sürümünün yolda ilk olarak olduğunu doğrulayın.

    terraform version
    

4. varsayılan Azure aboneliğini doğrulayın

Azure portal bir Microsoft hesabı ile oturum açtığınızda, bu hesap için varsayılan Azure aboneliği kullanılır.

Terrayform, varsayılan Azure aboneliğindeki bilgileri kullanarak kimliğini otomatik olarak doğrular.

Geçerli Microsoft hesabı ve Azure aboneliğini doğrulamak için az Account Show ' i çalıştırın.

az account show

Terrayform aracılığıyla yaptığınız tüm değişiklikler, gösterilen Azure aboneliğine göre yapılır. İsterseniz, bu makalenin geri kalanını atlayın.

5. Azure 'da Terrayform kimlik doğrulaması

Terrayform ve Azure kimlik doğrulama senaryoları

Terrayform yalnızca Azure CLı aracılığıyla Azure kimlik doğrulamasını destekler. Azure PowerShell kullanarak kimlik doğrulaması desteklenmiyor. bu nedenle, teraform işinizi gerçekleştirirken Azure PowerShell modülünü kullanabilmeniz için önce azure clı kullanarak azure 'da kimlik doğrulaması yapmanız gerekir.

Bu makalede, aşağıdaki senaryolar için Terrayform 'un Azure 'da nasıl kimlik doğrulaması yapılacağı açıklanmaktadır. Azure 'da Terrayform kimlik doğrulaması 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ğrulama

Microsoft hesabı, Azure gibi Microsoft hizmetleri oturum açmak için kullanılan (bir e-posta ve kimlik bilgileriyle ilişkili) kullanıcı adıdır. Bir Microsoft hesabı, Bu aboneliklerden biri varsayılan olan bir veya daha fazla Azure aboneliği ile ilişkilendirilebilir.

Aşağıdaki adımlarda, 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 gösterilmektedir.

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

  2. Herhangi bir parametre olmadan az Login çalıştırın ve Azure 'da oturum açmak için yönergeleri izleyin.

    az login
    

    Anahtar noktaları:

    • Başarılı oturum açma sırasında, az login varsayılan abonelik dahil olmak üzere, oturum açmış Microsoft hesabı Ilişkili Azure aboneliklerinin bir listesini görüntüler.
  3. Geçerli Azure aboneliğini onaylamak için az Account Show' i çalıştırın.

    az account show
    
  4. Belirli bir Microsoft hesabı yönelik tüm Azure abonelik adlarını ve kimliklerini görüntülemek için az Account List' i çalıştırın.

    az account list --query "[?user.name=='<microsoft_account_email>'].{Name:name, ID:id, Default:isDefault}" --output Table
    

    Anahtar noktaları:

    • <microsoft_account_email>Yer tutucusunu, Azure aboneliklerini listelemek istediğiniz Microsoft hesabı e-posta adresiyle değiştirin.
    • Bir hotmail veya Outlook gibi bir Live hesabıyla, tam e-posta adresini belirtmeniz gerekebilir. Örneğin, e-posta adresiniz ise admin@hotmail.com , yer tutucusunu ile değiştirmeniz gerekebilir live.com#admin@hotmail.com .
  5. Belirli bir Azure aboneliğini kullanmak için az Account set' i çalıştırın.

    az account set --subscription "<subscription_id_or_subscription_name>"
    

    Anahtar noktaları:

    • <subscription_id_or_subscription_name>Yer tutucusunu, kullanmak istediğiniz ABONELIĞIN kimliğiyle veya adıyla değiştirin.
    • Çağırma, az account set belirtilen Azure aboneliğine geçiş sonuçlarını göstermez. Ancak, az account show geçerli Azure aboneliğinin değiştiğini doğrulamak için kullanabilirsiniz.
    • az account listÖnceki adımdan komutu çalıştırırsanız, varsayılan Azure aboneliğinin ile belirttiğiniz abonelikle değiştirildiğini görürsünüz az account set .

Hizmet sorumlusu oluşturma

Terrayform gibi Azure hizmetlerini dağıtan veya kullanan otomatikleştirilmiş araçların her zaman sınırlı izinleri olmalıdır. Uygulamaları tam ayrıcalıklı bir kullanıcı olarak oturum açmak yerine, Azure hizmet sorumlularını sunmaktadır.

En yaygın model Azure 'da etkileşimli olarak oturum açmak, hizmet sorumlusu oluşturmak, hizmet sorumlusunu test etmek ve ardından bu hizmet sorumlusunu gelecekteki kimlik doğrulaması (etkileşimli veya betiklerden) için kullanır.

  1. Hizmet sorumlusu oluşturmak için Azure 'da oturum açın. Microsoft hesabı aracılığıyla Azure 'da kimlik doğrulamasındangeçtikten sonra buraya dönün.

  2. Git Bash 'ten bir hizmet sorumlusu oluşturuyorsanız, MSYS_NO_PATHCONV ortam değişkenini ayarlayın. (Cloud Shell kullanıyorsanız bu adım gerekli değildir.)

    export MSYS_NO_PATHCONV=1    
    

    Anahtar noktaları:

    • MSYS_NO_PATHCONVOrtam değişkenini genel olarak (tüm Terminal oturumları için) veya yerel olarak (yalnızca geçerli oturum için) ayarlayabilirsiniz. Hizmet sorumlusu oluşturmak genellikle yaptığınız bir şey olmadığından, örnek geçerli oturum için değeri ayarlar. Bu ortam değişkenini küresel olarak ayarlamak için, ayarı ~/.bashrc dosyaya ekleyin.
  3. Hizmet sorumlusu oluşturmak için az ad SP Create-for-RBAC' i çalıştırın.

    az ad sp create-for-rbac --name <service_principal_name> --role Contributor
    

    Anahtar noktaları:

    • ' <service-principal-name> Nı ortamınız için özel bir ad ile değiştirebilir veya parametresini tamamen atlayabilirsiniz. Parametresini atlarsanız, hizmet sorumlusu adı geçerli tarih ve saate göre oluşturulur.
    • Başarıyla tamamlandıktan sonra, az ad sp create-for-rbac birkaç değeri görüntüler. appId, password Ve değerleri bir tenant sonraki adımda kullanılır.
    • Parola kaybolduysa 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 makalede, katkıda bulunan rolüne sahip bir hizmet sorumlusu kullanılmaktadır. Role-Based Access Control (RBAC) ve rolleri hakkında daha fazla bilgi için bkz. RBAC: yerleşik roller.
    • Hizmet sorumlusu oluşturma çıkışının hassas kimlik bilgileri vardır. Bu kimlik bilgilerini kodunuzda bulundurmayın veya kaynak denetimi kimlik bilgilerini kontrol edin.
    • Azure CLı ile hizmet sorumlusu oluşturma oluşturma seçenekleri hakkında daha fazla bilgi için Azure CLI Ile Azure hizmet sorumlusu oluşturmamakalesine bakın.

Ortam değişkenlerinde hizmet sorumlusu kimlik bilgilerini belirtin

Bir hizmet sorumlusu oluşturduktan sonra, ortam değişkenleri aracılığıyla Terrayform kimlik bilgilerini belirtebilirsiniz.

  1. ~/.bashrcAş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 için ~/.bashrcsource ~/.bashrc (veya kısaltılmış eşdeğerini . ~/.bashrc ) çalıştırın. Ayrıca, komut dosyasının otomatik olarak çalışması için Cloud Shell çı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*
    

Anahtar noktaları:

  • Herhangi bir ortam değişkeninde olduğu gibi, bir Azure abonelik değerine bir Terrayform betiği içinden erişmek için aşağıdaki söz dizimini kullanın: ${env.<environment_variable>} . Örneğin, değere erişmek için ARM_SUBSCRIPTION_ID , belirtin ${env.ARM_SUBSCRIPTION_ID} .
  • Terkform yürütme planlarının oluşturulması ve uygulanması, hizmet sorumlusu ile ilişkili Azure aboneliğinde değişiklik yapar. Tek bir Azure aboneliğinde oturum açıyorsanız ve ortam değişkenleri ikinci bir Azure aboneliğine işaret ettikten sonra bu olgu bazen kafa karıştırıcı olabilir. Daha sonra açıklamak için aşağıdaki örneğe bakalım. İki Azure aboneliğiniz olduğunu varsayalım: SubA ve alt b. Geçerli Azure aboneliği, az account show ortam değişkenleri alt b 'ye işaret ederken (aracılığıyla belirlenir), Terrayform tarafından yapılan tüm değişiklikler alt b 'dedir. bu nedenle, değişikliklerinizi görüntülemek için Azure clı komutları veya Azure PowerShell komutlarını çalıştırmak üzere alt b aboneliğinizde oturum açmanız gerekir.

Bir Terrayform sağlayıcı bloğunda hizmet sorumlusu kimlik bilgilerini belirtme

Azure sağlayıcı bloğu, Azure aboneliğinizin kimlik doğrulama bilgilerini belirtmenizi sağlayan sözdizimini 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 abonelik kimlik bilgilerinizi bir Terrayform yapılandırma dosyasında belirtme özelliği, özellikle test edilirken kullanışlı olabilir. Ancak, kimlik bilgilerinin güvenilir olmayan bireyler tarafından görüntülenebilen bir düz metin dosyasında depolanması önerilmez.

Azure 'da Terrampaform sorunlarını giderme

Azure 'da Terrampaform kullanırken karşılaşılan yaygın sorunları giderme

Sonraki adımlar