Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Geliştirici CLI'sı (azd), dağıtım ortamları için yapılandırma ayarlarını depolamak ve yönetmek için ortam değişkenlerini kullanır. Bu değişkenler uygulamanızın Azure'da nasıl sağlanıp dağıtılıp çalıştırılma şeklini denetler. Bu makalede ortam değişkenlerinin ortamlar içinde azd nasıl çalıştığı açıklanır ve bunları etkili bir şekilde yönetme konusunda rehberlik sağlanır.
Ortam değişkenlerini anlama
Azure Geliştirici CLI'sı bağlamında ortam değişkenleri geliştirme, test veya üretim gibi belirli adlandırılmış ortamlara bağlı anahtar-değer çiftleridir. Her azd ortam kendi ortam değişkenleri kümesini tutar ve farklı dağıtım hedefleri için farklı ayarlar yapılandırmanıza olanak tanır.
Ortamdaki azd değişkenleri, .env dosyaları, ortam klasörlerinizin .azure klasöründeki içindeki dosyalarda depolanır. Bunlar şunlar için giriş görevi görür:
- Uygulama dağıtım iş akışları
- Azure hizmetleri ve bağlantıları için yapılandırmalar
- Bicep ve Terraform aracılığıyla altyapı sağlama
İşletim sistemi düzeyinde mevcut olan geleneksel ortam değişkenlerinden farklı olarak, azd ortam değişkenlerinin kapsamı projenizdeki belirli ortamlara göre belirlenir ve farklı dağıtım hedefleri arasında yalıtım sağlanır.
Ortam değişkenleri ile azdçalışırken çeşitli temel avantajlar sağlar:
- Ortam yalıtımı: Geliştirme, test ve üretim yapılandırmalarını ayrı ve ayrı tutun.
- Yapılandırma tutarlılığı: Tüm ekip üyelerinin belirli bir ortam için aynı ayarları kullandığından emin olun.
- Kod Olarak Altyapı: Sabit kodlanmış değerler yerine değişkenler aracılığıyla altyapı parametreleştirmesi tanımlayın.
- Dağıtım otomasyonu: CI/CD işlem hatlarının aynı kod tabanını ama farklı yapılandırmaları kullanarak farklı ortamlara dağıtmasını etkinleştirin.
- Basitleştirilmiş yönetim: Merkezi bir konumdan bir ortamdaki tüm hizmetler genelinde ayarları kolayca güncelleştirin.
Her azd ortamın kendi değişken kümesi vardır ve aynı uygulama kodu ve altyapı şablonları kullanılırken ortama özgü yapılandırmalar sağlanır.
Ortam değişkenleri ve .env dosyaları
Ortam azd değişkenleri projenizin ortama özgü dizinlerindeki dosyalarda .env depolanır. kullanarak azd env new <name>bir ortam oluşturduğunuzda bir dizin yapısı oluşturulur:
.azure/
├── <environment-name>/
│ ├── .env # Environment variables for this environment
Dosya, .env her satırın bir anahtar-değer çiftini temsil ettiği standart bir biçim kullanır:
KEY1=value1
KEY2=value2
gibi azd upkomutları çalıştırdığınızda, azd değişkenleri seçme ortamının .env dosyasından otomatik olarak yükler.
Bu değişkenler şunları etkiler:
-
Altyapı sağlama: Kaynakların nerede ve
AZURE_LOCATIONnasıl oluşturulduğunu ve gibiAZURE_SUBSCRIPTION_IDdeğişkenler belirler. - Dağıtım: Hizmet uç noktaları gibi değişkenler uygulamanızın Azure hizmetlerine nasıl bağlanyacağını denetler.
- Uygulama yapılandırması: Değişkenler, davranışını denetlemek için uygulama yapılandırmanıza geçirilebilir.
-
Kaynak adlandırma:
AZURE_RESOURCE_GROUPgibi değişkenler kaynak adlandırma desenlerini etkiler.
Dosya .env, azd, azd init gibi işlemler sırasında altyapı şablonlarınızdan çıkan verileri yakalayarak ve gelecekte kullanmak üzere azd provision depolayarak otomatik olarak güncellenir azd deploy.
Ortam değişkenlerini belirleme
Senaryoya bağlı olarak ortam değişkenlerini ayarlamak azd için farklı yöntemler kullanabilirsiniz.
CLI komutlarını kullanma
Ortam değişkenini ayarlamanın önerilen yolu, geçerli değerleri sağlamak için denetimler içeren komutunu kullanmaktır azd env set :
azd env set <key> <value>
Örneğin, uygulamanız için bir yapılandırma değeri ayarlamak için:
azd env set API_TIMEOUT 5000
komutu, değişkeni seçili durumdaki ortamın .env dosyasına ekler veya güncelleştirir. Ayrıca bayrağını --environment kullanarak belirli bir ortamı hedefleyebilirsiniz:
azd env set API_TIMEOUT 5000 --environment prod
Ortam değişkeninizin doğru ayarlandığını doğrulamak için:
azd env get-value API_TIMEOUT
Bicep çıktısı
Bunun güçlü bir özelliği azd , Bicep altyapı şablonlarınızdan çıkış parametrelerini ortam değişkenleri olarak otomatik olarak yakalayabilmesidir. Örneğin, dosyanızda main.bicep bir çıkış parametresi tanımladığınızda:
output API_ENDPOINT string = apiService.outputs.SERVICE_ENDPOINT_URL
çalıştırıldıktan azd provisionsonra bu çıkış ortamın .env dosyasına otomatik olarak kaydedilir:
API_ENDPOINT=https://api-dev-123456.azurewebsites.net
Bu yaklaşım, uygulamanızın her zaman aşağıdaki gibi en güncel kaynak bilgilerine erişmesini sağlar:
- Hizmet uç noktaları ve URL'ler
- Kaynak adları ve tanımlayıcıları
Ortam değişkenlerini alma ve kullanma
Ayarlandıktan sonra ortam değişkenlerine çeşitli bağlamlarda erişebilirsiniz.
CLI komutları
Geçerli ortamın tüm ortam değişkenlerini görüntülemek için:
azd env get-values
Belirli bir değişkenin değerini görüntülemek için:
azd env get-value API_ENDPOINT
Makine tarafından okunabilir çıkış için (betiklerde kullanışlıdır):
azd env get-values --output json
Altyapı dosyalarında ortam değişkenlerini kullanma
Altyapı şablonlarınızı özelleştirmek için ortam değişkenlerini kullanabilirsiniz. Bu, kaynakları geçerli ortama göre adlandırmak, etiketlemek veya yapılandırmak için kullanışlıdır.
azd ayrıca, dağıtım ve diğer görevler için Azure'daki kaynakları bulmak için etiketleri kullanır.
Aşağıdaki ortak akışı göz önünde bulundurun:
azd initsırasındaazd, kullanıcının istemlere verdiği yanıta göre bu ortam değişkenlerini ayarlar:AZURE_ENV_NAME=myapp-dev AZURE_LOCATION=eastus2main.parameters.jsoniçindeki değişkenlereinfraklasöründe başvurun.azdsağlama sırasında değerleri ikame eder ve çözümlenen parametreleri Bicep'e iletir.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "name": { "value": "${AZURE_ENV_NAME}" }, "location": { "value": "${AZURE_LOCATION}" } } }Bicep şablonunuzda eşleşen parametreleri tanımlayın:
@description('Name of the environment used to derive resource names and tags.') param name string @minLength(1) @description('Primary Azure region for all resources.') param location stringazd,main.parameters.jsonyerine konulan değerlerle bu Bicep parametrelerini sağlar.Daha sonra kaynağın hangi ortama ait olduğunu belirlemek için kaynak adlandırma ve etiketler için parametreleri kullanın:
var resourceToken = toLower(uniqueString(resourceGroup().id, name, location)) resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = { name: 'st${resourceToken}' location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' tags: { Environment: name Project: 'myproject' } }
Bu düzen şablonlarınızı esnek tutar, kod değişikliği olmadan ortam başına özelleştirmeyi etkinleştirir ve kaynak idaresini (adlandırma, etiketleme ve bulma) geliştirir.
Uyarı
azd ayrıca dağıtım aşamasında Azure kaynaklarını bulmak için etiketlemeye de dayanır.
Kancalar
azdortam değişkenleri otomatik olarak önceden yüklenir ve dosyanızda tanımlanan azure.yaml ve özel betiklerde kullanılabilir; ortam değişkenlerine aşağıdaki söz dizimini kullanarak erişebilirsiniz:
# Use the variables in your script
echo "API endpoint: $API_ENDPOINT"
echo "Deploying to: $AZURE_LOCATION"
Bu betikleri yaşam döngüsünün belirli noktalarında azure.yaml çalıştırmak için dosyanızda azd kancalar tanımlayabilirsiniz:
hooks:
postprovision:
windows:
shell: pwsh
run: ./scripts/load-env-vars.ps1
interactive: false
posix:
shell: sh
run: ./scripts/load-env-vars.sh
interactive: false
İpucu
Kancaları kullanma hakkında daha fazla bilgi için Kancaları kullanarak iş akışlarını özelleştirme makalesini ziyaret edin.
Değişkenleri kaldırma veya güncelleştirme
Bir değişkeni ortamınızdan kaldırmak için:
azd env unset VARIABLE_NAME
Var olan bir değişkeni güncelleştirmek için:
azd env set VARIABLE_NAME "new-value"
Yerel ortam değişkenlerinizi Azure kaynaklarınızın geçerli durumundan yenilemek için:
azd env refresh
Ortamınızı yenilemek şu durumlarda kullanışlıdır:
- Yerel
.envdosyanızın altyapınızdan en son çıkışları (bağlantı dizeleri, uç noktalar vb.) yansıtdığından emin olmak istiyorsunuz. - Bir ekip arkadaşı ortamı güncelleştirdikten sonra ortam değişkenlerini eşitlemeniz gerekir.
AZD ile işletim sistemi ortam değişkenleri karşılaştırması
azd ortam değişkenleri ve işletim sistemi ortam değişkenleri farklı amaçlara hizmet eder ve farklı şekillerde çalışır:
| Kavram | Azure Geliştirici CLI'sı | İşletim sistemi |
|---|---|---|
| Yer |
.azure/<env-name>/.env dosyalarda saklanır |
İşletim sistemi ortamınızda ayarlayın |
| Scope | Kapsamı proje içindeki belirli bir adlandırılmış ortamla belirlenmiştir | Kullanıcı oturumunuza veya sisteminize genel |
| Yönetim |
azd env kullanılarak komutlar yönetilir |
İşletim sistemine özgü komutlar (export, setvb.) kullanılarak yönetilir |
| Access |
azd komutları ile otomatik olarak yüklenir |
Genellikle betiklere veya uygulamalara açıkça yüklenir |
| Target | Azure kaynaklarına ve dağıtımlarına bağlı | Genel amaçlı sistem yapılandırması |
| Yaşam Döngüsü | Terminal oturumları arasında kalıcılığı sağlamak | Nasıl ayarlandıklarına bağlı olarak geçici veya kalıcı olabilir |
azd işletim sistemi ortam değişkenlerini otomatik olarak okumaz veya yazmaz. Ancak, özel betikleri kullanarak her iki değişken türüyle de etkileşim kurabilirsiniz.
Ortam değişkenlerini ve işletim sistemi ortam değişkenlerini okuyunazd:
# Access OS environment variable
echo "OS variable: $PATH"
# Access azd environment variable
echo "AZD variable: $(azd env get-value MY_VARIABLE)"
ortam değişkenlerini işletim sistemi veya çerçeve ortam değişkenlerine yazın azd :
# Load all azd environment variables into the current shell session
while IFS='=' read -r key value; do
value=$(echo "$value" | sed 's/^"//' | sed 's/"$//')
export "$key=$value"
done <<EOF
$(azd env get-values)
EOF
Standart ortam değişkenleri
azd tüm ortamlarda çeşitli ortak ortam değişkenlerini ayarlar ve kullanır:
| Değişken | Açıklama | Example | Ayarlandığında |
|---|---|---|---|
AZURE_ENV_NAME |
Geçerli ortamın adı | dev |
Ortam oluşturulduğunda |
AZURE_LOCATION |
Kaynakların dağıtıldığı Azure bölgesi | eastus |
İlk sağlama sırasında |
AZURE_SUBSCRIPTION_ID |
Kullanılan Azure aboneliğinin kimliği | 00000000-0000-0000-0000-000000000000 |
İlk sağlama sırasında |
AZURE_RESOURCE_GROUP |
Kaynak grubunun adı | rg-myapp-dev |
Sağlama sırasında |
AZURE_PRINCIPAL_ID |
Çalışan kullanıcı/hizmet sorumlusu kimliği | 00000000-0000-0000-0000-000000000000 |
Sağlama sırasında |
AZURE_PRINCIPAL_TYPE |
Ortamdaki bir ana unsurun türü. | 1a2b3c |
Sağlama sırasında |
AZURE_TENANT_ID |
Kullanılmış olan Azure kiracısının kimliği. | 00000000-0000-0000-0000-000000000000 |
Sağlama sırasında |
Gizli bilgiler ve hassas verilerle ilgili dikkat edilmesi gereken hususlar
Ortam değişkenleri yapılandırma için kullanışlı olsa da hassas veriler için özel işleme gerektirir:
Gizli bilgileri .env dosyalarında depolamaktan kaçının
.env dosyalar genellikle düz metin olarak depolanır ve kolayca şunlar olabilir:
- Yanlışlıkla kaynak denetimine kaydedilmiş
- Düzgün korumalar olmadan paylaşılan veya kopyalanan
- Proje dosyalarına erişimi olan herkes tarafından görüntülenir
- Günlüklere veya hata raporlarına eklenir
Uyarı
Gizli dizileri hiçbir zaman bir Azure Geliştirici CLI .env dosyasında depolamayın. Bu dosyalar kolayca paylaşılabilir veya yetkisiz konumlara kopyalanabilir ya da kaynak denetimine iade edilebilir. Korumalı veya gizli olmayan çözümler için Azure Key Vault veya Azure Rol Tabanlı Erişim Denetimi (RBAC) gibi hizmetleri kullanın.
Gizli bilgileri işlemek için alternatifler
Hassas veriler için şu daha güvenli yaklaşımları göz önünde bulundurun:
Azure Key Vault başvuruları: Gizli bilgileri Azure Key Vault'ta depolayın ve
.envdosyanızda bunlara başvurun.azd env set-secret <secret-value>Bu komut bir Key Vault gizli dizisi oluşturur ve dosyanızda
.envgerçek değer yerine bu gizli diziye bir başvuru depolar.Yönetilen kimlikler: Azure hizmetlerinizi bağlantı dizeleri veya erişim anahtarları yerine yönetilen kimlikleri kullanacak şekilde yapılandırın.
Ortama özgü güvenlik: Üretim ortamlarına geliştirme ortamlarına göre daha katı güvenlik denetimleri uygulayın.
Tam zamanında gizli bilgiler: Kalıcı gizli bilgileri depolamak yerine dağıtım sırasında kısa süreli yetkilendirme bilgileri oluşturun.