azd 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +2 -0
  4. data/lib/generators/azd/install_generator.rb +14 -0
  5. data/lib/generators/templates/azure.yaml.tt +22 -0
  6. data/lib/generators/templates/infra/abbreviations.json +136 -0
  7. data/lib/generators/templates/infra/core/ai/cognitiveservices.bicep +53 -0
  8. data/lib/generators/templates/infra/core/config/configstore.bicep +48 -0
  9. data/lib/generators/templates/infra/core/database/cosmos/cosmos-account.bicep +49 -0
  10. data/lib/generators/templates/infra/core/database/cosmos/mongo/cosmos-mongo-account.bicep +23 -0
  11. data/lib/generators/templates/infra/core/database/cosmos/mongo/cosmos-mongo-db.bicep +47 -0
  12. data/lib/generators/templates/infra/core/database/cosmos/sql/cosmos-sql-account.bicep +22 -0
  13. data/lib/generators/templates/infra/core/database/cosmos/sql/cosmos-sql-db.bicep +74 -0
  14. data/lib/generators/templates/infra/core/database/cosmos/sql/cosmos-sql-role-assign.bicep +19 -0
  15. data/lib/generators/templates/infra/core/database/cosmos/sql/cosmos-sql-role-def.bicep +30 -0
  16. data/lib/generators/templates/infra/core/database/mysql/flexibleserver.bicep +65 -0
  17. data/lib/generators/templates/infra/core/database/postgresql/flexibleserver.bicep +81 -0
  18. data/lib/generators/templates/infra/core/database/sqlserver/sqlserver.bicep +130 -0
  19. data/lib/generators/templates/infra/core/gateway/apim.bicep +79 -0
  20. data/lib/generators/templates/infra/core/host/aks-agent-pool.bicep +18 -0
  21. data/lib/generators/templates/infra/core/host/aks-managed-cluster.bicep +140 -0
  22. data/lib/generators/templates/infra/core/host/aks.bicep +280 -0
  23. data/lib/generators/templates/infra/core/host/appservice-appsettings.bicep +17 -0
  24. data/lib/generators/templates/infra/core/host/appservice.bicep +123 -0
  25. data/lib/generators/templates/infra/core/host/appserviceplan.bicep +22 -0
  26. data/lib/generators/templates/infra/core/host/container-app-upsert.bicep +109 -0
  27. data/lib/generators/templates/infra/core/host/container-app.bicep +165 -0
  28. data/lib/generators/templates/infra/core/host/container-apps-environment.bicep +41 -0
  29. data/lib/generators/templates/infra/core/host/container-apps.bicep +40 -0
  30. data/lib/generators/templates/infra/core/host/container-registry.bicep +83 -0
  31. data/lib/generators/templates/infra/core/host/functions.bicep +86 -0
  32. data/lib/generators/templates/infra/core/host/staticwebapp.bicep +22 -0
  33. data/lib/generators/templates/infra/core/monitor/applicationinsights-dashboard.bicep +1236 -0
  34. data/lib/generators/templates/infra/core/monitor/applicationinsights.bicep +30 -0
  35. data/lib/generators/templates/infra/core/monitor/loganalytics.bicep +22 -0
  36. data/lib/generators/templates/infra/core/monitor/monitoring.bicep +32 -0
  37. data/lib/generators/templates/infra/core/networking/cdn-endpoint.bicep +52 -0
  38. data/lib/generators/templates/infra/core/networking/cdn-profile.bicep +34 -0
  39. data/lib/generators/templates/infra/core/networking/cdn.bicep +42 -0
  40. data/lib/generators/templates/infra/core/search/search-services.bicep +68 -0
  41. data/lib/generators/templates/infra/core/security/aks-managed-cluster-access.bicep +19 -0
  42. data/lib/generators/templates/infra/core/security/configstore-access.bicep +21 -0
  43. data/lib/generators/templates/infra/core/security/keyvault-access.bicep +22 -0
  44. data/lib/generators/templates/infra/core/security/keyvault-secret.bicep +31 -0
  45. data/lib/generators/templates/infra/core/security/keyvault.bicep +31 -0
  46. data/lib/generators/templates/infra/core/security/registry-access.bicep +19 -0
  47. data/lib/generators/templates/infra/core/security/role.bicep +21 -0
  48. data/lib/generators/templates/infra/core/storage/storage-account.bicep +64 -0
  49. data/lib/generators/templates/infra/core/testing/loadtesting.bicep +15 -0
  50. data/lib/generators/templates/infra/identity.bicep +20 -0
  51. data/lib/generators/templates/infra/main.bicep +243 -0
  52. data/lib/generators/templates/infra/main.parameters.json +25 -0
  53. data/lib/generators/templates/infra/rails.bicep +95 -0
  54. metadata +115 -0
