Başlarken: Azure PowerShell ile Windows için terrayform 'u yükler
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, PowerShell kullanarak Azure 'Da Terrayform ile çalışmaya başlama işlemi açıklanır.
Bu makalede şunları öğreneceksiniz:
- PowerShell 'in en son sürümünü yükler
- Yeni PowerShell 'i yükler az Module
- Azure CLI'yi yükleme
- Terrayform 'u yükler
- 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. Azure PowerShell yüklemesi
Azure kaynaklarıyla etkileşime izin veren en son PowerShell modülüne Azure PowerShell Az moduleadı verilir. Azure PowerShell Az module kullanırken, PowerShell 7 (veya üzeri) tüm platformlarda önerilen sürümdür. PowerShell yüklüyse, bir PowerShell komut isteminde aşağıdaki komutu girerek sürümü doğrulayabilirsiniz.
$PSVersionTable.PSVersionPowerShell 'ı yükler. Bu tanıtım Windows 10 üzerinde PowerShell 7.1.3 (x64) kullanılarak test edilmiştir.
3. Azure CLı 'yı yüklemeyi
Terrayform 'un Azure 'da kimlik doğrulaması yapmasıIÇIN Azure CLI 'yı yüklemenizgerekir. Bu tanıtım, Azure CLı sürüm 2.26.1 kullanılarak test edilmiştir.
4. Windows için Terrayform 'u yükler
Teroyform 'U indirin. Bu makale, Terrayform sürüm 1.0.3 kullanılarak test edilmiştir.
İndirme işleminden, yürütülebilir dosyayı seçtiğiniz bir dizine ayıklayın (örneğin,
c:\terraform).Sisteminizin genel yolunu çalıştırılabilir olarak güncelleştirin.
Bir terminal penceresi açın.
Komutuyla genel yol yapılandırmasını doğrulayın
terraform.terraform -version
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.
- Cloud Shell kullanarak (bash veya PowerShell ile) Microsoft hesabı ile kimlik doğrulama
- Windows kullanarak Microsoft hesabı kimlik doğrulaması (bash veya PowerShell ile)
- Hizmet sorumlusu aracılığıyla kimlik doğrulaması:
- Hizmet sorumlusu yoksa, bir hizmet sorumlusu oluşturun.
- Bir ortam değişkenlerini kullanarak Azure 'Da kimlik doğrulaması yapın veya terrayform sağlayıcı bloğunu kullanarak Azure 'da kimlik doğrulaması yapın
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.
Azure CLı erişimi olan bir komut satırı açın.
Herhangi bir parametre olmadan az Login çalıştırın ve Azure 'da oturum açmak için yönergeleri izleyin.
az loginAnahtar noktaları:
- Başarılı oturum açma sırasında,
az loginvarsayılan abonelik dahil olmak üzere, oturum açmış Microsoft hesabı Ilişkili Azure aboneliklerinin bir listesini görüntüler.
- Başarılı oturum açma sırasında,
Geçerli Azure aboneliğini onaylamak için az Account Show' i çalıştırın.
az account showBelirli 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 TableAnahtar 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 gerekebilirlive.com#admin@hotmail.com.
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 setbelirtilen Azure aboneliğine geçiş sonuçlarını göstermez. Ancak,az account showgeç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üzaz 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.
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.
Git Bash 'ten bir hizmet sorumlusu oluşturuyorsanız,
MSYS_NO_PATHCONVortam değişkenini ayarlayın. (Cloud Shell kullanıyorsanız bu adım gerekli değildir.)export MSYS_NO_PATHCONV=1Anahtar 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ı~/.bashrcdosyaya ekleyin.
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 ContributorAnahtar 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-rbacbirkaç değeri görüntüler.appId,passwordVe değerleri birtenantsonraki 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ş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