From 7bb3a6a87411ac99a4231bdd62f735997aaa0e40 Mon Sep 17 00:00:00 2001 From: Ben Brown Date: Tue, 20 Apr 2021 12:32:54 -0500 Subject: [PATCH 1/6] add an adminHandoff folder and new instructions --- adminHandoff/README.md | 149 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 adminHandoff/README.md diff --git a/adminHandoff/README.md b/adminHandoff/README.md new file mode 100644 index 0000000000..ca2e4526a8 --- /dev/null +++ b/adminHandoff/README.md @@ -0,0 +1,149 @@ +# How to manually provision Azure resources for your Composer project + +This article covers script-based instructions to manually provision resources for use with Composer. +This is an alternative to using the in-app provisioning tool. + +## Prerequisites + +- A subscription to [Microsoft Azure](https://azure.microsoft.com/free/). +- [A basic bot built using Composer](https://aka.ms/composer-create-first-bot). +- Latest version of the [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli). +- [Node.js](https://nodejs.org/). Use version 12.13.0 or later. +- PowerShell version 6.0 and later. + +## Provision Azure resources + +Follow these instructions to manually provision Azure resources: + +1. Download and unzip the [provisioning helper scripts.](provisionScripts.zip) +2. Open a new Command Prompt and navigate to the newly created folder. For example: + + ```cmd + cd provisionScripts/ + ``` + +2. Run the following command to install the dependencies: + + ```cmd + npm install + ``` + +3. Run the following command to provision new Azure resources. + + - **_Azure Web App_**: + + ```cmd + node provisionComposer.js --subscriptionId= --name= --appPassword= --environment= + ``` + + - **_Azure Functions_**: + + ```cmd + node provisionComposer.js --subscriptionId= --name= --appPassword= --environment= --customArmTemplate=DeploymentTemplates/function-template-with-preexisting-rg.json + ``` + + | Property | Description | + | --------------------------- | --------------------------------------------------------------------------------------- | + | Your Azure Subscription ID | Find it in your Azure resource in the **Subscription ID** field. | + | Name of your resource group | The name you give to the resource group you are creating. | + | App password | At least 16 characters with at least one number, one letter, and one special character. | + | Name for environment | The name you give to the publish environment. | + + Once completed, the provision scripts will create the following resources in the Azure portal: + + | Resource | Required/Optional | + | --------------------------------------------- | ----------------- | + | App Service plan | Required | + | App Service | Required | + | Application Registration | Required | + | Azure Cosmos DB | Optional | + | Application Insights | Optional | + | Azure Blob Storage | Optional | + | LUIS authoring resource (Cognitive Services) | Optional | + | LUIS prediction resource (Cognitive Services) | Optional | + | QnA Maker resources (Cognitive Services) | Optional | + + > [!TIP] + > Read the [parameters list](#provision-scripts-parameters-list) to customize the provision scripts and create the Azure resources you want. + + 1. You will be asked to login to the Azure portal in your browser. + + 2. If you see the error message "InsufficientQuota", add a param '--createLuisAuthoringResource false' and run the script again. + + - **_Azure Web App_**: + + ```cmd + node provisionComposer.js --subscriptionId= --name=--appPassword= --environment= --createLuisAuthoringResource false + ``` + + - **_Azure Functions_**: + + ```cmd + node provisionComposer.js --subscriptionId= --name= --appPassword= --environment= --createLuisAuthoringResource false --customArmTemplate=DeploymentTemplates/function-template-with-preexisting-rg.json + ``` + + > [!NOTE] + > If you use `--createLuisAuthoringResource false` in this step, you should manually add the LUIS authoring key to the publish configuration. The default region is `westus`. To provision to other regions, you should add `--location region`. + +4. As the Azure resources are being provisioned, you will see a spinning activity indicator for a few minutes. + + Once completed, you will see the generated JSON appears in the command line like the following. The JSON output is the publishing profile, which will be used in step 5. + + ```json + { + "accessToken": "", + "name": "", + "environment": "", + "hostname": "", + "luisResource": "", + "settings": { + "applicationInsights": { + "InstrumentationKey": "" + }, + "cosmosDb": { + "cosmosDBEndpoint": "", + "authKey": "", + "databaseId": "botstate-db", + "collectionId": "botstate-collection", + "containerId": "botstate-container" + }, + "blobStorage": { + "connectionString": "", + "container": "transcripts" + }, + "luis": { + "endpointKey": "", + "authoringKey": "", + "region": "westus" + }, + "qna": { + "endpoint": "", + "subscriptionKey": "" + }, + "MicrosoftAppId": "", + "MicrosoftAppPassword": "" + } + } + ``` + +5. From the "Publish" tab of Composer, choose to import an existing publishing profile. Paste the JSON from step 4 into Composer and save the profile. + +### Provision scripts parameters list + +You don't need to create a complete list of the Azure resources as covered in **step 3** of the [provision Azure resources](#provision-azure-resources) section. The following is a table of the parameters you can use to customize the provision scripts so that you only provision the resources needed. + +| Parameter | Required/Optional | Default value | Description | +| --------------------------- | ----------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| subscriptionId | Required | N/A | Your Azure subscription ID. | +| name | Required | N/A | The name of your resource group | +| appPassword | Required | N/A | The password to create the resource. It must be at least 16 characters long, contain at least 1 upper or lower case alphabetical character, and contain at least 1 special character | +| environment | Optional | dev | N/A | +| location | Optional | `westus` | Your Azure resource group region | +| tenantId | Optional | default tenantId | ID of your tenant if required. | +| customArmTemplate | Optional | `/DeploymentTemplates/template-with-preexisting-rg.json` | For Azure Functions or your own template for a custom deployment. | +| createLuisResource | Optional | `true` | The LUIS prediction resource to create. Region is default to `westus` and cannot be changed. | +| createLuisAuthoringResource | Optional | true | The LUIS authoring resource to create. Region is default to `westus` and cannot be changed. | +| createQnAResource | Optional | `true` | The QnA resource to create. | +| createCosmosDb | Optional | `true` | The CosmosDb resource to create. | +| createStorage | Optional | `true` | The BlobStorage resource to create. | +| createAppInsights | Optional | `true` | The AppInsights resource to create. | From 526788ba93a4e6fa2a479b1f6c196d31a21a6cb0 Mon Sep 17 00:00:00 2001 From: Ben Brown Date: Tue, 20 Apr 2021 12:34:31 -0500 Subject: [PATCH 2/6] rename folder --- {adminHandoff => Provisioning}/README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {adminHandoff => Provisioning}/README.md (100%) diff --git a/adminHandoff/README.md b/Provisioning/README.md similarity index 100% rename from adminHandoff/README.md rename to Provisioning/README.md From 23002d74a1d96aa3a31f733238f0b4be69cc9ff1 Mon Sep 17 00:00:00 2001 From: Ben Brown Date: Tue, 20 Apr 2021 12:35:27 -0500 Subject: [PATCH 3/6] add easily downloadable scripts --- Provisioning/provisionScripts.zip | Bin 0 -> 17489 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Provisioning/provisionScripts.zip diff --git a/Provisioning/provisionScripts.zip b/Provisioning/provisionScripts.zip new file mode 100644 index 0000000000000000000000000000000000000000..52d586a2f55e7d45e12c16726b0b3dd731201dda GIT binary patch literal 17489 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 Date: Tue, 20 Apr 2021 12:37:38 -0500 Subject: [PATCH 4/6] direct download link for scripts --- Provisioning/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Provisioning/README.md b/Provisioning/README.md index ca2e4526a8..2720a85183 100644 --- a/Provisioning/README.md +++ b/Provisioning/README.md @@ -15,7 +15,7 @@ This is an alternative to using the in-app provisioning tool. Follow these instructions to manually provision Azure resources: -1. Download and unzip the [provisioning helper scripts.](provisionScripts.zip) +1. Download and unzip the [provisioning helper scripts.](/raw/main/Provisioning/provisionScripts.zip) 2. Open a new Command Prompt and navigate to the newly created folder. For example: ```cmd From 0c748830073d5d696f33a7f1820075e6f878fff7 Mon Sep 17 00:00:00 2001 From: Ben Brown Date: Tue, 20 Apr 2021 12:38:21 -0500 Subject: [PATCH 5/6] direct download link for scripts --- Provisioning/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Provisioning/README.md b/Provisioning/README.md index 2720a85183..ca2e4526a8 100644 --- a/Provisioning/README.md +++ b/Provisioning/README.md @@ -15,7 +15,7 @@ This is an alternative to using the in-app provisioning tool. Follow these instructions to manually provision Azure resources: -1. Download and unzip the [provisioning helper scripts.](/raw/main/Provisioning/provisionScripts.zip) +1. Download and unzip the [provisioning helper scripts.](provisionScripts.zip) 2. Open a new Command Prompt and navigate to the newly created folder. For example: ```cmd From 6694d1f14db369e3aadc49e79781436f2abde8fc Mon Sep 17 00:00:00 2001 From: Ben Brown Date: Tue, 20 Apr 2021 12:39:43 -0500 Subject: [PATCH 6/6] correct numbers on steps --- Provisioning/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Provisioning/README.md b/Provisioning/README.md index ca2e4526a8..f1d7c5a996 100644 --- a/Provisioning/README.md +++ b/Provisioning/README.md @@ -22,13 +22,13 @@ Follow these instructions to manually provision Azure resources: cd provisionScripts/ ``` -2. Run the following command to install the dependencies: +3. Run the following command to install the dependencies: ```cmd npm install ``` -3. Run the following command to provision new Azure resources. +4. Run the following command to provision new Azure resources. - **_Azure Web App_**: @@ -85,9 +85,9 @@ Follow these instructions to manually provision Azure resources: > [!NOTE] > If you use `--createLuisAuthoringResource false` in this step, you should manually add the LUIS authoring key to the publish configuration. The default region is `westus`. To provision to other regions, you should add `--location region`. -4. As the Azure resources are being provisioned, you will see a spinning activity indicator for a few minutes. +5. As the Azure resources are being provisioned, you will see a spinning activity indicator for a few minutes. - Once completed, you will see the generated JSON appears in the command line like the following. The JSON output is the publishing profile, which will be used in step 5. + Once completed, you will see the generated JSON appears in the command line like the following. The JSON output is the publishing profile, which will be used in step 6. ```json { @@ -126,7 +126,7 @@ Follow these instructions to manually provision Azure resources: } ``` -5. From the "Publish" tab of Composer, choose to import an existing publishing profile. Paste the JSON from step 4 into Composer and save the profile. +6. From the "Publish" tab of Composer, choose to import an existing publishing profile. Paste the JSON from step 5 into Composer and save the profile. ### Provision scripts parameters list