You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/azure-resource-manager/managed-applications/publish-service-catalog-app.md
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -142,7 +142,7 @@ Add the following JSON and save the file. It defines the resources to deploy an
142
142
143
143
## Define your create experience
144
144
145
-
As a publisher, you define the portal experience for creating the managed application. The _createUiDefinition.json_ file generates the portal interface. You define how users provide input for each parameter using [control elements](create-uidefinition-elements.md) like drop-downs and text boxes.
145
+
As a publisher, you define the portal experience to create the managed application. The _createUiDefinition.json_ file generates the portal interface. You define how users provide input for each parameter using [control elements](create-uidefinition-elements.md) like drop-downs and text boxes.
146
146
147
147
Open Visual Studio Code, create a file with the case-sensitive name _createUiDefinition.json_ and save it. The user interface allows the user to input the App Service name, App Service plan's name, storage account prefix, and storage account type. During deployment, the `uniqueString` function appends a 13 character string to the name prefixes so the names are globally unique across Azure.
148
148
@@ -244,9 +244,9 @@ To learn more, see [Get started with CreateUiDefinition](create-uidefinition-ove
244
244
245
245
## Package the files
246
246
247
-
Add the two files to a file named _app.zip_. The two files must be at the root level of the _.zip_ file. If you put the files in a folder, when you create the managed application definition, you'll receive an error that states the required files aren't present.
247
+
Add the two files to a package file named _app.zip_. The two files must be at the root level of the _.zip_ file. If the files are in a folder, when you create the managed application definition, you receive an error that states the required files aren't present.
248
248
249
-
Upload the package to an accessible location from where it can be consumed. The storage account name must be globally unique across Azure and the length must be 3-24 characters with only lowercase letters and numbers. In the `Name` parameter, replace the placeholder `demostorageaccount` with your unique storage account name.
249
+
Upload _app.zip_to an Azure storage account so you can use it when you deploy the managed application's definition. The storage account name must be globally unique across Azure and the length must be 3-24 characters with only lowercase letters and numbers. In the `Name` parameter, replace the placeholder `demostorageaccount` with your unique storage account name.
250
250
251
251
# [PowerShell](#tab/azure-powershell)
252
252
@@ -313,27 +313,27 @@ In this section you'll get identity information from Azure Active Directory, cre
313
313
314
314
### Create an Azure Active Directory user group or application
315
315
316
-
The next step is to select a user group, user, or application for managing the resources for the customer. This identity has permissions on the managed resource group according to the role that's assigned. The role can be any Azure built-in role like Owner or Contributor. To create a new Active Directory user group, see [Create a group and add members in Azure Active Directory](../../active-directory/fundamentals/active-directory-groups-create-azure-portal.md).
316
+
The next step is to select a user, group, or application for managing the resources for the customer. This identity has permissions on the managed resource group according to the assigned role. The role can be any Azure built-in role like Owner or Contributor. To create a new Azure Active Directory user group, go to [Manage Azure Active Directory groups and group membership](../../active-directory/fundamentals/how-to-manage-groups.md).
317
317
318
318
This example uses a user group, so you need the object ID of the user group to use for managing the resources. Replace the placeholder `mygroup` with your group's name.
groupid=$(az ad group show --group mygroup --query id --output tsv)
329
+
principalid=$(az ad group show --group mygroup --query id --output tsv)
330
330
```
331
331
332
332
---
333
333
334
334
### Get the role definition ID
335
335
336
-
Next, you need the role definition ID of the Azure built-in role you want to grant access to the user, user group, or application. Typically, you use the Owner, Contributor, or Reader role. The following command shows how to get the role definition ID for the Owner role:
336
+
Next, you need the role definition ID of the Azure built-in role you want to grant access to the user, group, or application. Typically, you use the Owner, Contributor, or Reader role. The following command shows how to get the role definition ID for the Owner role:
@@ -405,7 +405,7 @@ az managedapp definition create \
405
405
--lock-level ReadOnly \
406
406
--display-name "Managed Storage Account" \
407
407
--description "Managed Azure Storage Account" \
408
-
--authorizations "$groupid:$roleid" \
408
+
--authorizations "$principalid:$roleid" \
409
409
--package-file-uri "$blob"
410
410
```
411
411
@@ -419,8 +419,8 @@ Some of the parameters used in the preceding example are:
419
419
-**lock level**: The type of lock placed on the managed resource group. It prevents the customer from performing undesirable operations on this resource group. Currently, `ReadOnly` is the only supported lock level. When `ReadOnly` is specified, the customer can only read the resources present in the managed resource group. The publisher identities that are granted access to the managed resource group are exempt from the lock.
420
420
-**authorizations**: Describes the principal ID and the role definition ID that are used to grant permission to the managed resource group.
421
421
422
-
-**Azure PowerShell**: `"${groupid}:$roleid"` or you can use curly braces for each variable `"${groupid}:${roleid}"`. Use a comma to separate multiple values: `"${groupid1}:$roleid1", "${groupid2}:$roleid2"`.
423
-
-**Azure CLI**: `"$groupid:$roleid"` or you can use curly braces as shown in PowerShell. Use a space to separate multiple values: `"$groupid1:$roleid1" "$groupid2:$roleid2"`.
422
+
-**Azure PowerShell**: `"${principalid}:$roleid"` or you can use curly braces for each variable `"${principalid}:${roleid}"`. Use a comma to separate multiple values: `"${principalid1}:$roleid1", "${principalid2}:$roleid2"`.
423
+
-**Azure CLI**: `"$principalid:$roleid"` or you can use curly braces as shown in PowerShell. Use a space to separate multiple values: `"$principalid1:$roleid1" "$principalid2:$roleid2"`.
424
424
425
425
-**package file URI**: The location of a _.zip_ package file that contains the required files.
Copy file name to clipboardExpand all lines: articles/azure-resource-manager/managed-applications/publish-service-catalog-bring-your-own-storage.md
+62-32Lines changed: 62 additions & 32 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,7 +41,7 @@ Every managed application definition includes a file named _mainTemplate.json_.
41
41
42
42
Open Visual Studio Code, create a file with the case-sensitive name _mainTemplate.json_ and save it.
43
43
44
-
Add the following JSON and save the file. It defines the resources to deploy an App Service, App Service plan, and storage account for the application. This storage account isn't for the managed application definition.
44
+
Add the following JSON and save the file. It defines the resources to deploy an App Service, App Service plan, and a storage account for the managed application. This storage account isn't for the managed application definition.
45
45
46
46
```json
47
47
{
@@ -142,7 +142,7 @@ Add the following JSON and save the file. It defines the resources to deploy an
142
142
143
143
## Define your create experience
144
144
145
-
As a publisher, you define the portal experience for creating the managed application. The _createUiDefinition.json_ file generates the portal interface. You define how users provide input for each parameter using [control elements](create-uidefinition-elements.md) like drop-downs and text boxes.
145
+
As a publisher, you define the portal experience to create the managed application. The _createUiDefinition.json_ file generates the portal interface. You define how users provide input for each parameter using [control elements](create-uidefinition-elements.md) like drop-downs and text boxes.
146
146
147
147
Open Visual Studio Code, create a file with the case-sensitive name _createUiDefinition.json_ and save it. The user interface allows the user to input the App Service name, App Service plan's name, storage account prefix, and storage account type. During deployment, the `uniqueString` function appends a 13 character string to the name prefixes so the names are globally unique across Azure.
148
148
@@ -244,9 +244,9 @@ To learn more, see [Get started with CreateUiDefinition](create-uidefinition-ove
244
244
245
245
## Package the files
246
246
247
-
Add the two files to a file named _app.zip_. The two files must be at the root level of the _.zip_ file. If the files are in a folder, when you create the managed application definition, you receive an error that states the required files aren't present.
247
+
Add the two files to a package file named _app.zip_. The two files must be at the root level of the _.zip_ file. If the files are in a folder, when you create the managed application definition, you receive an error that states the required files aren't present.
248
248
249
-
Upload the package to an accessible location from where it can be consumed. The storage account name must be globally unique across Azure and the length must be 3-24 characters with only lowercase letters and numbers. In the `Name` parameter, replace the placeholder `demostorageaccount` with your unique storage account name.
249
+
Upload _app.zip_to an Azure storage account so you can use it when you deploy the managed application's definition. The storage account name must be globally unique across Azure and the length must be 3-24 characters with only lowercase letters and numbers. In the `Name` parameter, replace the placeholder `demostorageaccount` with your unique storage account name.
250
250
251
251
# [PowerShell](#tab/azure-powershell)
252
252
@@ -393,31 +393,31 @@ If you're running CLI commands with Git Bash for Windows, you might get an `Inva
393
393
394
394
---
395
395
396
-
The _Appliance Resource Provider_ is a service principal in your Azure Active Directory's tenant. From the Azure portal, you can see if it's registered by going to **Azure Active Directory** > **Enterprise applications** and change the search filter to **Microsoft Applications**. Search for _Appliance Resource Provider_. If it's not found, [register](../troubleshooting/error-register-resource-provider.md) the `Microsoft.Solutions` resource provider.
396
+
The _Appliance Resource Provider_ is a service principal in your Azure Active Directory's tenant. From the Azure portal, you can see if it's registered by going to **Azure Active Directory** > **Enterprise applications** and change the search filter to **Microsoft Applications**. Search for _Appliance Resource Provider_. If it isn't found, [register](../troubleshooting/error-register-resource-provider.md) the `Microsoft.Solutions` resource provider.
397
397
398
398
## Create an Azure Active Directory user group or application
399
399
400
-
The next step is to select a user group, user, or application for managing the resources for the customer. This identity has permissions on the managed resource group according to the assigned role. The role can be any Azure built-in role like Owner or Contributor. To create a new Active Directory user group, see [Create a group and add members in Azure Active Directory](../../active-directory/fundamentals/active-directory-groups-create-azure-portal.md).
400
+
The next step is to select a user, group, or application for managing the resources for the customer. This identity has permissions on the managed resource group according to the assigned role. The role can be any Azure built-in role like Owner or Contributor. To create a new Azure Active Directory user group, go to [Manage Azure Active Directory groups and group membership](../../active-directory/fundamentals/how-to-manage-groups.md).
401
401
402
402
This example uses a user group, so you need the object ID of the user group to use for managing the resources. Replace the placeholder `mygroup` with your group's name.
groupid=$(az ad group show --group mygroup --query id --output tsv)
413
+
principalid=$(az ad group show --group mygroup --query id --output tsv)
414
414
```
415
415
416
416
---
417
417
418
418
## Get the role definition ID
419
419
420
-
Next, you need the role definition ID of the Azure built-in role you want to grant access to the user, user group, or application. Typically, you use the Owner, Contributor, or Reader role. The following command shows how to get the role definition ID for the Owner role:
420
+
Next, you need the role definition ID of the Azure built-in role you want to grant access to the user, group, or application. Typically, you use the Owner, Contributor, or Reader role. The following command shows how to get the role definition ID for the Owner role:
421
421
422
422
# [PowerShell](#tab/azure-powershell)
423
423
@@ -433,7 +433,7 @@ roleid=$(az role definition list --name Owner --query [].name --output tsv)
433
433
434
434
---
435
435
436
-
### Deploy the managed application definition with an ARM template
436
+
##Create the managed application definition ARM template
437
437
438
438
Use the following ARM template to deploy the managed application definition in your service catalog. The definition files are stored and maintained in your storage account.
439
439
@@ -453,7 +453,7 @@ Add the following JSON and save the file.
453
453
"applicationName": {
454
454
"type": "string",
455
455
"metadata": {
456
-
"description": "Managed Application name."
456
+
"description": "Name of the managed application definition."
457
457
}
458
458
},
459
459
"definitionStorageResourceID": {
@@ -465,13 +465,13 @@ Add the following JSON and save the file.
465
465
"packageFileUri": {
466
466
"type": "string",
467
467
"metadata": {
468
-
"description": "The URI where the .zip package file is located."
468
+
"description": "The URI of the .zip package file."
469
469
}
470
470
},
471
471
"principalId": {
472
472
"type": "string",
473
473
"metadata": {
474
-
"description": "Principal ID to access the managed resource group."
474
+
"description": "Principal ID with access the managed resource group."
475
475
}
476
476
},
477
477
"roleId": {
@@ -518,19 +518,59 @@ For more information about the template's properties, see [Microsoft.Solutions/a
518
518
519
519
Parameters used in the template:
520
520
521
-
-**applicationName**: The name of the the managed application definition.
521
+
-**applicationName**: The name of the managed application definition.
522
522
-**definitionStorageResourceID**: The resource ID of the managed application definition.
523
523
-**lock level**: The type of lock placed on the managed resource group. It prevents the customer from performing undesirable operations on this resource group. Currently, `ReadOnly` is the only supported lock level. `ReadOnly` specifies that the customer can only read the resources present in the managed resource group. The publisher identities that are granted access to the managed resource group are exempt from the lock level.
524
524
-**authorizations**: Describes the principal ID and the role definition ID that grant permission to the managed resource group.
525
525
526
-
-`principalId` is the object ID of the user, group, or service principal.
527
-
-`roleDefinitionId`: The role ID for the Owner or Contributor role.
526
+
-`principalId`: The object ID of the user, group, or service principal. The `principalid` variable's value.
527
+
-`roleDefinitionId`: The role ID for the Owner or Contributor role. The `roleid` variable's value.
528
528
529
-
-**package file URI**: The location of a _.zip_ package file that contains the required files.
529
+
-**package file URI**: The location of the _.zip_ package file that contains the managed application definition's files.
530
+
531
+
## Create a parameter file
532
+
533
+
The managed application defintion's template needs input for several parameters. The deployment command will prompt for the values or you can create a parameter file for the values. In this example, we use a parameter file to pass the parameter values to the deployment command.
534
+
535
+
In Visual Studio Code, create a new file named _azuredeploy-parameters.json_ and save it.
536
+
537
+
Add the following to your parameter file and save it. Then, replace the `{placeholder values}` including the curly braces, with your values.
"value": "{placeholder for managed application name}"
546
+
},
547
+
"definitionStorageResourceID": {
548
+
"value": "{placeholder for you storage account ID}"
549
+
},
550
+
"packageFileUri": {
551
+
"value": "{placeholder for the packageFileUri}"
552
+
},
553
+
"principalId": {
554
+
"value": "{placeholder for principalid value}"
555
+
},
556
+
"roleId": {
557
+
"value": "{placeholder for roleid value}"
558
+
}
559
+
}
560
+
}
561
+
```
562
+
563
+
| Parameter | Value |
564
+
| ---- | ---- |
565
+
|`applicationName`| Choose a name for your managed application definition. For this example, use _sampleManagedAppDefintion_.|
566
+
|`definitionStorageResourceID`| Enter your storage account's resource ID. You created the `storageId` variable with this value in an earlier step. |
567
+
|`packageFileUri`| Enter the URI to your _.zip_ package file. Use the URI for the _.zip_[package file](#package-the-files) you created in an earlier step. The format is `https://yourStorageAccountName.blob.core.windows.net/appcontainer/app.zip`. |
568
+
|`principalId`| The publishers Principal ID that needs access to manage resources in the managed resource group. Your `principalid` variable's value. |
569
+
|`roleId`| Role ID for permissions to the managed resource group. For example Read, Contributor, Owner. Your `roleid` variable's value. |
530
570
531
571
### Deploy the definition
532
572
533
-
When you deploy the definition, you're deploying only the managed application's definition so that it's available in your service catalog. This process doesn't deploy the managed application's resources.
573
+
When you deploy the managed application's definition it becomes available in your service catalog. This process doesn't deploy the managed application's resources.
534
574
535
575
Create a resource group named _byosDefinitionRG_ and deploy the managed application definition to your storage account.
536
576
@@ -539,36 +579,26 @@ Create a resource group named _byosDefinitionRG_ and deploy the managed applicat
az group create --name byosDefinitionRG --location eastus
553
592
554
-
echo $storageId
555
-
556
593
az deployment group create \
557
594
--resource-group byosDefinitionRG \
558
-
--template-file ./azuredeploy.json
595
+
--template-file ./azuredeploy.json \
596
+
--parameters ./azuredeploy-parameters.json
559
597
```
560
598
561
599
---
562
600
563
-
The deployment prompts you to enter parameter values or you can use a parameter file.
564
601
565
-
| Parameter | Value |
566
-
| ---- | ---- |
567
-
|`applicationName`| Choose a name for your managed application definition. For this example, use _sampleManagedAppDefintion_.|
568
-
|`definitionStorageResourceID`| Enter your storage account's resource ID. You created the `storageId` variable with this value in an earlier step. Don't wrap the resource ID with quotes. |
569
-
|`packageFileUri`| Enter the URI to your _.zip_ package file. Use the URI for the _.zip_[package file](#package-the-files) you created in an earlier step. The format is `https://yourStorageAccountName.blob.core.windows.net/appcontainer/app.zip`. |
570
-
|`principalId`| The publishers Principal ID that needs access to manage resources in the managed resource group. |
571
-
|`roleId`| Role ID for permissions to the managed resource group. For example Read, Contributor, Owner. |
0 commit comments