Bu makalede Azure Geliştirici CLI'sı hakkında sık sorulan sorular yanıtlanmaktadır.
Genel
Azure Geliştirici CLI'sini nasıl kaldırırım?
İlk yükleme şeklinize bağlı olarak azd
kaldırmak için farklı seçenekler vardır. Ayrıntılar için yükleme sayfasını ziyaret edin.
Azure Geliştirici CLI'sı ile Azure CLI arasındaki fark nedir?
azd
üst düzey geliştirici iş akışına odaklanır.
azd
, Azure kaynaklarını sağlamanın/yönetmenin dışında bulut bileşenlerini, yerel geliştirme yapılandırmasını ve işlem hattı otomasyonlarını eksiksiz bir çözüm olarak birleştirmeye yardımcı olur.
Azure CLI, sanal makineler, sanal ağlar ve depolama gibi Azure altyapısını oluşturmaya ve yönetmeye yönelik bir denetim düzlemi aracıdır. Azure CLI, belirli yönetim görevleri için ayrıntılı komutlar etrafında tasarlanmıştır.
Ortam adı nedir?
Azure Geliştirici CLI'sı, Azure Geliştirici CLI şablonları tarafından kullanılan AZURE_ENV_NAME
ortam değişkenini ayarlamak için bir ortam adı kullanır. AZURE_ENV_NAME, Azure kaynak grubu adının ön ekini eklemek için de kullanılır. Her ortamın kendi yapılandırma kümesi olduğundan, Azure Geliştirici CLI tüm yapılandırma dosyalarını ortam dizinlerinde depolar.
├── .Azure [This directory displays after you run add init or azd up]
│ ├── <your environment1> [A directory to store all environment-related configurations]
│ │ ├── .env [Contains environment variables]
│ │ └── main.parameters.json [A parameter file]
│ └── <your environment2> [A directory to store all environment-related configurations]
│ │ ├── .env [Contains environment variables]
│ │ └── main.parameters.json [A parameter file]
│ └──config.json
Birden fazla ortam ayarlayabilir miyim?
Evet. Çeşitli ortamlar (geliştirme, test, üretim gibi) ayarlayabilirsiniz. Bu ortamları yönetmek için azd env
kullanabilirsiniz.
Ortam yapılandırması (.env) dosyası nerede depolanır?
.env dosya yolu <your-project-directory-name>\.azure\<your-environment-name>\.env
.
.env dosyası nasıl kullanılır?
Azure Geliştirici CLI'sinde azd
komutları ortam yapılandırması için .env dosyasına başvurur.
azd deploy
gibi komutlar da .env dosyasını veritabanı bağlantı dizesi ve Azure Key Vault uç noktası ile güncelleştirir.
Codespaces'da 'azd up' çalıştırdım. Yerel bir geliştirme ortamında çalışmama devam edebilir miyim?
Evet. Geliştirme çalışmalarına yerel olarak devam edebilirsiniz.
- Şablon projesini yerel makinenize kopyalamak için
azd init -t <template repo>
çalıştırın. - Codespaces kullanılarak oluşturulan mevcut env dosyasını aşağı çekmek için
azd env refresh
çalıştırın. Öncekiyle aynı ortam adını, aboneliği ve konumu sağladığından emin olun.
azure.yaml dosyası nasıl kullanılır?
azure.yaml dosyası, şablona dahil edilen Azure kaynaklarının uygulamalarını ve türlerini açıklar.
'secretOrRandomPassword' işlevinin davranışı nedir?
secretOrRandomPassword
işlevi, anahtar kasası adı ve gizli dizi parametreleri sağlanıyorsa Azure Key Vault'tan bir gizli dizi alır. Bu parametreler sağlanmamışsa veya gizli dizi alınamıyorsa, işlev bunun yerine kullanmak üzere rastgele oluşturulmuş bir parola döndürür.
Aşağıdaki örnek, bir secretOrRandomPassword
dosyasındaki main.parameters.json
yaygın kullanım örneğini gösterir.
${AZURE_KEY_VAULT_NAME}
ve sqlAdminPassword
değişkenleri Key Vault ve gizli dizi adları için parametre olarak geçirilir. Değer alınamıyorsa, bunun yerine rastgele bir parola oluşturulur.
"sqlAdminPassword": {
"value": "$(secretOrRandomPassword ${AZURE_KEY_VAULT_NAME} sqlAdminPassword)"
}
secretOrRandomPassword
çıktısı, gelecekteki çalıştırmalar için Bicep kullanılarak Key Vault'a da kaydedilmelidir. Dağıtımlar arasında aynı gizli dizilerin alınması ve yeniden kullanılmasının, sürekli olarak yeni değerler oluşturulurken ortaya çıkarabilecek hataları veya istenmeyen davranışları önleyebileceği. Key Vault oluşturmak ve oluşturulan gizli diziyi bu kasada depolamak için aşağıdaki Bicep kodunu kullanın. Bu modüllerin tam örnek kodunu Azure Developer CLI GitHub deposundagörüntüleyebilirsiniz.
module keyVault './core/security/keyvault.bicep' = {
name: 'keyvault'
scope: resourceGroup
params: {
name: '${take(prefix, 17)}-vault'
location: location
tags: tags
principalId: principalId
}
}
module keyVaultSecrets './core/security/keyvault-secret.bicep' = {
name: 'keyvault-secret-sqlAdminPassword'
scope: resourceGroup
params: {
keyVaultName: keyVault.outputs.name
name: 'sqlAdminPassword'
secretValue: sqlAdminPassword
}
}]
Bu Bicep kurulumu, gizli dizilerinizi yönetmek için aşağıdaki iş akışını etkinleştirir:
- Belirtilen gizli dizi varsa,
secretOrRandomPassword
işlevi kullanılarak Key Vault'tan alınır. - Gizli dizi yoksa bir Key Vault oluşturulur ve rastgele oluşturulan gizli dizi içinde depolanır.
- Gelecekteki dağıtımlarda
secretOrRandomPassword
yöntemi, depolanan gizli diziyi Key Vault'ta mevcut olduğu için alır. Key Vault zaten varsa yeniden oluşturulmayacak, ancak aynı gizli dizi değeri bir sonraki çalıştırma için yeniden depolanacaktır.
Ücretsiz Azure Aboneliği'ni kullanabilir miyim?
Evet, ancak her Azure konumunun yalnızca bir dağıtımı olabilir. Seçili Azure konumunu zaten kullandıysanız dağıtım hatasını görürsünüz:
InvalidTemplateDeployment: The template deployment '<env_name>' isn't valid according to the validation procedure. The tracking ID is '<tracking_id>'. See inner errors for details.
Sorunu çözmek için farklı bir Azure konumu seçebilirsiniz.
Azure App Service ile barındırılan uygulamam bir "Aldatıcı site ileride" uyarısı tetikliyor. Nasıl düzeltebilirim?
Bunun nedeni kaynakları adlandırma yöntemimiz olabilir.
'Azure Dev' tarafından yazılan şablonlarımız kaynağın adını yapılandırmaya olanak sağlar. Bunu yapmak için, main.parameters.json
klasöründeki infra
bir girdi ekleyebilirsiniz. Mesela:
"webServiceName": {
"value": "my-unique-name"
}
Bu giriş, uygulamanızı bir sonraki sağlamanızda "app-web-aj84u2adj" gibi rastgele bir değer yerine "my-unique-name" adlı yeni bir kaynak oluşturur. Azure portalını kullanarak eski kaynak grubunu el ile kaldırabilir veya önceki tüm dağıtımları kaldırmak için azd down
çalıştırabilirsiniz. Kaynakları kaldırdıktan sonra, yeni adla yeniden oluşturmak için azd provision
çalıştırın.
Bu adın genel olarak benzersiz olması gerekir, aksi takdirde kaynağı oluşturmaya çalışırken azd provision
sırasında bir ARM hatası alırsınız.
Komut: azd provision
Komut hangi kaynakların sağ kullanılacağını nasıl biliyor?
Komut, Azure kaynaklarını sağlamak için <your-project-directory-name>/infra
altında bulunan Bicep şablonlarını kullanır.
Azure'da hangi kaynakların sağlandığına nereden erişebilirim?
https://portal.azure.com gidin ve rg-<your-environment-name>
olan kaynak grubunuzu arayın.
Azure hataları hakkında nasıl daha fazla bilgi bulabilirim?
Azure kaynaklarını sağlamak için <your-project-directory-name>/infra
altında bulunan Bicep şablonlarını kullanırız. Sorun varsa, CLI çıkışına hata iletisini ekleriz.
Ayrıca https://portal.azure.com gidip rg-<your-environment-name>
olan kaynak grubunuzu arayabilirsiniz. Dağıtımlardan herhangi biri başarısız olursa daha fazla bilgi edinmek için hata bağlantısını seçin.
Diğer kaynaklar için bkz. Yaygın Azure dağıtım hatalarını giderme - Azure Resource Manager.
'azd provision' için bir günlük dosyası var mı?
Çok yakında. Bu özellik gelecekteki bir sürüm için planlanıyor.
Komut: azd deploy
Bu komutu yeniden çalıştırabilir miyim?
Evet.
azd, kodumun dağıtılacağı Azure kaynağını nasıl bulur?
Dağıtım sırasında azd
önce azd-env-name
ile etiketlenmiş ve ortamınızın adıyla eşleşen bir değere sahip grupları arayarak uygulamanızı oluşturan tüm kaynak gruplarını bulur. Ardından, bu kaynak gruplarının her birindeki tüm kaynakları numaralandırır ve azd-service-name
hizmetinizin adıyla eşleşen bir değerle azure.yaml
etiketli bir kaynak arar.
Kaynaklarda etiketlerin kullanılmasını önersek de, resourceName
'daki azure.yaml
özelliğini kullanarak açık bir kaynak adı da sağlayabilirsiniz. Bu durumda yukarıdaki mantık çalıştırılamaz.
Diğer hizmetleri atlarken projeme belirli hizmetleri nasıl dağıtacağım?
Projenizi dağıtırken, komutta hizmet adını belirterek (azd deploy api
) veya yalnızca dağıtmak istediğiniz hizmetleri içeren bir alt klasöre giderek belirli hizmetleri dağıtmayı seçebilirsiniz. Bunu yaparken, diğer tüm hizmetler - Skipped
olarak listelenir.
Hiçbir hizmeti atlamak istemiyorsanız, komutunu kök klasörden çalıştırdığınızdan veya --all
bayrağını komutunuza eklediğinizden emin olun.
Komut: azd up
'azd up' komutunu yeniden çalıştırabilir miyim?
Evet.
'azd up' için günlük dosyasını nasıl bulabilirim?
Çok yakında. Bu özellik gelecekteki bir sürüm için planlanıyor.
Komut: azd işlem hattı
Azure hizmet sorumlusu nedir?
Azure hizmet sorumlusu, Azure kaynaklarına erişmek için uygulamalar, barındırılan hizmetler ve otomatik araçlarla kullanılmak üzere oluşturulmuş bir kimliktir. Bu erişim, hangi kaynaklara ve hangi düzeyde erişilebileceğini denetlemenizi sağlayan hizmet sorumlusuna atanan rollerle kısıtlanır. Azure'dan GitHub'a kimlik doğrulaması hakkında daha fazla bilgi için bkz. GitHub ve Azure'a bağlanma | Microsoft Docs.
'azd pipeline config' komutunu çalıştırmadan önce bir Azure hizmet sorumlusu oluşturmam gerekiyor mu?
Hayır.
azd pipeline config
komutu, Azure hizmet sorumlusu oluşturma ve gizli dizileri GitHub deponuzda depolamak için gerekli adımları gerçekleştirme işlemlerini gerçekleştirir.
GitHub'da depolanan tüm gizli diziler nelerdir?
Komut GitHub'da dört gizli dizi depolar: AZURE_CREDENTIALS, AZURE_ENV_NAME, AZURE_LOCATION ve AZURE_SUBSCRIPTION_ID.
https://github.com/<your-github-account>/<your-repo>/secrets/actions
giderek her gizli dizinin değerini geçersiz kılabilirsiniz.
OpenID Connect (OIDC) nedir ve destekleniyor mu?
OpenID Connectile iş akışlarınız kısa süreli belirteçleri doğrudan Azure'dan değiştirebilir.
GitHub Actions ve Azure Pipeline için varsayılan olarak OIDC destekleniyor olsa da (federasyonolarak ayarlanır), Azure DevOps veya Terraform için desteklenmez.
- Azure DevOps için açıkça
--auth-type
federated
olarak çağırmak hataya neden olur. - Terraform için:
-
--auth-type
tanımlanmamışsa,clientcredentials
geri döner ve bir uyarıyla sonuçlanır. -
--auth-type
açıkçafederated
olarak ayarlanırsa hataya neden olur.
-
GitHub Actions'ta depolanan Azure hizmet sorumlusunu nasıl sıfırlayabilirim?
https://github.com/<your-github-account>/<your-repo>settings/secrets/actions
gidin ve yeni hizmet sorumlusu için JSON nesnesinin tamamını kopyalayıp yapıştırarak AZURE_CREDENTIALS
güncelleştirin. Mesela:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
GitHub Actions dosyası nerede depolanır?
GitHub Actions dosya yolu <your-project-directory-name>\.github\workflows\azure-dev.yml
.
azure-dev.yml dosyasında yalnızca derleme adımındaki kodu dağıtabilir miyim?
Evet.
run: azd up --no-prompt
değerini run: azd deploy --no-prompt
ile değiştirin.
'azd pipeline config' komutunu çalıştırdığımda tetiklediğim GitHub Actions işinin günlüğünü nerede bulabilirim?
https://github.com/<your-github-account>/<your-repo>/actions
gidin ve iş akışı çalıştırmasında günlük dosyasına bakın.
Yerel olarak kapsayıcı uygulaması oluşturma
Neden oluşturmakta olduğum kapsayıcı uygulamasını yerel olarak çalıştıramıyorum?
Kapsayıcı uygulamalarını yerel olarak oluştururken, uygulamanın azd auth login
ile çalışması için kapsayıcıda AzureDeveloperCliCredential
çalıştırmanız gerekir. Alternatif olarak, uygulamanızı AzureDeveloperCliCredential
yerine bir hizmet sorumlusu kullanacak şekilde yapılandırabilirsiniz.