Skip to content

Commit eae560a

Browse files
[Automated] Update Playground Manifests (microsoft#12159)
Co-authored-by: davidfowl <davidfowl@users.noreply.github.com>
1 parent c287f47 commit eae560a

File tree

23 files changed

+1202
-13
lines changed

23 files changed

+1202
-13
lines changed
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
@description('The location for the resource(s) to be deployed.')
2+
param location string = resourceGroup().location
3+
4+
param infra_outputs_azure_container_registry_endpoint string
5+
6+
param infra_outputs_planid string
7+
8+
param infra_outputs_azure_container_registry_managed_identity_id string
9+
10+
param infra_outputs_azure_container_registry_managed_identity_client_id string
11+
12+
param api_containerimage string
13+
14+
param api_containerport string
15+
16+
param storage_outputs_blobendpoint string
17+
18+
param account_outputs_connectionstring string
19+
20+
@secure()
21+
param secretparam_value string
22+
23+
param api_identity_outputs_principalname string
24+
25+
param api_identity_outputs_id string
26+
27+
param api_identity_outputs_clientid string
28+
29+
param infra_outputs_azure_app_service_dashboard_uri string
30+
31+
param infra_outputs_azure_website_contributor_managed_identity_id string
32+
33+
param infra_outputs_azure_website_contributor_managed_identity_principal_id string
34+
35+
resource mainContainer 'Microsoft.Web/sites/sitecontainers@2024-11-01' = {
36+
name: 'main'
37+
properties: {
38+
authType: 'UserAssigned'
39+
image: api_containerimage
40+
isMain: true
41+
targetPort: api_containerport
42+
userManagedIdentityClientId: infra_outputs_azure_container_registry_managed_identity_client_id
43+
}
44+
parent: webapp
45+
}
46+
47+
resource webapp 'Microsoft.Web/sites@2024-11-01' = {
48+
name: take('${toLower('api')}-${uniqueString(resourceGroup().id)}', 60)
49+
location: location
50+
properties: {
51+
serverFarmId: infra_outputs_planid
52+
keyVaultReferenceIdentity: api_identity_outputs_id
53+
siteConfig: {
54+
numberOfWorkers: 30
55+
linuxFxVersion: 'SITECONTAINERS'
56+
acrUseManagedIdentityCreds: true
57+
acrUserManagedIdentityID: infra_outputs_azure_container_registry_managed_identity_client_id
58+
appSettings: [
59+
{
60+
name: 'WEBSITES_PORT'
61+
value: api_containerport
62+
}
63+
{
64+
name: 'OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES'
65+
value: 'true'
66+
}
67+
{
68+
name: 'OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES'
69+
value: 'true'
70+
}
71+
{
72+
name: 'OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY'
73+
value: 'in_memory'
74+
}
75+
{
76+
name: 'ASPNETCORE_FORWARDEDHEADERS_ENABLED'
77+
value: 'true'
78+
}
79+
{
80+
name: 'HTTP_PORTS'
81+
value: api_containerport
82+
}
83+
{
84+
name: 'ConnectionStrings__blobs'
85+
value: storage_outputs_blobendpoint
86+
}
87+
{
88+
name: 'ConnectionStrings__account'
89+
value: account_outputs_connectionstring
90+
}
91+
{
92+
name: 'VALUE'
93+
value: secretparam_value
94+
}
95+
{
96+
name: 'AZURE_PRINCIPAL_NAME'
97+
value: api_identity_outputs_principalname
98+
}
99+
{
100+
name: 'AZURE_CLIENT_ID'
101+
value: api_identity_outputs_clientid
102+
}
103+
{
104+
name: 'AZURE_TOKEN_CREDENTIALS'
105+
value: 'ManagedIdentityCredential'
106+
}
107+
{
108+
name: 'ASPIRE_ENVIRONMENT_NAME'
109+
value: 'infra'
110+
}
111+
{
112+
name: 'OTEL_SERVICE_NAME'
113+
value: 'api'
114+
}
115+
{
116+
name: 'OTEL_EXPORTER_OTLP_PROTOCOL'
117+
value: 'grpc'
118+
}
119+
{
120+
name: 'OTEL_EXPORTER_OTLP_ENDPOINT'
121+
value: 'http://localhost:6001'
122+
}
123+
{
124+
name: 'WEBSITE_ENABLE_ASPIRE_OTEL_SIDECAR'
125+
value: 'true'
126+
}
127+
{
128+
name: 'OTEL_COLLECTOR_URL'
129+
value: infra_outputs_azure_app_service_dashboard_uri
130+
}
131+
{
132+
name: 'OTEL_CLIENT_ID'
133+
value: infra_outputs_azure_container_registry_managed_identity_client_id
134+
}
135+
]
136+
}
137+
}
138+
identity: {
139+
type: 'UserAssigned'
140+
userAssignedIdentities: {
141+
'${infra_outputs_azure_container_registry_managed_identity_id}': { }
142+
'${api_identity_outputs_id}': { }
143+
}
144+
}
145+
}
146+
147+
resource api_website_ra 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
148+
name: guid(webapp.id, infra_outputs_azure_website_contributor_managed_identity_id, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'de139f84-1756-47ae-9be6-808fbbe84772'))
149+
properties: {
150+
principalId: infra_outputs_azure_website_contributor_managed_identity_principal_id
151+
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'de139f84-1756-47ae-9be6-808fbbe84772')
152+
principalType: 'ServicePrincipal'
153+
}
154+
scope: webapp
155+
}

