Aracılığıyla paylaş


Azure Geliştirici CLI ortam değişkenleriyle çalışma

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

İpucu

Ortamlar hakkında daha fazla bilgi için azd makalesini ziyaret edin.

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_LOCATION nasıl oluşturulduğunu ve gibi AZURE_SUBSCRIPTION_ID değ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_GROUP gibi 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:

  1. azd init sı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=eastus2
    
  2. main.parameters.json içindeki değişkenlere infra klasöründe başvurun. azd sağ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}"
        }
      }
    }
    
  3. 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 string
    

    azd, main.parameters.json yerine konulan değerlerle bu Bicep parametrelerini sağlar.

  4. 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 .env dosyanı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 .env dosyanızda bunlara başvurun.

    azd env set-secret <secret-value>
    

    Bu komut bir Key Vault gizli dizisi oluşturur ve dosyanızda .env gerç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.

Sonraki Adımlar