@@ -0,0 +1,243 @@
1
+ targetScope = 'subscription'
2
+
3
+ // The main bicep module to provision Azure resources.
4
+ // For a more complete walkthrough to understand how this file works with azd,
5
+ // see https://learn.microsoft.com/en-us/azure/developer/azure-developer-cli/make-azd-compatible?pivots=azd-create
6
+
7
+ @minLength(1)
8
+ @maxLength(64)
9
+ @description('Name of the the environment which is used to generate a short unique hash used in all resources.')
10
+ param environmentName string
11
+
12
+ @minLength(1)
13
+ @description('Primary location for all resources')
14
+ param location string
15
+
16
+ @secure()
17
+ @description('PostGreSQL Server administrator password')
18
+ param postgresAdminPassword string
19
+
20
+ @secure()
21
+ @description('Rails SECRET_KEY_BASE for cryptographic signing')
22
+ param railsSecretKeyBase string
23
+
24
+ @secure()
25
+ @description('Rails RAILS_MASTER_KEY for secret encryption')
26
+ param railsMasterKey string
27
+
28
+ // Optional parameters to override the default azd resource naming conventions.
29
+ // Add the following to main.parameters.json to provide values:
30
+ // "resourceGroupName": {
31
+ // "value": "myGroupName"
32
+ // }
33
+ @description('Resource group name')
34
+ param resourceGroupName string = ''
35
+
36
+ @description('PostgreSQL database name')
37
+ param postgresDatabaseName string = 'azure_rails_starter_production'
38
+
39
+ @description('Keyvault resource name')
40
+ param keyVaultName string = ''
41
+
42
+ @description('Azure Container Apps identity name')
43
+ param identityName string = ''
44
+
45
+ @description('If true use existing Azure Container Apps instance')
46
+ param acaExists bool = false
47
+
48
+ var abbrs = loadJsonContent('./abbreviations.json')
49
+
50
+ var tags = {
51
+ 'azd-env-name': environmentName
52
+ }
53
+
54
+ // Generate a unique token to be used in naming resources.
55
+ // Remove linter suppression after using.
56
+ #disable-next-line no-unused-vars
57
+ var resourceToken = toLower(uniqueString(subscription().id, environmentName, location))
58
+
59
+ // Name of the service defined in azure.yaml
60
+ // A tag named azd-service-name with this value should be applied to the service host resource, such as:
61
+ // Microsoft.Web/sites for appservice, function
62
+ // Example usage:
63
+ // tags: union(tags, { 'azd-service-name': apiServiceName })
64
+ var appServiceName = 'azure-rails-starter'
65
+
66
+ // Organize resources in a resource group
67
+ resource resourceGroup 'Microsoft.Resources/resourceGroups@2021-04-01' = {
68
+ name: !empty(resourceGroupName) ? resourceGroupName : '${abbrs.resourcesResourceGroups}${environmentName}'
69
+ location: location
70
+ tags: tags
71
+ }
72
+
73
+ var prefix = '${environmentName}-${resourceToken}'
74
+ var railsIdentityName = !empty(identityName)
75
+ ? identityName
76
+ : '${abbrs.managedIdentityUserAssignedIdentities}rails-${environmentName}'
77
+ var postgresServerName = '${abbrs.dBforPostgreSQLServers}${prefix}'
78
+ var postgresAdminUser = 'admin${uniqueString(resourceGroup.id)}'
79
+
80
+ // Add resources to be provisioned below.
81
+ // A full example that leverages azd bicep modules can be seen in the todo-python-mongo template:
82
+ // https://github.com/Azure-Samples/todo-python-mongo/tree/main/infra
83
+
84
+ module railsIdentity 'identity.bicep' = {
85
+ name: 'identity'
86
+ scope: resourceGroup
87
+ params: {
88
+ name: railsIdentityName
89
+ location: location
90
+ tags: tags
91
+ }
92
+ }
93
+
94
+ module logAnalyticsWorkspace 'core/monitor/loganalytics.bicep' = {
95
+ name: 'loganalytics'
96
+ scope: resourceGroup
97
+ params: {
98
+ name: '${prefix}-loganalytics'
99
+ location: location
100
+ tags: tags
101
+ }
102
+ }
103
+
104
+ module postgresServer 'core/database/postgresql/flexibleserver.bicep' = {
105
+ name: 'postgresql'
106
+ scope: resourceGroup
107
+ params: {
108
+ name: postgresServerName
109
+ location: location
110
+ tags: tags
111
+ sku: {
112
+ name: 'Standard_B1ms'
113
+ tier: 'Burstable'
114
+ }
115
+ storage: {
116
+ storageSizeGB: 32
117
+ }
118
+ version: '14'
119
+ administratorLogin: postgresAdminUser
120
+ administratorLoginPassword: postgresAdminPassword
121
+ databaseNames: [postgresDatabaseName]
122
+ allowAzureIPsFirewall: true
123
+ azureExtensions: ['PLPGSQL']
124
+ }
125
+ }
126
+
127
+ module containerApps 'core/host/container-apps.bicep' = {
128
+ name: 'container-apps'
129
+ scope: resourceGroup
130
+ params: {
131
+ name: 'app'
132
+ location: location
133
+ tags: tags
134
+ containerAppsEnvironmentName: '${prefix}-containerapps-env'
135
+ containerRegistryName: '${replace(prefix, '-', '')}registry'
136
+ logAnalyticsWorkspaceName: logAnalyticsWorkspace.outputs.name
137
+ }
138
+ }
139
+
140
+ module keyVault './core/security/keyvault.bicep' = {
141
+ name: 'keyvault'
142
+ scope: resourceGroup
143
+ params: {
144
+ name: !empty(keyVaultName) ? keyVaultName : '${abbrs.keyVaultVaults}${resourceToken}'
145
+ location: location
146
+ tags: tags
147
+ identityName: railsIdentity.outputs.name
148
+ }
149
+ }
150
+
151
+ module keyVaultAccess './core/security/keyvault-access.bicep' = {
152
+ name: 'keyvault-access'
153
+ scope: resourceGroup
154
+ params: {
155
+ keyVaultName: keyVault.outputs.name
156
+ principalId: railsIdentity.outputs.principalId
157
+ }
158
+ }
159
+
160
+ module keyVaultSecretPostgresAdminPassword './core/security/keyvault-secret.bicep' = {
161
+ name: 'keyvault-secret-postgres-admin-password'
162
+ scope: resourceGroup
163
+ params: {
164
+ keyVaultName: keyVault.outputs.name
165
+ name: 'postgres-admin-password'
166
+ secretValue: postgresAdminPassword
167
+ }
168
+ }
169
+
170
+ module keyVaultSecretDatabaseUrl './core/security/keyvault-secret.bicep' = {
171
+ name: 'keyvault-secret-database-url'
172
+ scope: resourceGroup
173
+ params: {
174
+ keyVaultName: keyVault.outputs.name
175
+ name: 'database-url'
176
+ secretValue: 'postgresql://${postgresAdminUser}:${postgresAdminPassword}@${postgresServer.outputs.POSTGRES_DOMAIN_NAME}:5432/${postgresDatabaseName}?connect_timeout=5&sslmode=require'
177
+ }
178
+ }
179
+
180
+ module keyVaultSecretSecretKeyBase './core/security/keyvault-secret.bicep' = {
181
+ name: 'keyvault-secret-secret-key-base'
182
+ scope: resourceGroup
183
+ params: {
184
+ keyVaultName: keyVault.outputs.name
185
+ name: 'secret-key-base'
186
+ secretValue: railsSecretKeyBase
187
+ }
188
+ }
189
+
190
+ module keyVaultSecretRailsMasterKey './core/security/keyvault-secret.bicep' = {
191
+ name: 'keyvault-secret-rails-master-key'
192
+ scope: resourceGroup
193
+ params: {
194
+ keyVaultName: keyVault.outputs.name
195
+ name: 'rails-master-key'
196
+ secretValue: railsMasterKey
197
+ }
198
+ }
199
+
200
+ module rails 'rails.bicep' = {
201
+ name: 'rails'
202
+ scope: resourceGroup
203
+ params: {
204
+ name: replace('${take(prefix,19)}-ca', '--', '-')
205
+ location: location
206
+ tags: tags
207
+ identityName: railsIdentity.outputs.name
208
+ containerAppsEnvironmentName: containerApps.outputs.environmentName
209
+ containerRegistryName: containerApps.outputs.registryName
210
+ serviceName: appServiceName
211
+ exists: acaExists
212
+ keyVaultName: keyVault.outputs.name
213
+ }
214
+ dependsOn: [
215
+ keyVaultSecretDatabaseUrl
216
+ keyVaultSecretSecretKeyBase
217
+ keyVaultAccess
218
+ ]
219
+ }
220
+
221
+ // Add outputs from the deployment here, if needed.
222
+ //
223
+ // This allows the outputs to be referenced by other bicep deployments in the deployment pipeline,
224
+ // or by the local machine as a way to reference created resources in Azure for local development.
225
+ // Secrets should not be added here.
226
+ //
227
+ // Outputs are automatically saved in the local azd environment .env file.
228
+ // To see these outputs, run `azd env get-values`, or `azd env get-values --output json` for json output.
229
+
230
+ output AZURE_LOCATION string = location
231
+ output AZURE_RESOURCE_GROUP_NAME string = resourceGroup.name
232
+ output AZURE_TENANT_ID string = tenant().tenantId
233
+ output AZURE_KEY_VAULT_NAME string = keyVault.outputs.name
234
+
235
+ output SERVICE_RAILS_IDENTITY_PRINCIPAL_ID string = rails.outputs.SERVICE_RAILS_IDENTITY_PRINCIPAL_ID
236
+ output SERVICE_RAILS_NAME string = rails.outputs.SERVICE_RAILS_NAME
237
+ output SERVICE_RAILS_URI string = rails.outputs.SERVICE_RAILS_URI
238
+ output SERVICE_RAILS_IMAGE_NAME string = rails.outputs.SERVICE_RAILS_IMAGE_NAME
239
+ output SERVICE_RAILS_DATABASE_NAME string = postgresDatabaseName
240
+
241
+ output AZURE_CONTAINER_ENVIRONMENT_NAME string = containerApps.outputs.environmentName
242
+ output AZURE_CONTAINER_REGISTRY_ENDPOINT string = containerApps.outputs.registryLoginServer
243
+ output AZURE_CONTAINER_REGISTRY_NAME string = containerApps.outputs.registryName
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
3
+ "contentVersion": "1.0.0.0",
4
+ "parameters": {
5
+ "environmentName": {
6
+ "value": "${AZURE_ENV_NAME}"
7
+ },
8
+ "location": {
9
+ "value": "${AZURE_LOCATION}"
10
+ },
11
+
12
+ "postgresAdminPassword": {
13
+ "value": "$(secretOrRandomPassword ${AZURE_KEY_VAULT_NAME} postgres-admin-password)"
14
+ },
15
+ "railsSecretKeyBase": {
16
+ "value": "${SECRET_KEY_BASE}"
17
+ },
18
+ "railsMasterKey": {
19
+ "value": "${RAILS_MASTER_KEY}"
20
+ },
21
+ "postgresDatabaseName": {
22
+ "value": "${SERVICE_RAILS_DATABASE_NAME=azure-rails-starter-production}"
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,95 @@
1
+ //
2
+ // Bicep module with the container app definition for a Rails app.
3
+ //
4
+ @description('Name of the container app')
5
+ param name string
6
+
7
+ @description('Location of the container app')
8
+ param location string = resourceGroup().location
9
+
10
+ @description('Tags applied on the container app')
11
+ param tags object = {}
12
+
13
+ @description('Name of the container apps environment')
14
+ param containerAppsEnvironmentName string
15
+
16
+ @description('Name of the container registry')
17
+ param containerRegistryName string
18
+
19
+ @description('Service name (will be added as tag "azd-service-name")')
20
+ param serviceName string = 'rails'
21
+
22
+ @description('If true re-use existing Azure Container App')
23
+ param exists bool
24
+
25
+ @description('Name of the key vault to use for secret references')
26
+ param keyVaultName string
27
+
28
+ @description('Name of the managed identity to use for accessing secrets in the key vault')
29
+ param identityName string
30
+
31
+ module app 'core/host/container-app-upsert.bicep' = {
32
+ name: '${serviceName}-container-app-module'
33
+ params: {
34
+ name: name
35
+ containerMinReplicas: 0
36
+ containerMaxReplicas: 3
37
+ location: location
38
+ tags: union(tags, { 'azd-service-name': serviceName })
39
+ identityName: webIdentity.name
40
+ exists: exists
41
+ containerAppsEnvironmentName: containerAppsEnvironmentName
42
+ containerRegistryName: containerRegistryName
43
+ env: [
44
+ {
45
+ name: 'RAILS_ENV'
46
+ value: 'production'
47
+ }
48
+ {
49
+ name: 'DATABASE_URL'
50
+ secretRef: 'database-url'
51
+ }
52
+ {
53
+ name: 'SECRET_KEY_BASE'
54
+ secretRef: 'secret-key-base'
55
+ }
56
+ {
57
+ name: 'RAILS_MASTER_KEY'
58
+ secretRef: 'rails-master-key'
59
+ }
60
+ ]
61
+ secrets: [
62
+ {
63
+ name: 'database-url'
64
+ keyVaultUrl: '${keyVault.properties.vaultUri}secrets/database-url'
65
+ identity: webIdentity.id
66
+ }
67
+ {
68
+ name: 'secret-key-base'
69
+ keyVaultUrl: '${keyVault.properties.vaultUri}secrets/secret-key-base'
70
+ identity: webIdentity.id
71
+ }
72
+ {
73
+ name: 'rails-master-key'
74
+ keyVaultUrl: '${keyVault.properties.vaultUri}secrets/rails-master-key'
75
+ identity: webIdentity.id
76
+ }
77
+ ]
78
+ targetPort: 3000
79
+ }
80
+ }
81
+
82
+ resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' existing = {
83
+ name: keyVaultName
84
+ }
85
+
86
+ resource webIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' existing = {
87
+ name: identityName
88
+ }
89
+
90
+ output SERVICE_RAILS_IDENTITY_PRINCIPAL_ID string = webIdentity.name
91
+ output SERVICE_RAILS_NAME string = app.outputs.name
92
+ output SERVICE_RAILS_URI string = app.outputs.uri
93
+ output SERVICE_RAILS_IMAGE_NAME string = app.outputs.imageName
94
+
95
+
metadata ADDED
@@ -0,0 +1,115 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: azd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: ruby
6
+ authors:
7
+ - Dominique Broeglin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-04-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: railties
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '3'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '99'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '3'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '99'
33
+ description: Contains generators to make a rails application azd compatible
34
+ email:
35
+ executables: []
36
+ extensions: []
37
+ extra_rdoc_files: []
38
+ files:
39
+ - LICENSE
40
+ - README.md
41
+ - lib/generators/azd/install_generator.rb
42
+ - lib/generators/templates/azure.yaml.tt
43
+ - lib/generators/templates/infra/abbreviations.json
44
+ - lib/generators/templates/infra/core/ai/cognitiveservices.bicep
45
+ - lib/generators/templates/infra/core/config/configstore.bicep
46
+ - lib/generators/templates/infra/core/database/cosmos/cosmos-account.bicep
47
+ - lib/generators/templates/infra/core/database/cosmos/mongo/cosmos-mongo-account.bicep
48
+ - lib/generators/templates/infra/core/database/cosmos/mongo/cosmos-mongo-db.bicep
49
+ - lib/generators/templates/infra/core/database/cosmos/sql/cosmos-sql-account.bicep
50
+ - lib/generators/templates/infra/core/database/cosmos/sql/cosmos-sql-db.bicep
51
+ - lib/generators/templates/infra/core/database/cosmos/sql/cosmos-sql-role-assign.bicep
52
+ - lib/generators/templates/infra/core/database/cosmos/sql/cosmos-sql-role-def.bicep
53
+ - lib/generators/templates/infra/core/database/mysql/flexibleserver.bicep
54
+ - lib/generators/templates/infra/core/database/postgresql/flexibleserver.bicep
55
+ - lib/generators/templates/infra/core/database/sqlserver/sqlserver.bicep
56
+ - lib/generators/templates/infra/core/gateway/apim.bicep
57
+ - lib/generators/templates/infra/core/host/aks-agent-pool.bicep
58
+ - lib/generators/templates/infra/core/host/aks-managed-cluster.bicep
59
+ - lib/generators/templates/infra/core/host/aks.bicep
60
+ - lib/generators/templates/infra/core/host/appservice-appsettings.bicep
61
+ - lib/generators/templates/infra/core/host/appservice.bicep
62
+ - lib/generators/templates/infra/core/host/appserviceplan.bicep
63
+ - lib/generators/templates/infra/core/host/container-app-upsert.bicep
64
+ - lib/generators/templates/infra/core/host/container-app.bicep
65
+ - lib/generators/templates/infra/core/host/container-apps-environment.bicep
66
+ - lib/generators/templates/infra/core/host/container-apps.bicep
67
+ - lib/generators/templates/infra/core/host/container-registry.bicep
68
+ - lib/generators/templates/infra/core/host/functions.bicep
69
+ - lib/generators/templates/infra/core/host/staticwebapp.bicep
70
+ - lib/generators/templates/infra/core/monitor/applicationinsights-dashboard.bicep
71
+ - lib/generators/templates/infra/core/monitor/applicationinsights.bicep
72
+ - lib/generators/templates/infra/core/monitor/loganalytics.bicep
73
+ - lib/generators/templates/infra/core/monitor/monitoring.bicep
74
+ - lib/generators/templates/infra/core/networking/cdn-endpoint.bicep
75
+ - lib/generators/templates/infra/core/networking/cdn-profile.bicep
76
+ - lib/generators/templates/infra/core/networking/cdn.bicep
77
+ - lib/generators/templates/infra/core/search/search-services.bicep
78
+ - lib/generators/templates/infra/core/security/aks-managed-cluster-access.bicep
79
+ - lib/generators/templates/infra/core/security/configstore-access.bicep
80
+ - lib/generators/templates/infra/core/security/keyvault-access.bicep
81
+ - lib/generators/templates/infra/core/security/keyvault-secret.bicep
82
+ - lib/generators/templates/infra/core/security/keyvault.bicep
83
+ - lib/generators/templates/infra/core/security/registry-access.bicep
84
+ - lib/generators/templates/infra/core/security/role.bicep
85
+ - lib/generators/templates/infra/core/storage/storage-account.bicep
86
+ - lib/generators/templates/infra/core/testing/loadtesting.bicep
87
+ - lib/generators/templates/infra/identity.bicep
88
+ - lib/generators/templates/infra/main.bicep
89
+ - lib/generators/templates/infra/main.parameters.json
90
+ - lib/generators/templates/infra/rails.bicep
91
+ homepage: https://github.com/dbroeglin/azure-dev-gem
92
+ licenses:
93
+ - MIT
94
+ metadata:
95
+ source_code_uri: https://github.com/dbroeglin/azure-dev-gem
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 2.7.0
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubygems_version: 3.5.7
112
+ signing_key:
113
+ specification_version: 4
114
+ summary: Azure Developer CLI generators gem
115
+ test_files: []