playground/AzureAppService/AzureAppService.AppHost/aspire-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"path": "../AzureAppService.ApiService/AzureAppService.ApiService.csproj",
4141
"deployment": {
4242
"type": "azure.bicep.v0",
43-
"path": "api.module.bicep",
43+
"path": "api-website.module.bicep",
4444
"params": {
4545
"infra_outputs_azure_container_registry_endpoint": "{infra.outputs.AZURE_CONTAINER_REGISTRY_ENDPOINT}",
4646
"infra_outputs_planid": "{infra.outputs.planId}",

playground/AzureAppService/AzureAppService.AppHost/infra.module.bicep

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ output name string = infra_asplan.name
128128

129129
output planId string = infra_asplan.id
130130

131+
output webSiteSuffix string = uniqueString(resourceGroup().id)
132+
131133
output AZURE_CONTAINER_REGISTRY_NAME string = infra_acr.name
132134

133135
output AZURE_CONTAINER_REGISTRY_ENDPOINT string = infra_acr.properties.loginServer
Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
@description('The location for the resource(s) to be deployed.')
2+
param location string = resourceGroup().location
3+
4+
param infra_outputs_azure_container_apps_environment_default_domain string
5+
6+
param infra_outputs_azure_container_apps_environment_id string
7+
8+
param infra_outputs_azure_container_registry_endpoint string
9+
10+
param infra_outputs_azure_container_registry_managed_identity_id string
11+
12+
param api_containerimage string
13+
14+
param api_identity_outputs_id string
15+
16+
param api_containerport string
17+
18+
param storage_outputs_blobendpoint string
19+
20+
@secure()
21+
param cache_password_value string
22+
23+
param account_kv_outputs_name string
24+
25+
@secure()
26+
param secretparam_value string
27+
28+
param api_identity_outputs_principalname string
29+
30+
param api_identity_outputs_clientid string
31+
32+
param certificateName string
33+
34+
param customDomain string
35+
36+
resource account_kv 'Microsoft.KeyVault/vaults@2024-11-01' existing = {
37+
name: account_kv_outputs_name
38+
}
39+
40+
resource account_kv_connectionstrings__account 'Microsoft.KeyVault/vaults/secrets@2024-11-01' existing = {
41+
name: 'connectionstrings--account'
42+
parent: account_kv
43+
}
44+
45+
resource api 'Microsoft.App/containerApps@2025-02-02-preview' = {
46+
name: 'api'
47+
location: location
48+
properties: {
49+
configuration: {
50+
secrets: [
51+
{
52+
name: 'connectionstrings--cache'
53+
value: 'cache:6379,password=${cache_password_value}'
54+
}
55+
{
56+
name: 'cache-password'
57+
value: cache_password_value
58+
}
59+
{
60+
name: 'cache-uri'
61+
value: 'redis://:${uriComponent(cache_password_value)}@cache:6379'
62+
}
63+
{
64+
name: 'connectionstrings--account'
65+
identity: api_identity_outputs_id
66+
keyVaultUrl: account_kv_connectionstrings__account.properties.secretUri
67+
}
68+
{
69+
name: 'value'
70+
value: secretparam_value
71+
}
72+
]
73+
activeRevisionsMode: 'Single'
74+
ingress: {
75+
external: true
76+
targetPort: int(api_containerport)
77+
transport: 'http'
78+
customDomains: [
79+
{
80+
name: customDomain
81+
bindingType: (certificateName != '') ? 'SniEnabled' : 'Disabled'
82+
certificateId: (certificateName != '') ? '${infra_outputs_azure_container_apps_environment_id}/managedCertificates/${certificateName}' : null
83+
}
84+
]
85+
}
86+
registries: [
87+
{
88+
server: infra_outputs_azure_container_registry_endpoint
89+
identity: infra_outputs_azure_container_registry_managed_identity_id
90+
}
91+
]
92+
runtime: {
93+
dotnet: {
94+
autoConfigureDataProtection: true
95+
}
96+
}
97+
}
98+
environmentId: infra_outputs_azure_container_apps_environment_id
99+
template: {
100+
containers: [
101+
{
102+
image: api_containerimage
103+
name: 'api'
104+
env: [
105+
{
106+
name: 'OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES'
107+
value: 'true'
108+
}
109+
{
110+
name: 'OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES'
111+
value: 'true'
112+
}
113+
{
114+
name: 'OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY'
115+
value: 'in_memory'
116+
}
117+
{
118+
name: 'ASPNETCORE_FORWARDEDHEADERS_ENABLED'
119+
value: 'true'
120+
}
121+
{
122+
name: 'HTTP_PORTS'
123+
value: api_containerport
124+
}
125+
{
126+
name: 'ConnectionStrings__blobs'
127+
value: storage_outputs_blobendpoint
128+
}
129+
{
130+
name: 'ConnectionStrings__cache'
131+
secretRef: 'connectionstrings--cache'
132+
}
133+
{
134+
name: 'CACHE_HOST'
135+
value: 'cache'
136+
}
137+
{
138+
name: 'CACHE_PORT'
139+
value: '6379'
140+
}
141+
{
142+
name: 'CACHE_PASSWORD'
143+
secretRef: 'cache-password'
144+
}
145+
{
146+
name: 'CACHE_URI'
147+
secretRef: 'cache-uri'
148+
}
149+
{
150+
name: 'ConnectionStrings__account'
151+
secretRef: 'connectionstrings--account'
152+
}
153+
{
154+
name: 'VALUE'
155+
secretRef: 'value'
156+
}
157+
{
158+
name: 'AZURE_PRINCIPAL_NAME'
159+
value: api_identity_outputs_principalname
160+
}
161+
{
162+
name: 'AZURE_CLIENT_ID'
163+
value: api_identity_outputs_clientid
164+
}
165+
{
166+
name: 'AZURE_TOKEN_CREDENTIALS'
167+
value: 'ManagedIdentityCredential'
168+
}
169+
]
170+
}
171+
]
172+
scale: {
173+
minReplicas: 0
174+
}
175+
}
176+
}
177+
identity: {
178+
type: 'UserAssigned'
179+
userAssignedIdentities: {
180+
'${api_identity_outputs_id}': { }
181+
'${infra_outputs_azure_container_registry_managed_identity_id}': { }
182+
}
183+
}
184+
}

playground/AzureContainerApps/AzureContainerApps.AppHost/aspire-manifest.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
"image": "docker.io/library/redis:8.2",
4343
"deployment": {
4444
"type": "azure.bicep.v0",
45-
"path": "cache.module.bicep",
45+
"path": "cache-containerapp.module.bicep",
4646
"params": {
4747
"infra_outputs_azure_container_apps_environment_default_domain": "{infra.outputs.AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN}",
4848
"infra_outputs_azure_container_apps_environment_id": "{infra.outputs.AZURE_CONTAINER_APPS_ENVIRONMENT_ID}",
@@ -107,7 +107,7 @@
107107
},
108108
"deployment": {
109109
"type": "azure.bicep.v0",
110-
"path": "pythonapp.module.bicep",
110+
"path": "pythonapp-containerapp.module.bicep",
111111
"params": {
112112
"infra_outputs_azure_container_apps_environment_default_domain": "{infra.outputs.AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN}",
113113
"infra_outputs_azure_container_apps_environment_id": "{infra.outputs.AZURE_CONTAINER_APPS_ENVIRONMENT_ID}",
@@ -122,7 +122,7 @@
122122
"path": "../AzureContainerApps.ApiService/AzureContainerApps.ApiService.csproj",
123123
"deployment": {
124124
"type": "azure.bicep.v0",
125-
"path": "api.module.bicep",
125+
"path": "api-containerapp.module.bicep",
126126
"params": {
127127
"infra_outputs_azure_container_apps_environment_default_domain": "{infra.outputs.AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN}",
128128
"infra_outputs_azure_container_apps_environment_id": "{infra.outputs.AZURE_CONTAINER_APPS_ENVIRONMENT_ID}",

0 commit comments

Comments
 (0)