diff --git a/articles/active-directory/active-directory-saas-absorblms-tutorial.md b/articles/active-directory/active-directory-saas-absorblms-tutorial.md index 993a6a4d2c5c8..3193ac9dfb47d 100644 --- a/articles/active-directory/active-directory-saas-absorblms-tutorial.md +++ b/articles/active-directory/active-directory-saas-absorblms-tutorial.md @@ -237,7 +237,7 @@ For Absorb LMS, provisioning is a manual task. d. In the **Password** textbox, type the password of Britta Simon. - e. In the **Confirm Password** dropdown, select the confirm password of Britta Simon. + e. In the **Confirm Password** textbox, type the same password. f. Make it as **ACTIVE**. diff --git a/articles/analysis-services/analysis-services-gateway.md b/articles/analysis-services/analysis-services-gateway.md index 815c8498a2b2a..58f2d6506f44f 100644 --- a/articles/analysis-services/analysis-services-gateway.md +++ b/articles/analysis-services/analysis-services-gateway.md @@ -120,7 +120,7 @@ Under the hood, the on-premises data gateway used for connecting Azure Analysis If you’re having trouble when installing and configuring a gateway, be sure to see [Troubleshooting the Power BI Gateway](https://powerbi.microsoft.com/documentation/powerbi-gateway-onprem-tshoot/). If you think you are having an issue with your firewall, see the firewall or proxy sections. -If you think you're encountering proxy issues, with the gateway, see [Configuring proxy settings for the Power BI Gateways](https://powerbi.microsoft.com/documentation/powerbi-gateway-proxy.md). +If you think you're encountering proxy issues, with the gateway, see [Configuring proxy settings for the Power BI Gateways](https://powerbi.microsoft.com/documentation/powerbi-gateway-proxy). ### Telemetry Telemetry can be used for monitoring and troubleshooting. diff --git a/articles/analysis-services/analysis-services-overview.md b/articles/analysis-services/analysis-services-overview.md index 69c6e1595c720..9364fd95ad845 100644 --- a/articles/analysis-services/analysis-services-overview.md +++ b/articles/analysis-services/analysis-services-overview.md @@ -38,7 +38,7 @@ Azure Analysis Services is compatible with the same SQL Server Analysis Services ## Use the tools you already know ![BI developer tools](./media/analysis-services-overview/aas-overview-dev-tools.png) -When creating data models for Azure Analysis Services, you use the same tools as for SQL Server Analysis Services. Author and deploy models by using [SQL Server Data Tools (SSDT)](https://msdn.microsoft.com/library/mt204009.aspx) or by using [Azure Powershell](/powershell/azureps-cmdlets-docs) and [Azure Resource Manager](../azure-resource-manager/resource-group-overview.md) templates in [SQL Server Management Studio (SSMS)](https://msdn.microsoft.com/library/mt238290.aspx). +When creating data models for Azure Analysis Services, you use the same tools as for SQL Server Analysis Services. Author and deploy models by using [SQL Server Data Tools (SSDT)](https://msdn.microsoft.com/library/mt204009.aspx). Manage your servers and model databases by using [SQL Server Management Studio (SSMS)](https://msdn.microsoft.com/library/mt238290.aspx). And, automate tasks with [Powershell](analysis-services-powershell.md) and [Azure Resource Manager](../azure-resource-manager/resource-group-overview.md) templates ## Supports the latest features Azure Analysis Services supports tabular models at the 1200 and 1400 Preview compatibility levels. @@ -50,9 +50,7 @@ Azure Analysis Services supports tabular models at the 1200 and 1400 Preview com ## Data sources Data models deployed to servers in Azure support connecting to data sources on-premises in your organization or in the cloud. Combine data from both on-premises and cloud data sources for a hybrid BI solution. -Because your server is in the cloud, connecting to cloud data sources is seamless. When connecting to on-premises data sources, the [On-premises data gateway](analysis-services-gateway.md) ensures fast, secure connections with your server in the cloud. - -To learn more about which on-premises data sources are supported, see [Data sources supported in Azure Analysis Services](analysis-services-datasource.md). +Because your server is in the cloud, connecting to cloud data sources is seamless. When connecting to on-premises data sources, the [On-premises data gateway](analysis-services-gateway.md) ensures fast, secure connections with your server in the cloud. To learn more about which on-premises data sources are supported, see [Data sources supported in Azure Analysis Services](analysis-services-datasource.md). ## Explore your data from anywhere @@ -79,13 +77,17 @@ Azure Analysis Services is governed by the [Microsoft Online Services Terms](htt To learn more about Azure Security, see the [Microsoft Trust Center](https://www.microsoft.com/trustcenter/Security/AzureSecurity). ## Get help + +### Documentation Azure Analysis Services is simple to set up and to manage. You can find all the info you need to create and manage a server here. When creating a data model to deploy to your server, it's much the same as it is for creating a data model you deploy to an on-premises server. There's an extensive library of conceptual, procedural, tutorials, and reference articles at [Analysis Services](https://docs.microsoft.com/sql/analysis-services/analysis-services). -We also have a number of helpful videos at [Azure Analysis Services on Channel 9](https://channel9.msdn.com/series/Azure-Analysis-Services). +### Videos +Checkout helpful videos at [Azure Analysis Services on Channel 9](https://channel9.msdn.com/series/Azure-Analysis-Services). -Things are changing rapidly. You can always get the latest information on the [Azure Analysis Services blog](https://go.microsoft.com/fwlink/?linkid=830920). +### Blogs +Things are changing rapidly. You can always get the latest information on the [Analysis Services team blog](https://blogs.msdn.microsoft.com/analysisservices/) and [Azure blog](https://azure.microsoft.com/blog/). -## Community +### Community Analysis Services has a vibrant community of users. Join the conversation on [Azure Analysis Services forum](https://aka.ms/azureanalysisservicesforum). ## Feedback @@ -95,4 +97,3 @@ Have suggestions about the documentation? You can add comments using Livefyre at ## Next steps Now that you know more about Azure Analysis Services, it's time to get started. Learn how to [create a server](analysis-services-create-server.md) in Azure and [deploy a tabular model](analysis-services-deploy.md) to it. - diff --git a/articles/analysis-services/analysis-services-powershell.md b/articles/analysis-services/analysis-services-powershell.md index 2317446216d47..25232e48e7584 100644 --- a/articles/analysis-services/analysis-services-powershell.md +++ b/articles/analysis-services/analysis-services-powershell.md @@ -62,4 +62,4 @@ The SQLASCMDLETS module provides task-specific database management cmdlets as we ## Related information * [PowerShell scripting in Analysis Services](https://msdn.microsoft.com/library/hh213141.aspx). -* [Tabular Model Programming for Compatibility Level 1200](https://msdn.microsoft.com/library/mt712541.aspx) +* [Tabular Model Programming for Compatibility Level 1200 and higher](https://msdn.microsoft.com/library/mt712541.aspx) diff --git a/articles/app-service-web/app-service-web-get-started-html.md b/articles/app-service-web/app-service-web-get-started-html.md index d0e2551fc5b31..38182f66ee0dd 100644 --- a/articles/app-service-web/app-service-web-get-started-html.md +++ b/articles/app-service-web/app-service-web-get-started-html.md @@ -1,6 +1,6 @@ --- -title: Create a static HTML web app in Azure in five minutes | Microsoft Docs -description: Learn how easy it is to run web apps in App Service by deploying a sample app. +title: Create a static HTML web app in Azure | Microsoft Docs +description: Learn how to run web apps in Azure App Service by deploying a static HTML sample app. services: app-service\web documentationcenter: '' author: rick-anderson @@ -13,28 +13,30 @@ ms.workload: web ms.tgt_pltfrm: na ms.devlang: na ms.topic: hero-article -ms.date: 05/08/2017 +ms.date: 05/26/2017 ms.author: riande ms.custom: mvc --- -# Create a static HTML web app in Azure in five minutes +# Create a static HTML web app in Azure -This quickstart walks through how to and deploy a basic HTML+CSS site to Azure. You’ll run the app using an [Azure App Service plan](https://docs.microsoft.com/azure/app-service/azure-web-sites-web-hosting-plans-in-depth-overview), and create a web app in it using the [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/get-started-with-azure-cli). You use Git to deploy the app to Azure. It takes about five minutes to complete the tutorial once the prerequisites are installed. +[Azure Web Apps](https://docs.microsoft.com/azure/app-service-web/app-service-web-overview) provides a highly scalable, self-patching web hosting service. This quickstart shows how to deploy a basic HTML+CSS site to Azure Web Apps. You create the web app using the [Azure CLI](https://docs.microsoft.com/cli/azure/get-started-with-azure-cli), and you use Git to deploy sample HTML content to the web app. -![hello-world-in-browser](media/app-service-web-get-started-html/hello-world-in-browser-az.png) +![Home page of sample app](media/app-service-web-get-started-html/hello-world-in-browser-az.png) + +You can follow the steps below using a Mac, Windows, or Linux machine. Once the prerequisites are installed, it takes about five minutes to complete the steps. ## Prerequisites -Before creating this sample, download and install the following components: +To complete this quickstart: -- [Git](https://git-scm.com/) -- [Azure CLI 2.0](https://docs.microsoft.com/cli/azure/install-azure-cli) +- [Install Git](https://git-scm.com/) +- [Install Azure CLI 2.0](https://docs.microsoft.com/cli/azure/install-azure-cli) -[!INCLUDE [quickstarts-free-trial-note](../../includes/quickstarts-free-trial-note.md)] +[!INCLUDE [Free trial note](../../includes/quickstarts-free-trial-note.md)] ## Download the sample -In a terminal window, clone the sample app repository to your local machine: +In a terminal window, run the following command to clone the sample app repository to your local machine. ```bash git clone https://github.com/Azure-Samples/html-docs-hello-world.git @@ -44,25 +46,69 @@ git clone https://github.com/Azure-Samples/html-docs-hello-world.git Navigate to the directory that contains the sample HTML. Open the *index.html* file in your browser. -![hello-world-in-browser](media/app-service-web-get-started-html/hello-world-in-browser.png) +![Sample app home page](media/app-service-web-get-started-html/hello-world-in-browser.png) + +[!INCLUDE [Log in to Azure](../../includes/login-to-azure.md)] + +[!INCLUDE [Configure deployment user](../../includes/configure-deployment-user.md)] -[!INCLUDE [login-to-azure](../../includes/login-to-azure.md)] -[!INCLUDE [configure-deployment-user](../../includes/configure-deployment-user.md)] +[!INCLUDE [Create resource group](../../includes/app-service-web-create-resource-group.md)] -[!INCLUDE [app-service-web-quickstart1](../../includes/app-service-web-quickstart1.md)] +[!INCLUDE [Create app service plan](../../includes/app-service-web-create-app-service-plan.md)] -Create a [Web App](app-service-web-overview.md) in the `quickStartPlan` App Service plan. -The web app provides a hosting space for your code and provides a URL for to view the deployed app. +[!INCLUDE [Create web app](../../includes/app-service-web-create-web-app.md)] -[!INCLUDE [app-service-web-quickstart2](../../includes/app-service-web-quickstart2.md)] +![Empty web app page](media/app-service-web-get-started-html/app-service-web-service-created.png) -The page is running as an Azure App Service web app: +You’ve created an empty new web app in Azure. -![hello-world-in-browser](media/app-service-web-get-started-html/hello-world-in-browser-az.png) +[!INCLUDE [Configure local git](../../includes/app-service-web-configure-local-git.md)] + +[!INCLUDE [Push to Azure](../../includes/app-service-web-git-push-to-azure.md)] + +```bash +Counting objects: 13, done. +Delta compression using up to 4 threads. +Compressing objects: 100% (11/11), done. +Writing objects: 100% (13/13), 2.07 KiB | 0 bytes/s, done. +Total 13 (delta 2), reused 0 (delta 0) +remote: Updating branch 'master'. +remote: Updating submodules. +remote: Preparing deployment for commit id 'cc39b1e4cb'. +remote: Generating deployment script. +remote: Generating deployment script for Web Site +remote: Generated deployment script files +remote: Running deployment command... +remote: Handling Basic Web Site deployment. +remote: KuduSync.NET from: 'D:\home\site\repository' to: 'D:\home\site\wwwroot' +remote: Deleting file: 'hostingstart.html' +remote: Copying file: '.gitignore' +remote: Copying file: 'LICENSE' +remote: Copying file: 'README.md' +remote: Finished successfully. +remote: Running post deployment command(s)... +remote: Deployment successful. +To https://.scm.azurewebsites.net/.git + * [new branch] master -> master +``` + +## Browse to the app + +In a browser, go to the Azure web app URL: + +``` +http://.azurewebsites.net +``` + +The page is running as an Azure App Service web app. + +![Sample app home page](media/app-service-web-get-started-html/hello-world-in-browser-az.png) + +**Congratulations!** You've deployed your first HTML app to App Service. ## Update and redeploy the app -Open the *index.html* file. Make a change to the markup. For example, change `Hello world!` to `Hello Azure!` +Open the *index.html* file in a text editor, and make a change to the markup. For example, change the H1 heading from "Azure App Service - Sample Static HTML Site" to just "Azure App Service`. Commit your changes in Git, and then push the code changes to Azure. @@ -73,12 +119,25 @@ git push azure master Once deployment has completed, refresh your browser to see the changes. -[!INCLUDE [manage-azure-web-app](../../includes/manage-azure-web-app.md)] +![Updated sample app home page](media/app-service-web-get-started-html/hello-azure-in-browser-az.png) + +## Manage your new Azure web app + +Go to the [Azure portal](https://portal.azure.com) to manage the web app you created. + +From the left menu, click **App Services**, and then click the name of your Azure web app. + +![Portal navigation to Azure web app](./media/app-service-web-get-started-html/portal1.png) + +You see your web app's Overview page. Here, you can perform basic management tasks like browse, stop, start, restart, and delete. + +![App Service blade in Azure portal](./media/app-service-web-get-started-html/portal2.png) +The left menu provides different pages for configuring your app. [!INCLUDE [cli-samples-clean-up](../../includes/cli-samples-clean-up.md)] ## Next steps -- Explore sample [Web Apps CLI scripts](app-service-cli-samples.md). -- Learn how to [Map a custom domain name](app-service-web-tutorial-custom-domain.md), such as contoso.com, to an [App Service app](app-service-web-tutorial-custom-domain.md). \ No newline at end of file +> [!div class="nextstepaction"] +> [Map custom domain](app-service-web-tutorial-custom-domain.md) diff --git a/articles/app-service-web/app-service-web-get-started-nodejs.md b/articles/app-service-web/app-service-web-get-started-nodejs.md index a00f6dbf7d71b..a4b082629366a 100644 --- a/articles/app-service-web/app-service-web-get-started-nodejs.md +++ b/articles/app-service-web/app-service-web-get-started-nodejs.md @@ -1,6 +1,6 @@ --- -title: Create a Node.js Application on Azure Web App | Microsoft Docs -description: Deploy your first Node.js Hello World in App Service Web App in minutes. +title: Create a Node.js web app in Azure | Microsoft Docs +description: Deploy your first Node.js Hello World in Azure App Service Web Apps in minutes. services: app-service\web documentationcenter: '' author: syntaxc4 @@ -17,27 +17,27 @@ ms.date: 05/05/2017 ms.author: cfowler ms.custom: mvc --- -# Create a Node.js Application on Web App +# Create a Node.js web app in Azure -This quickstart tutorial walks through how to develop and deploy a Node.js app to Azure. We’ll run the app using an [Azure App Service plan](https://docs.microsoft.com/azure/app-service/azure-web-sites-web-hosting-plans-in-depth-overview), and create and configure a new Web App within it using the Azure CLI. We’ll then use git to deploy our Node.js app to Azure. +[Azure Web Apps](https://docs.microsoft.com/azure/app-service-web/app-service-web-overview) provides a highly scalable, self-patching web hosting service. This quickstart shows how to deploy a Node.js app to Azure Web Apps. You create the web app using the [Azure CLI](https://docs.microsoft.com/cli/azure/get-started-with-azure-cli), and you use Git to deploy sample Node.js code to the web app. -![hello-world-in-browser](media/app-service-web-get-started-nodejs-poc/hello-world-in-browser.png) +![Sample app running in Azure](media/app-service-web-get-started-nodejs-poc/hello-world-in-browser.png) -You can follow the steps below using a Mac, Windows, or Linux machine. It should take you only about 5 minutes to complete all of the steps below. +You can follow the steps below using a Mac, Windows, or Linux machine. Once the prerequisites are installed, it takes about five minutes to complete the steps. ## Prerequisites -Before creating this sample, download and install the following: +To complete this quickstart: -* [Git](https://git-scm.com/) -* [ Node.js and NPM](https://nodejs.org/) -* [Azure CLI 2.0](https://docs.microsoft.com/cli/azure/install-azure-cli) +* [Install Git](https://git-scm.com/) +* [Install Node.js and NPM](https://nodejs.org/) +* [Install Azure CLI 2.0](https://docs.microsoft.com/cli/azure/install-azure-cli) [!INCLUDE [quickstarts-free-trial-note](../../includes/quickstarts-free-trial-note.md)] ## Download the sample -Clone the Hello World sample app repository to your local machine. +In a terminal window, run the following command to clone the sample app repository to your local machine. ```bash git clone https://github.com/Azure-Samples/nodejs-docs-hello-world @@ -51,150 +51,37 @@ cd nodejs-docs-hello-world ## Run the app locally -Run the application locally by opening a terminal window and using the `npm start` script for the sample to launch the built in Node.js http server. +Run the application locally by opening a terminal window and using the `npm start` script to launch the built in Node.js HTTP server. ```bash npm start ``` -Open a web browser, and navigate to the sample. +Open a web browser, and navigate to the sample app at http://localhost:1337. -```bash -http://localhost:1337 -``` +You see the **Hello World** message from the sample app displayed in the page. -You can see the **Hello World** message from the sample app displayed in the page. - -![localhost-hello-world-in-browser](media/app-service-web-get-started-nodejs-poc/localhost-hello-world-in-browser.png) +![Sample app running locally](media/app-service-web-get-started-nodejs-poc/localhost-hello-world-in-browser.png) In your terminal window, press **Ctrl+C** to exit the web server. -## Log in to Azure - -We are now going to use the Azure CLI 2.0 in a terminal window to create the resources needed to host our Node.js app in Azure. Log in to your Azure subscription with the [az login](/cli/azure/#login) command and follow the on-screen directions. - -```azurecli -az login -``` - - -[!INCLUDE [login-to-azure](../../includes/configure-deployment-user.md)] +[!INCLUDE [Log in to Azure](../../includes/login-to-azure.md)] -## Create a resource group +[!INCLUDE [Configure deployment user](../../includes/configure-deployment-user.md)] -Create a resource group with the [az group create](/cli/azure/group#create). An Azure resource group is a logical container into which Azure resources like web apps, databases and storage accounts are deployed and managed. +[!INCLUDE [Create resource group](../../includes/app-service-web-create-resource-group.md)] -```azurecli -az group create --name myResourceGroup --location westeurope -``` - -## Create an Azure App Service plan - -Create a "FREE" [App Service plan](../app-service/azure-web-sites-web-hosting-plans-in-depth-overview.md) with the [az appservice plan create](/cli/azure/appservice/plan#create) command. - - -[!INCLUDE [app-service-plan](../../includes/app-service-plan.md)] +[!INCLUDE [Create app service plan](../../includes/app-service-web-create-app-service-plan.md)] -The following example creates an App Service plan named `quickStartPlan` using the **Free** pricing tier. +[!INCLUDE [Create web app](../../includes/app-service-web-create-web-app.md)] -```azurecli -az appservice plan create --name quickStartPlan --resource-group myResourceGroup --sku FREE -``` - -When the App Service Plan has been created, the Azure CLI shows information similar to the following example: - -```json -{ - "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/quickStartPlan", - "location": "West Europe", - "sku": { - "capacity": 1, - "family": "S", - "name": "S1", - "tier": "Standard" - }, - "status": "Ready", - "type": "Microsoft.Web/serverfarms" -} -``` +![Empty web app page](media/app-service-web-get-started-php/app-service-web-service-created.png) -## Create a web app +You’ve created an empty new web app in Azure. -Now that an App Service plan has been created, create a [Web App](https://docs.microsoft.com/azure/app-service-web/app-service-web-overview) within the `quickStartPlan` App Service plan. The web app gives us a hosting space to deploy our code as well as provides a URL for us to view the deployed application. Use the [az appservice web create](/cli/azure/appservice/web#create) command to create the Web App. +[!INCLUDE [Configure local git](../../includes/app-service-web-configure-local-git.md)] -In the command below substitute your own unique app name where you see the `` placeholder. The `` is used in the default DNS site for the web app. If `` is not unique, you get the friendly error message "Website with given name already exists." - - - -```azurecli -az appservice web create --name --resource-group myResourceGroup --plan quickStartPlan -``` - -When the Web App has been created, the Azure CLI shows information similar to the following example. - -```json -{ - "clientAffinityEnabled": true, - "defaultHostName": ".azurewebsites.net", - "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Web/sites/", - "isDefaultContainer": null, - "kind": "app", - "location": "West Europe", - "name": "", - "repositorySiteName": "", - "reserved": true, - "resourceGroup": "myResourceGroup", - "serverFarmId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/quickStartPlan", - "state": "Running", - "type": "Microsoft.Web/sites", -} -``` - -Browse to the site to see your newly created Web App. - -```bash -http://.azurewebsites.net -``` - -![app-service-web-service-created](media/app-service-web-get-started-nodejs-poc/app-service-web-service-created.png) - -We’ve now created an empty new Web App in Azure. - -## Configure local Git deployment - -You can deploy to your Web App in a variety of ways including FTP, local Git as well as GitHub, Visual Studio Team Services, and Bitbucket. - -Use the [az appservice web source-control config-local-git](/cli/azure/appservice/web/source-control#config-local-git) command to configure local git access to the Web App. - -```azurecli -az appservice web source-control config-local-git --name --resource-group myResourceGroup --query url --output tsv -``` - -Copy the output from the terminal as it will be used in the next step. - -```bash -https://@.scm.azurewebsites.net:443/.git -``` - -## Push to Azure from Git - -Add an Azure remote to your local Git repository. - -```bash -git remote add azure -``` - -Push to the Azure remote to deploy your app. You are prompted for the password you supplied earlier when you created the deployment user. Make sure that you enter the password you created in [Configure a deployment user](#configure-a-deployment-user), not the password you use to log in to the Azure portal. - -```bash -git push azure master -``` - -During deployment, Azure App Service will communicate its progress with Git. +[!INCLUDE [Push to Azure](../../includes/app-service-web-git-push-to-azure.md)] ```bash Counting objects: 23, done. @@ -238,17 +125,21 @@ Browse to the deployed application using your web browser. http://.azurewebsites.net ``` -This time, the page that displays the Hello World message is running using our Node.js code running as an Azure App Service web app. +The Node.js sample code is running in an Azure App Service web app. + +![Sample app running in Azure](media/app-service-web-get-started-nodejs-poc/hello-world-in-browser.png) -## Updating and Deploying the Code +**Congratulations!** You've deployed your first PHP app to App Service. -Using a local text editor, open the `index.js` file within the Node.js app, and make a small change to the text within the call to `response.end`: +## Update and redeploy the code + +Using a text editor, open the `index.js` file in the Node.js app, and make a small change to the text in the call to `response.end`: ```nodejs response.end("Hello Azure!"); ``` -Commit your changes in git, then push the code changes to Azure. +Commit your changes in Git, and then push the code changes to Azure. ```bash git commit -am "updated output" @@ -257,35 +148,25 @@ git push azure master Once deployment has completed, switch back to the browser window that opened in the **Browse to the app** step, and hit refresh. -![hello-world-in-browser](media/app-service-web-get-started-nodejs-poc/hello-world-in-browser.png) +![Updated sample app running in Azure](media/app-service-web-get-started-nodejs-poc/hello-azure-in-browser.png) ## Manage your new Azure web app -Go to the Azure portal to take a look at the web app you just created. - -To do this, sign in to [https://portal.azure.com](https://portal.azure.com). +Go to the [Azure portal](https://portal.azure.com) to manage the web app you created. -From the left menu, click **App Services**, then click the name of your Azure web app. +From the left menu, click **App Services**, and then click the name of your Azure web app. ![Portal navigation to Azure web app](./media/app-service-web-get-started-nodejs-poc/nodejs-docs-hello-world-app-service-list.png) -You have landed in your web app's _blade_ (a portal page that opens horizontally). - -By default, your web app's blade shows the **Overview** page. This page gives you a view of how your app is doing. Here, you can also perform basic management tasks like browse, stop, start, restart, and delete. The tabs on the left side of the blade shows the different configuration pages you can open. +You see your web app's Overview page. Here, you can perform basic management tasks like browse, stop, start, restart, and delete. ![App Service blade in Azure portal](media/app-service-web-get-started-nodejs-poc/nodejs-docs-hello-world-app-service-detail.png) -These tabs in the blade show the many great features you can add to your web app. The following list gives you just a few of the possibilities: - -* Map a custom DNS name -* Bind a custom SSL certificate -* Configure continuous deployment -* Scale up and out -* Add user authentication - -**Congratulations!** You've deployed your first Node.js app to App Service. +The left menu provides different pages for configuring your app. [!INCLUDE [cli-samples-clean-up](../../includes/cli-samples-clean-up.md)] +## Next steps + > [!div class="nextstepaction"] -> [Explore sample Web Apps CLI scripts](app-service-cli-samples.md) +> [Node.js with MongoDB](app-service-web-tutorial-nodejs-mongodb-app.md) diff --git a/articles/app-service-web/app-service-web-get-started-php.md b/articles/app-service-web/app-service-web-get-started-php.md index 603acc57a1dc5..e85af4b2dd4b9 100644 --- a/articles/app-service-web/app-service-web-get-started-php.md +++ b/articles/app-service-web/app-service-web-get-started-php.md @@ -1,6 +1,6 @@ --- -title: Create a PHP application on Azure Web App | Microsoft Docs -description: Deploy your first PHP Hello World in App Service Web App in minutes. +title: Create a PHP web app in Azure | Microsoft Docs +description: Deploy your first PHP Hello World in Azure App Service Web Apps in minutes. services: app-service\web documentationcenter: '' author: syntaxc4 @@ -17,27 +17,27 @@ ms.date: 05/04/2017 ms.author: cfowler ms.custom: mvc --- -# Create a PHP application on Web App +# Create a PHP web app in Azure -This quickstart tutorial walks through how to develop and deploy a PHP app to Azure. We’ll run the app using an [Azure App Service plan](https://docs.microsoft.com/azure/app-service/azure-web-sites-web-hosting-plans-in-depth-overview), and create and configure a new Web App within it using the Azure CLI. We’ll then use git to deploy our PHP app to Azure. +[Azure Web Apps](https://docs.microsoft.com/azure/app-service-web/app-service-web-overview) provides a highly scalable, self-patching web hosting service. This quickstart tutorial shows how to deploy a PHP app to Azure Web Apps. You create the web app using the [Azure CLI](https://docs.microsoft.com/cli/azure/get-started-with-azure-cli), and you use Git to deploy sample PHP code to the web app. -![hello-world-in-browser](media/app-service-web-get-started-php/hello-world-in-browser.png) +![Sample app running in Azure]](media/app-service-web-get-started-php/hello-world-in-browser.png) -You can follow the steps below using a Mac, Windows, or Linux machine. It should take you only about 5 minutes to complete all of the steps below. +You can follow the steps below using a Mac, Windows, or Linux machine. Once the prerequisites are installed, it takes about five minutes to complete the steps. ## Prerequisites -Before creating this sample, download and install the following: +To complete this quickstart: -* [Git](https://git-scm.com/) -* [PHP](https://php.net) -* [Azure CLI 2.0](https://docs.microsoft.com/cli/azure/install-azure-cli) +* [Install Git](https://git-scm.com/) +* [Install PHP](https://php.net) +* [Install Azure CLI 2.0](https://docs.microsoft.com/cli/azure/install-azure-cli) [!INCLUDE [quickstarts-free-trial-note](../../includes/quickstarts-free-trial-note.md)] ## Download the sample -Clone the Hello World sample app repository to your local machine. +In a terminal window, run the following command to clone the sample app repository to your local machine. ```bash git clone https://github.com/Azure-Samples/php-docs-hello-world @@ -51,150 +51,37 @@ cd php-docs-hello-world ## Run the app locally -Run the application locally by opening a terminal window an using `php` command line for the sample to launch the built in PHP web server. +Run the application locally by opening a terminal window and using the `php` command to launch the built-in PHP web server. ```bash php -S localhost:8080 ``` -Open a web browser, and navigate to the sample. +Open a web browser, and navigate to the sample app at http://localhost:8080. -```bash -http://localhost:8080 -``` +You see the **Hello World** message from the sample app displayed in the page. -You can see the **Hello World** message from the sample app displayed in the page. - -![localhost-hello-world-in-browser](media/app-service-web-get-started-php/localhost-hello-world-in-browser.png) +![Sample app running locally](media/app-service-web-get-started-php/localhost-hello-world-in-browser.png) In your terminal window, press **Ctrl+C** to exit the web server. -## Log in to Azure - -We are now going to use the Azure CLI 2.0 in a terminal window to create the resources needed to host our PHP app in Azure. Log in to your Azure subscription with the [az login](/cli/azure/#login) command and follow the on-screen directions. - -```azurecli -az login -``` - - -[!INCLUDE [login-to-azure](../../includes/configure-deployment-user.md)] - -## Create a resource group - -Create a resource group with the [az group create](/cli/azure/group#create). An Azure resource group is a logical container into which Azure resources like web apps, databases and storage accounts are deployed and managed. - -```azurecli -az group create --name myResourceGroup --location westeurope -``` - -## Create an Azure App Service plan - -Create a "FREE" [App Service plan](../app-service/azure-web-sites-web-hosting-plans-in-depth-overview.md) with the [az appservice plan create](/cli/azure/appservice/plan#create) command. - - -[!INCLUDE [app-service-plan](../../includes/app-service-plan.md)] - -The following example creates an App Service plan named `quickStartPlan` using the **Free** pricing tier. - -```azurecli -az appservice plan create --name quickStartPlan --resource-group myResourceGroup --sku FREE -``` - -When the App Service Plan has been created, the Azure CLI shows information similar to the following example. - -```json -{ - "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/quickStartPlan", - "location": "West Europe", - "sku": { - "capacity": 1, - "family": "S", - "name": "S1", - "tier": "Standard" - }, - "status": "Ready", - "type": "Microsoft.Web/serverfarms" -} -``` - -## Create a web app - -Now that an App Service plan has been created, create a [Web App](https://docs.microsoft.com/azure/app-service-web/app-service-web-overview) within the `quickStartPlan` App Service plan. The web app gives us a hosting space to deploy our code as well as provides a URL for us to view the deployed application. Use the [az appservice web create](/cli/azure/appservice/web#create) command to create the Web App. - -In the command below substitute your own unique app name where you see the `` placeholder. The `` is used in the default DNS site for the web app. If `` is not unique, you get the friendly error message "Website with given name already exists." - - - -```azurecli -az appservice web create --name --resource-group myResourceGroup --plan quickStartPlan -``` - -When the Web App has been created, the Azure CLI shows information similar to the following example. - -```json -{ - "clientAffinityEnabled": true, - "defaultHostName": ".azurewebsites.net", - "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Web/sites/", - "isDefaultContainer": null, - "kind": "app", - "location": "West Europe", - "name": "", - "repositorySiteName": "", - "reserved": true, - "resourceGroup": "myResourceGroup", - "serverFarmId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/quickStartPlan", - "state": "Running", - "type": "Microsoft.Web/sites", -} -``` - -Browse to the site to see your newly created Web App. - -```bash -http://.azurewebsites.net -``` - -![app-service-web-service-created](media/app-service-web-get-started-php/app-service-web-service-created.png) - -We’ve now created an empty new Web App in Azure. +[!INCLUDE [Log in to Azure](../../includes/login-to-azure.md)] -## Configure local git deployment +[!INCLUDE [Configure deployment user](../../includes/configure-deployment-user.md)] -You can deploy to your Web App in a variety of ways including FTP, local Git as well as GitHub, Visual Studio Team Services, and Bitbucket. +[!INCLUDE [Create resource group](../../includes/app-service-web-create-resource-group.md)] -Use the [az appservice web source-control config-local-git](/cli/azure/appservice/web/source-control#config-local-git) command to configure local git access to the Web App. +[!INCLUDE [Create app service plan](../../includes/app-service-web-create-app-service-plan.md)] -```azurecli -az appservice web source-control config-local-git --name --resource-group myResourceGroup --query url --output tsv -``` - -Copy the output from the terminal as it will be used in the next step. +[!INCLUDE [Create web app](../../includes/app-service-web-create-web-app.md)] -```bash -https://@.scm.azurewebsites.net:443/.git -``` +![Empty web app page](media/app-service-web-get-started-php/app-service-web-service-created.png) -## Push to Azure from Git +You’ve created an empty new web app in Azure. -Add an Azure remote to your local Git repository. - -```bash -git remote add azure -``` +[!INCLUDE [Configure local git](../../includes/app-service-web-configure-local-git.md)] -Push to the Azure remote to deploy your app. You are prompted for the password you supplied earlier when you created the deployment user. Make sure that you enter the password you created in [Configure a deployment user](#configure-a-deployment-user), not the password you use to log in to the Azure portal. - -```bash -git push azure master -``` - -During deployment, Azure App Service will communicate its progress with Git. +[!INCLUDE [Push to Azure](../../includes/app-service-web-git-push-to-azure.md)] ```bash Counting objects: 2, done. @@ -229,11 +116,13 @@ Browse to the deployed application using your web browser. http://.azurewebsites.net ``` -This time, the page that displays the Hello World message is running using our PHP code running as an Azure App Service web app. +The PHP sample code is running in an Azure App Service web app. +![Sample app running in Azure](media/app-service-web-get-started-php/hello-world-in-browser.png) +**Congratulations!** You've deployed your first PHP app to App Service. -## Updating and Deploying the Code +## Update and redeploy the code Using a local text editor, open the `index.php` file within the PHP app, and make a small change to the text within the string next to `echo`: @@ -241,45 +130,34 @@ Using a local text editor, open the `index.php` file within the PHP app, and mak echo "Hello Azure!"; ``` -Commit your changes in git, then push the code changes to Azure. +Commit your changes in Git, and then push the code changes to Azure. ```bash git commit -am "updated output" git push azure master ``` -Once deployment has completed, switch back to the browser window that opened in the **Browse to the app** step, and hit refresh. +Once deployment has completed, switch back to the browser window that opened in the **Browse to the app** step, and refresh the page. -![hello-world-in-browser](media/app-service-web-get-started-php/hello-world-in-browser.png) +![Updated sample app running in Azure](media/app-service-web-get-started-php/hello-azure-in-browser.png) ## Manage your new Azure web app -Go to the Azure portal to take a look at the web app you just created. - -To do this, sign in to [https://portal.azure.com](https://portal.azure.com). +Go to the [Azure portal](https://portal.azure.com) to manage the web app you created. -From the left menu, click **App Services**, then click the name of your Azure web app. +From the left menu, click **App Services**, and then click the name of your Azure web app. ![Portal navigation to Azure web app](./media/app-service-web-get-started-php/php-docs-hello-world-app-service-list.png) -You have landed in your web app's _blade_ (a portal page that opens horizontally). - -By default, your web app's blade shows the **Overview** page. This page gives you a view of how your app is doing. Here, you can also perform basic management tasks like browse, stop, start, restart, and delete. The tabs on the left side of the blade shows the different configuration pages you can open. +You see your web app's Overview page. Here, you can perform basic management tasks like browse, stop, start, restart, and delete. ![App Service blade in Azure portal](media/app-service-web-get-started-php/php-docs-hello-world-app-service-detail.png) -These tabs in the blade show the many great features you can add to your web app. The following list gives you just a few of the possibilities: - -* Map a custom DNS name -* Bind a custom SSL certificate -* Configure continuous deployment -* Scale up and out -* Add user authentication - -**Congratulations!** You've deployed your first PHP app to App Service. +The left menu provides different pages for configuring your app. [!INCLUDE [cli-samples-clean-up](../../includes/cli-samples-clean-up.md)] -> [!div class="nextstepaction"] -> [Explore sample Web Apps CLI scripts](app-service-cli-samples.md) +## Next steps +> [!div class="nextstepaction"] +> [PHP with MySQL](app-service-web-tutorial-php-mysql.md) diff --git a/articles/app-service-web/app-service-web-get-started-python.md b/articles/app-service-web/app-service-web-get-started-python.md index 5cba2a174b89e..bbc3f3c38687e 100644 --- a/articles/app-service-web/app-service-web-get-started-python.md +++ b/articles/app-service-web/app-service-web-get-started-python.md @@ -1,6 +1,6 @@ --- -title: Create your first Python web app in Azure in five minutes | Microsoft Docs -description: Deploy your first Python Hello World in App Service Web App in minutes. +title: Create a Python web app in Azure | Microsoft Docs +description: Deploy your first Python Hello World in Azure App Service Web Apps in minutes. services: app-service\web documentationcenter: '' author: syntaxc4 @@ -17,33 +17,31 @@ ms.date: 03/17/2017 ms.author: cfowler ms.custom: mvc --- -# Create a Python application on Web App +# Create a Python web app in Azure -This quickstart tutorial walks through how to develop and deploy a Python app to Azure. We’ll run the app using Azure App Service, and create and configure a new web app within it using the Azure CLI. We’ll then use git to deploy our Python app to Azure. +[Azure Web Apps](https://docs.microsoft.com/azure/app-service-web/app-service-web-overview) provides a highly scalable, self-patching web hosting service. This quickstart walks through how to develop and deploy a Python app to Azure Web Apps. You create the web app using the [Azure CLI](https://docs.microsoft.com/cli/azure/get-started-with-azure-cli), and you use Git to deploy sample Python code to the web app. -![hello-world-in-browser](media/app-service-web-get-started-python/hello-world-in-browser.png) - -You can follow the steps below using a Mac, Windows, or Linux machine. It should take you only about 5 minutes to complete all of the steps below. +![Sample app running in Azure](media/app-service-web-get-started-python/hello-world-in-browser.png) +You can follow the steps below using a Mac, Windows, or Linux machine. Once the prerequisites are installed, it takes about five minutes to complete the steps. ## Prerequisites -Before running this sample, install the following prerequisites locally: +To complete this tutorial: + +1. [Install Git](https://git-scm.com/) +1. [Install Python](https://www.python.org/downloads/) +1. [Install Azure CLI 2.0](https://docs.microsoft.com/cli/azure/install-azure-cli) -1. [Download and install git](https://git-scm.com/) -1. [Download and install Python](https://www.python.org/downloads/) -1. Download and install the [Azure CLI 2.0](https://docs.microsoft.com/cli/azure/install-azure-cli) +[!INCLUDE [quickstarts-free-trial-note](../../includes/quickstarts-free-trial-note.md)] ## Download the sample -Clone the Hello World sample app repository to your local machine. +In a terminal window, run the following command to clone the sample app repository to your local machine. ```bash git clone https://github.com/Azure-Samples/python-docs-hello-world ``` -> [!TIP] -> Alternatively, you can [download the sample](https://github.com/Azure-Samples/Python-docs-hello-world/archive/master.zip) as a zip file and extract it. - Change to the directory that contains the sample code. ```bash @@ -52,179 +50,47 @@ cd Python-docs-hello-world ## Run the app locally -Run the application locally by opening a terminal window an using `Python` command line for the sample to launch the built in Python web server. +Run the application locally by opening a terminal window and using the `Python` command to launch the built-in Python web server. ```bash python main.py ``` -Open a web browser, and navigate to the sample. - -```bash -http://localhost:5000 -``` +Open a web browser, and navigate to the sample app at http://localhost:5000. You can see the **Hello World** message from the sample app displayed in the page. -![localhost-hello-world-in-browser](media/app-service-web-get-started-python/localhost-hello-world-in-browser.png) +![Sample app running locally](media/app-service-web-get-started-python/localhost-hello-world-in-browser.png) In your terminal window, press **Ctrl+C** to exit the web server. -## Log in to Azure - -We are now going to use the Azure CLI 2.0 in a terminal window to create the resources needed to host our Python app in Azure. Log in to your Azure subscription with the [az login](/cli/azure/#login) command and follow the on-screen directions. - -```azurecli -az login -``` - -## Configure a Deployment User - -For FTP and local Git it is necessary to have a deployment user configured on the server to authenicate your deployment. Creating a deployment user is a one time configuration, take a note of the username and password as they will be used in a step below. - -> [!NOTE] -> A deployment user is required for FTP and Local Git deployment to a web app. -> The `username` and `password` are account-level, and as such are different from your Azure Subscription credentials. **These credentials are only required to be created once**. -> - -Use the [az appservice web deployment user set](/cli/azure/appservice/web/deployment/user#set) command to create your account-level credentials. - -```azurecli -az appservice web deployment user set --user-name --password -``` - -## Create a resource group - -Create a resource group with the [az group create](/cli/azure/group#create). An Azure resource group is a logical container into which Azure resources like web apps, databases and storage accounts are deployed and managed. - -```azurecli -az group create --name myResourceGroup --location westeurope -``` - -## Create an Azure App Service - -Create an App Service plan with the [az appservice plan create](/cli/azure/appservice/plan#create) command. - -[!INCLUDE [app-service-plan](../../includes/app-service-plan.md)] - -The following example creates an App Service Plan named `quickStartPlan` using the **FREE** pricing tier. - -```azurecli -az appservice plan create --name quickStartPlan --resource-group myResourceGroup --sku FREE -``` - -When the App Service Plan has been created, the Azure CLI shows information similar to the following example. - -```json -{ -"appServicePlanName": "quickStartPlan", -"geoRegion": "North Europe", -"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/quickStartPlan", -"kind": "app", -"location": "North Europe", -"maximumNumberOfWorkers": 1, -"name": "quickStartPlan", -"provisioningState": "Succeeded", -"resourceGroup": "myResourceGroup", -"sku": { - "capacity": 0, - "family": "F", - "name": "F1", - "size": "F1", - "tier": "Free" -}, -"status": "Ready", -"type": "Microsoft.Web/serverfarms", -} -``` - -## Create a web app - -Now that an App Service plan has been created, create a web app within the `quickStartPlan` App Service plan. The web app gives us a hosting space to deploy our code as well as provides a URL for us to view the deployed application. Use the [az appservice web create](/cli/azure/appservice/web#create) command to create the web app. +[!INCLUDE [Log in to Azure](../../includes/login-to-azure.md)] -In the command below please substitute your own unique app name where you see the `` placeholder. The `` will be used as the default DNS site for the web app, and so the name needs to be unique across all apps in Azure. You can later map any custom DNS entry to the web app before you expose it to your users. +[!INCLUDE [Configure deployment user](../../includes/configure-deployment-user.md)] -```azurecli -az appservice web create --name --resource-group myResourceGroup --plan quickStartPlan -``` +[!INCLUDE [Create resource group](../../includes/app-service-web-create-resource-group.md)] -When the web app has been created, the Azure CLI shows information similar to the following example. - -```json -{ - "clientAffinityEnabled": true, - "defaultHostName": ".azurewebsites.net", - "enabled": true, - "enabledHostNames": [ - ".azurewebsites.net", - ".scm.azurewebsites.net" - ], - "hostNames": [ - ".azurewebsites.net" - ], - "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Web/sites/", - "kind": "app", - "location": "North Europe", - "outboundIpAddresses": "13.69.190.80,13.69.191.239,13.69.186.193,13.69.187.34", - "resourceGroup": "myResourceGroup", - "serverFarmId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/quickStartPlan", - "state": "Running", - "type": "Microsoft.Web/sites", -} -``` +[!INCLUDE [Create app service plan](../../includes/app-service-web-create-app-service-plan.md)] -Browse to the site to see your newly created web app. +[!INCLUDE [Create web app](../../includes/app-service-web-create-web-app.md)] -```bash -http://.azurewebsites.net -``` - -![app-service-web-service-created](media/app-service-web-get-started-python/app-service-web-service-created.png) +![Empty web app page](media/app-service-web-get-started-python/app-service-web-service-created.png) -We’ve now created an empty new web app in Azure. Let’s now configure our web app to use Python and deploy our app to it. +You’ve created an empty new web app in Azure. ## Configure to use Python Use the [az appservice web config update](/cli/azure/app-service/web/config#update) command to configure the web app to use Python version `3.4`. -> [!TIP] -> Setting the Python version this way uses a default container provided by the platform, if you would like to use your own container refer to the CLI reference for the [az appservice web config container update](https://docs.microsoft.com/cli/azure/appservice/web/config/container#update) command. - ```azurecli -az appservice web config update --python-version 3.4 --name --resource-group myResourceGroup +az appservice web config update --python-version 3.4 --name --resource-group myResourceGroup ``` -## Configure local git deployment - -You can deploy to your web app in a variety of ways including FTP, local Git as well as GitHub, Visual Studio Team Services and Bitbucket. - -Use the [az appservice web source-control config-local-git](/cli/azure/appservice/web/source-control#config-local-git) command to configure local git access to the web app. - -```azurecli -az appservice web source-control config-local-git --name --resource-group myResourceGroup --query url --output tsv -``` - -Copy the output from the terminal as it will be used in the next step. - -```bash -https://@.scm.azurewebsites.net:443/.git -``` +Setting the Python version this way uses a default container provided by the platform. To use your own container, see the CLI reference for the [az appservice web config container update](https://docs.microsoft.com/cli/azure/appservice/web/config/container#update) command. -## Push to Azure from Git +[!INCLUDE [Configure local git](../../includes/app-service-web-configure-local-git.md)] -Add an Azure remote to your local Git repository. - -```bash -git remote add azure -``` - -Push to the Azure remote to deploy your application. You will be prompted for the password you supplied earlier as part of the creation of the deployment user. - -```azurecli -git push azure master -``` - -During deployment, Azure App Service will communicate it's progress with Git. +[!INCLUDE [Push to Azure](../../includes/app-service-web-git-push-to-azure.md)] ```bash Counting objects: 18, done. @@ -276,58 +142,48 @@ Browse to the deployed application using your web browser. http://.azurewebsites.net ``` -This time, the page that displays the Hello World message is running using our Python code running as an Azure App Service web app. +The Python sample code is running in an Azure App Service web app. + +![Sample app running in Azure](media/app-service-web-get-started-python/hello-world-in-browser.png) -![hello-world-in-browser](media/app-service-web-get-started-python/hello-world-in-browser.png) +**Congratulations!** You've deployed your first Python app to App Service. -## Updating and Deploying the Code +## Update and redeploy the code -Using a local text editor, open the `main.py` file within the Python app, and make a small change to the text within the string next to `return` statement: +Using a local text editor, open the `main.py` file in the Python app, and make a small change to the text next to the `return` statement: ```python return 'Hello, Azure!' ``` -Commit your changes in git, then push the code changes to Azure. +Commit your changes in Git, and then push the code changes to Azure. ```bash git commit -am "updated output" git push azure master ``` -Once deployment has completed, switch back to the browser window that opened in the Browse to the app step, and hit refresh. +Once deployment has completed, switch back to the browser window that opened in the [Browse to the app](#browse-to-the-app) step, and refresh the page. -![hello-azure-in-browser](media/app-service-web-get-started-python/hello-azure-in-browser.png) +![Updated sample app running in Azure](media/app-service-web-get-started-python/hello-azure-in-browser.png) ## Manage your new Azure web app -Go to the Azure portal to take a look at the web app you just created. - -To do this, sign in to [https://portal.azure.com](https://portal.azure.com). +Go to the [Azure portal](https://portal.azure.com) to manage the web app you created. -From the left menu, click **App Services**, then click the name of your Azure web app. +From the left menu, click **App Services**, and then click the name of your Azure web app. -![Portal navigation to Azure web app](./media/app-service-web-get-started-python/app-service-list.png) +![Portal navigation to Azure web app](./media/app-service-web-get-started-nodejs-poc/nodejs-docs-hello-world-app-service-list.png) -You have landed in your web app's _blade_ (a portal page that opens horizontally). +You see your web app's Overview page. Here, you can perform basic management tasks like browse, stop, start, restart, and delete. -By default, your web app's blade shows the **Overview** page. This page gives you a view of how your app is doing. Here, you can also perform basic management tasks like browse, stop, start, restart, and delete. The tabs on the left side of the blade shows the different configuration pages you can open. +![App Service blade in Azure portal](media/app-service-web-get-started-nodejs-poc/nodejs-docs-hello-world-app-service-detail.png) -![App Service blade in Azure portal](media/app-service-web-get-started-python/app-service-detail.png) - -These tabs in the blade show the many great features you can add to your web app. The following list gives you just a few of the possibilities: - -* Map a custom DNS name -* Bind a custom SSL certificate -* Configure continuous deployment -* Scale up and out -* Add user authentication - -**Congratulations!** You've deployed your first Python app to App Service. +The left menu provides different pages for configuring your app. [!INCLUDE [cli-samples-clean-up](../../includes/cli-samples-clean-up.md)] ## Next steps > [!div class="nextstepaction"] -> [Explore sample Web Apps CLI scripts](app-service-cli-samples.md) +> [Python with PostgreSQL](app-service-web-tutorial-docker-python-postgresql-app.md) diff --git a/articles/app-service-web/media/app-service-web-get-started-html/app-service-web-service-created.png b/articles/app-service-web/media/app-service-web-get-started-html/app-service-web-service-created.png new file mode 100644 index 0000000000000..bdb917ce04b83 Binary files /dev/null and b/articles/app-service-web/media/app-service-web-get-started-html/app-service-web-service-created.png differ diff --git a/articles/app-service-web/media/app-service-web-get-started-html/hello-azure-in-browser-az.png b/articles/app-service-web/media/app-service-web-get-started-html/hello-azure-in-browser-az.png new file mode 100644 index 0000000000000..e1b464f52cc60 Binary files /dev/null and b/articles/app-service-web/media/app-service-web-get-started-html/hello-azure-in-browser-az.png differ diff --git a/articles/app-service-web/media/app-service-web-get-started-html/hello-world-in-browser-az.png b/articles/app-service-web/media/app-service-web-get-started-html/hello-world-in-browser-az.png index aec363f588fc6..3332e51bd2599 100644 Binary files a/articles/app-service-web/media/app-service-web-get-started-html/hello-world-in-browser-az.png and b/articles/app-service-web/media/app-service-web-get-started-html/hello-world-in-browser-az.png differ diff --git a/articles/app-service-web/media/app-service-web-get-started-html/hello-world-in-browser.png b/articles/app-service-web/media/app-service-web-get-started-html/hello-world-in-browser.png index d7675c0cde61b..f6117f8146eb6 100644 Binary files a/articles/app-service-web/media/app-service-web-get-started-html/hello-world-in-browser.png and b/articles/app-service-web/media/app-service-web-get-started-html/hello-world-in-browser.png differ diff --git a/includes/media/manage-azure-web-app/portal1.png b/articles/app-service-web/media/app-service-web-get-started-html/portal1.png similarity index 100% rename from includes/media/manage-azure-web-app/portal1.png rename to articles/app-service-web/media/app-service-web-get-started-html/portal1.png diff --git a/includes/media/manage-azure-web-app/portal2.png b/articles/app-service-web/media/app-service-web-get-started-html/portal2.png similarity index 100% rename from includes/media/manage-azure-web-app/portal2.png rename to articles/app-service-web/media/app-service-web-get-started-html/portal2.png diff --git a/articles/app-service-web/media/app-service-web-get-started-nodejs-poc/hello-azure-in-browser.png b/articles/app-service-web/media/app-service-web-get-started-nodejs-poc/hello-azure-in-browser.png new file mode 100644 index 0000000000000..c1e1cac9fac8a Binary files /dev/null and b/articles/app-service-web/media/app-service-web-get-started-nodejs-poc/hello-azure-in-browser.png differ diff --git a/articles/app-service-web/media/app-service-web-get-started-nodejs-poc/hello-world-in-browser.png b/articles/app-service-web/media/app-service-web-get-started-nodejs-poc/hello-world-in-browser.png index c1e1cac9fac8a..67bd2381bfc1e 100644 Binary files a/articles/app-service-web/media/app-service-web-get-started-nodejs-poc/hello-world-in-browser.png and b/articles/app-service-web/media/app-service-web-get-started-nodejs-poc/hello-world-in-browser.png differ diff --git a/articles/app-service-web/media/app-service-web-get-started-php/hello-azure-in-browser.png b/articles/app-service-web/media/app-service-web-get-started-php/hello-azure-in-browser.png new file mode 100644 index 0000000000000..2ad25f35aace0 Binary files /dev/null and b/articles/app-service-web/media/app-service-web-get-started-php/hello-azure-in-browser.png differ diff --git a/articles/automation/automation-manage-send-joblogs-log-analytics.md b/articles/automation/automation-manage-send-joblogs-log-analytics.md index 80dcd09e50b02..1266b3375d365 100644 --- a/articles/automation/automation-manage-send-joblogs-log-analytics.md +++ b/articles/automation/automation-manage-send-joblogs-log-analytics.md @@ -1,10 +1,10 @@ ---- +--- title: Forward Azure Automation job data to OMS Log Analytics | Microsoft Docs description: This article demonstrates how to send job status and runbook job streams to Microsoft Operations Management Suite Log Analytics to deliver additional insight and management. services: automation documentationcenter: '' author: MGoedtel -manager: jwhit +manager: carmonm editor: tysonn ms.assetid: c12724c6-01a9-4b55-80ae-d8b7b99bd436 @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: infrastructure-services -ms.date: 03/03/2017 +ms.date: 06/02/2017 ms.author: magoedte --- @@ -29,8 +29,8 @@ Automation can send runbook job status and job streams to your Microsoft Operati ## Prerequisites and deployment considerations To start sending your Automation logs to Log Analytics, you need: -1. The November 2016 or later release of [Azure PowerShell](/powershell/azure/overview) (v2.3.0). -2. A Log Analytics workspace. For more information, see [Get started with Log Analytics](../log-analytics/log-analytics-get-started.md). +1. The November 2016 or later release of [Azure PowerShell](https://docs.microsoft.com/powershell/azureps-cmdlets-docs/) (v2.3.0). +2. A Log Analytics workspace. For more information, see [Get started with Log Analytics](../log-analytics/log-analytics-get-started.md). 3. The ResourceId for your Azure Automation account To find the ResourceId for your Azure Automation account and Log Analytics workspace, run the following PowerShell: @@ -56,25 +56,21 @@ If you need to find the *Name* of your Automation account, in the Azure portal s Param ( [Parameter(Mandatory=$True)] - [ValidateSet("AzureCloud","AzureUSGovernment")] - [string]$Environment="AzureCloud", - [Parameter(Mandatory=$True)] - [string]$nameOfYourLogAnalyticsWorkspace, - [Parameter(Mandatory=$True)] - [string]$nameOfYourAutomationAccount + [ValidateSet("AzureCloud","AzureUSGovernment")] + [string]$Environment="AzureCloud" ) #Check to see which cloud environment to sign into. Switch ($Environment) { "AzureCloud" {Login-AzureRmAccount} - "AzureUSGovernment" {Login-AzureRmAccount -EnvironmentName AzureUSGovernment} + "AzureUSGovernment" {Login-AzureRmAccount -EnvironmentName AzureUSGovernment} } -# Below both the ResourceId's are populated using the Parameters from this script as a searchstring based on the Name of the Automation Account and Name of Workspace +# if you have one Log Analytics workspace you can use the following command to get the resource id of the workspace +$workspaceId = (Get-AzureRmOperationalInsightsWorkspace).ResourceId -$workspaceId=(Get-AzureRmOperationalInsightsWorkspace|where Name -like ('*'+$nameOfYourLogAnalyticsWorkspace+'*')).ResourceId -$automationAccountId=(Find-AzureRmResource -ResourceType "Microsoft.Automation/automationAccounts" -ResourceNameContains $nameOfYourAutomationAccount).Resourceid +$automationAccountId = "/SUBSCRIPTIONS/ec11ca60-1234-491e-5678-0ea07feae25c/RESOURCEGROUPS/DEMO/PROVIDERS/MICROSOFT.AUTOMATION/ACCOUNTS/DEMO" Set-AzureRmDiagnosticSetting -ResourceId $automationAccountId -WorkspaceId $workspaceId -Enabled $true @@ -82,7 +78,7 @@ Set-AzureRmDiagnosticSetting -ResourceId $automationAccountId -WorkspaceId $work After running this script, you will see records in Log Analytics within 10 minutes of new JobLogs or JobStreams being written. -To see the logs, run the following query: +To see the logs, run the following query in Log Analytics log search: `Type=AzureDiagnostics ResourceProvider="MICROSOFT.AUTOMATION"` ### Verify configuration @@ -93,22 +89,20 @@ To confirm that your Automation account is sending logs to your Log Analytics wo Param ( [Parameter(Mandatory=$True)] - [ValidateSet("AzureCloud","AzureUSGovernment")] - [string]$Environment="AzureCloud", - [Parameter(Mandatory=$True)] - [string]$nameOfYourAutomationAccount + [ValidateSet("AzureCloud","AzureUSGovernment")] + [string]$Environment="AzureCloud" ) #Check to see which cloud environment to sign into. Switch ($Environment) { "AzureCloud" {Login-AzureRmAccount} - "AzureUSGovernment" {Login-AzureRmAccount -EnvironmentName AzureUSGovernment} + "AzureUSGovernment" {Login-AzureRmAccount -EnvironmentName AzureUSGovernment} } +# if you have one Log Analytics workspace you can use the following command to get the resource id of the workspace +$workspaceId = (Get-AzureRmOperationalInsightsWorkspace).ResourceId -# Below the ResourceId is populated using the Parameter from this script as a searchstring based on the Name of the Workspace - -$automationAccountId=(Find-AzureRmResource -ResourceType "Microsoft.Automation/automationAccounts" -ResourceNameContains $nameOfYourAutomationAccount).Resourceid +$automationAccountId = "/SUBSCRIPTIONS/ec11ca60-1234-491e-5678-0ea07feae25c/RESOURCEGROUPS/DEMO/PROVIDERS/MICROSOFT.AUTOMATION/ACCOUNTS/DEMO" Get-AzureRmDiagnosticSetting -ResourceId $automationAccountId ``` @@ -119,7 +113,7 @@ In the output ensure that: ## Log Analytics records -Diagnostics from Azure Automation creates two types of records in Log Analytics. +Diagnostics from Azure Automation creates two types of records in Log Analytics and are tagged as **Type=AzureDiagnostics**. ### Job Logs | Property | Description | diff --git a/articles/automation/automation-managing-data.md b/articles/automation/automation-managing-data.md index 89782ee80be1b..e11f6efd9930b 100644 --- a/articles/automation/automation-managing-data.md +++ b/articles/automation/automation-managing-data.md @@ -3,7 +3,7 @@ title: Managing Azure Automation data | Microsoft Docs description: This article contains multiple topics for managing an Azure Automation environment. Currently includes Data Retention and Backing up Azure Automation Disaster Recovery in Azure Automation. services: automation documentationcenter: '' -author: SnehaGunda +author: mgoedtel manager: stevenka editor: tysonn @@ -13,8 +13,8 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: infrastructure-services -ms.date: 10/31/2016 -ms.author: bwren;sngun +ms.date: 06/02/201 +ms.author: magoedte;bwren;sngun --- # Managing Azure Automation data @@ -40,6 +40,8 @@ The following table summarizes the retention policy for different resources. The retention policy applies to all users and currently cannot be customized. +However, if you need to retain data for a longer period of time, you can forward runbook job logs to Log Analytics. For further information, review [forward Azure Automation job data to OMS Log Analytics](automation-manage-send-joblogs-log-analytics.md). + ## Backing up Azure Automation When you delete an automation account in Microsoft Azure, all objects in the account are deleted including runbooks, modules, configurations, settings, jobs, and assets. The objects cannot be recovered after the account is deleted. You can use the following information to backup the contents of your automation account before deleting it. diff --git a/articles/azure-functions/functions-create-first-azure-function-azure-cli.md b/articles/azure-functions/functions-create-first-azure-function-azure-cli.md index 817f38b776281..43d9d5379f100 100644 --- a/articles/azure-functions/functions-create-first-azure-function-azure-cli.md +++ b/articles/azure-functions/functions-create-first-azure-function-azure-cli.md @@ -30,11 +30,13 @@ Before running this sample, you must have the following: [!INCLUDE [quickstarts-free-trial-note](../../includes/quickstarts-free-trial-note.md)] +[!INCLUDE [cloud-shell-try-it.md](../../includes/cloud-shell-try-it.md)] + ## Log in to Azure Sign in to your Azure subscription using the [az login](/cli/azure/#login) command and follow the on-screen instructions. -```azurecli +```azurecli-interactive az login ``` @@ -44,7 +46,7 @@ Create a resource group with the [az group create](/cli/azure/group#create). An The following example creates a resource group named `myResourceGroup`: -```azurecli +```azurecli-interactive az group create --name myResourceGroup --location westeurope ``` ## Create an Azure Storage account @@ -53,7 +55,7 @@ Functions uses an Azure Storage account to maintain state and other information In the following command, substitute your own globally unique storage account name where you see the `` placeholder. Storage account names must be between 3 and 24 characters in length and may contain numbers and lowercase letters only. -```azurecli +```azurecli-interactive az storage account create --name --location westeurope --resource-group myResourceGroup --sku Standard_LRS ``` @@ -83,7 +85,7 @@ You must have a function app to host the execution of your functions. The functi In the following command, substitute your own unique function app name where you see the `` placeholder and the storage account name for ``. The `` is used as the default DNS domain for the function app, and so the name needs to be unique across all apps in Azure. -```azurecli +```azurecli-interactive az functionapp create --name --storage-account --resource-group myResourceGroup --consumption-plan-location westeurope ``` By default, a function app is created with the Consumption hosting plan, which means that resources are added dynamically as required by your functions and you only pay when functions are running. For more information, see [Choose the correct hosting plan](functions-scale.md). @@ -114,7 +116,7 @@ Now that you have a function app, you can deploy the actual function code from t There are several ways to create your function code in your new function app. This topic connects to a sample repository in GitHub. As before, in the following code replace the `` placeholder with the name of the function app you created. -```azurecli +```azurecli-interactive az functionapp deployment source config --name --resource-group myResourceGroup --repo-url https://github.com/Azure-Samples/functions-quickstart --branch master --manual-integration ``` After the deployment source been set, the Azure CLI shows information similar to the following example (null values removed for readability): @@ -154,7 +156,7 @@ If you don't have cURL available in your command line, simply enter the same URL Other quickstarts in this collection build upon this quickstart. If you plan to continue on to work with subsequent quickstarts or with the tutorials, do not clean up the resources created in this quickstart. If you do not plan to continue, use the following command to delete all resources created by this quickstart: -```azurecli +```azurecli-interactive az group delete --name myResourceGroup ``` Type `y` when prompted. diff --git a/articles/azure-functions/scripts/functions-cli-configure-custom-domain.md b/articles/azure-functions/scripts/functions-cli-configure-custom-domain.md index f33f9c0fdaf32..9b0ce6fb01fdc 100644 --- a/articles/azure-functions/scripts/functions-cli-configure-custom-domain.md +++ b/articles/azure-functions/scripts/functions-cli-configure-custom-domain.md @@ -14,7 +14,7 @@ ms.workload: na ms.devlang: azurecli ms.tgt_pltfrm: na ms.topic: sample -ms.date: 04/09/2017 +ms.date: 06/01/2017 ms.author: glenga ms.custom: mvc --- @@ -24,6 +24,10 @@ This sample script creates a function app with related resources, and then maps [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + +[!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] + ## Sample script [!code-azurecli-interactive[main](../../../cli_scripts/azure-functions/configure-custom-domain/configure-custom-domain.sh?highlight=3 "Map a custom domain to a function app")] diff --git a/articles/azure-functions/scripts/functions-cli-configure-ssl-certificate.md b/articles/azure-functions/scripts/functions-cli-configure-ssl-certificate.md index cbd29c5c46a63..58e4d46827172 100644 --- a/articles/azure-functions/scripts/functions-cli-configure-ssl-certificate.md +++ b/articles/azure-functions/scripts/functions-cli-configure-ssl-certificate.md @@ -20,7 +20,7 @@ ms.custom: mvc --- # Bind a custom SSL certificate to a function app -This sample script creates a function app in App Service with its related resources, then binds the SSL certificate of a custom domain name to it. For this sample, you will need: +This sample script creates a function app in App Service with its related resources, then binds the SSL certificate of a custom domain name to it. For this sample, you need: * Access to your domain registrar's DNS configuration page. * A valid .PFX file and its password for the SSL certificate you want to upload and bind. @@ -29,6 +29,10 @@ To bind an SSL certificate, your function app must be created in an App Service [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + +[!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] + ## Sample script [!code-azurecli-interactive[main](../../../cli_scripts/azure-functions/configure-ssl-certificate/configure-ssl-certificate.sh?highlight=3-5 "Bind a custom SSL certificate to a web app")] diff --git a/articles/azure-functions/scripts/functions-cli-create-app-service-plan.md b/articles/azure-functions/scripts/functions-cli-create-app-service-plan.md index 0be4b855cc032..158c0c5bb7c68 100644 --- a/articles/azure-functions/scripts/functions-cli-create-app-service-plan.md +++ b/articles/azure-functions/scripts/functions-cli-create-app-service-plan.md @@ -24,6 +24,10 @@ This sample script creates an Azure Function App, which is a container for your [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + +[!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] + ## Sample script This script creates an Azure Function app using a dedicated [App Service plan](../functions-scale.md#app-service-plan). diff --git a/articles/azure-functions/scripts/functions-cli-create-function-app-connect-to-cosmos-db.md b/articles/azure-functions/scripts/functions-cli-create-function-app-connect-to-cosmos-db.md index e92af4c8977c1..29f66a8c4a45b 100644 --- a/articles/azure-functions/scripts/functions-cli-create-function-app-connect-to-cosmos-db.md +++ b/articles/azure-functions/scripts/functions-cli-create-function-app-connect-to-cosmos-db.md @@ -23,6 +23,10 @@ This sample script creates an Azure Function App and connects to an Azure Cosmos [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + +[!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] + ## Sample script This sample creates an Azure Function app and adds a Cosmos DB endpoint and access key to app settings. diff --git a/articles/azure-functions/scripts/functions-cli-create-function-app-connect-to-storage-account.md b/articles/azure-functions/scripts/functions-cli-create-function-app-connect-to-storage-account.md index 16e821dca9fcd..377fbed3ea5ec 100644 --- a/articles/azure-functions/scripts/functions-cli-create-function-app-connect-to-storage-account.md +++ b/articles/azure-functions/scripts/functions-cli-create-function-app-connect-to-storage-account.md @@ -23,6 +23,10 @@ This sample script creates a Function App and Storage Account. [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + +[!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] + ## Sample script This sample creates an Azure Function app and adds the storage connection string to an app setting. diff --git a/articles/azure-functions/scripts/functions-cli-create-function-app-github-continuous.md b/articles/azure-functions/scripts/functions-cli-create-function-app-github-continuous.md index e6d4af7255183..433b91e0da161 100644 --- a/articles/azure-functions/scripts/functions-cli-create-function-app-github-continuous.md +++ b/articles/azure-functions/scripts/functions-cli-create-function-app-github-continuous.md @@ -18,6 +18,10 @@ This sample script creates a function app using the [consumption plan](../functi [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + +[!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] + ## Sample script This sample creates an Azure Function app and deploys function code from GitHub. diff --git a/articles/azure-functions/scripts/functions-cli-create-function-app-github.md b/articles/azure-functions/scripts/functions-cli-create-function-app-github.md index c6c35784dc161..847fa4f0ba345 100644 --- a/articles/azure-functions/scripts/functions-cli-create-function-app-github.md +++ b/articles/azure-functions/scripts/functions-cli-create-function-app-github.md @@ -16,6 +16,10 @@ This sample script creates a function app using the [consumption plan](../functi [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + +[!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] + ## Sample script This sample creates an Azure Function app and deploys function code from GitHub. diff --git a/articles/azure-functions/scripts/functions-cli-create-function-app-vsts-continuous.md b/articles/azure-functions/scripts/functions-cli-create-function-app-vsts-continuous.md index 5401465a060ec..f6b602c781fce 100644 --- a/articles/azure-functions/scripts/functions-cli-create-function-app-vsts-continuous.md +++ b/articles/azure-functions/scripts/functions-cli-create-function-app-vsts-continuous.md @@ -19,6 +19,10 @@ In this scenario you will learn how to create a function app using the [consumpt [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + +[!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] + ## Sample script This sample creates an Azure Function app and deploys function code from Visual Studio Team Services. @@ -40,6 +44,6 @@ This script uses the following commands to create a resource group, web app, doc ## Next steps -For more information on the Azure CLI, see [Azure CLI documentaiton](https://docs.microsoft.com/cli/azure/overview). +For more information on the Azure CLI, see [Azure CLI documentation](https://docs.microsoft.com/cli/azure/overview). Additional Azure Functions CLI script samples can be found in the [Azure Functions documentation](../functions-cli-samples.md). diff --git a/articles/azure-functions/scripts/functions-cli-create-serverless.md b/articles/azure-functions/scripts/functions-cli-create-serverless.md index 3e4a0e00cc9ec..2af941a9fb553 100644 --- a/articles/azure-functions/scripts/functions-cli-create-serverless.md +++ b/articles/azure-functions/scripts/functions-cli-create-serverless.md @@ -25,6 +25,10 @@ This sample script creates an Azure Function App, which is a container for your [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + +[!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] + ## Sample script This script creates an Azure Function app using the [consumption plan](../functions-scale.md#consumption-plan). diff --git a/articles/azure-stack/azure-stack-add-users-adfs.md b/articles/azure-stack/azure-stack-add-users-adfs.md index d558a68ce012e..effe539a28eba 100644 --- a/articles/azure-stack/azure-stack-add-users-adfs.md +++ b/articles/azure-stack/azure-stack-add-users-adfs.md @@ -12,19 +12,18 @@ ms.workload: na ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 3/1/2017 +ms.date: 6/1/2017 ms.author: helaw --- # Add users in the Azure Stack POC -To add more users in the POC deployment, you must add them to the Azure Stack POC AD using Microsoft Management Console from the Azure Stack host computer. +To add additional users to the POC deployment, you must add them to the Azure Stack POC directory using Microsoft Management Console from the Azure Stack host computer. 1. On the Azure Stack host computer, open Microsoft Management Console. 2. Click **File > Add or remove snap-in**. 3. Select **Active Directory Users and Computers** > **AzureStack.local** > **Users**. 4. Click **Action** > **New** > **User**. 5. In the New Object – User window, provide and confirm a password -6. To avoid requirements to change the password for the user you just created, uncheck **User must change password at next logon** and check **Password never expires**. -7. Click **Next** to finalize the values and click Finish to create the user. +6. Click **Next** to finalize the values and click Finish to create the user. diff --git a/articles/azure-stack/azure-stack-arm-templates.md b/articles/azure-stack/azure-stack-arm-templates.md index 79f91f3ee86ba..45b904b749f7b 100644 --- a/articles/azure-stack/azure-stack-arm-templates.md +++ b/articles/azure-stack/azure-stack-arm-templates.md @@ -13,22 +13,19 @@ ms.workload: na ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 03/1/2017 +ms.date: 06/1/2017 ms.author: helaw --- # Use Azure Resource Manager templates in Azure Stack -Azure Resource Manager templates deploy and provision all of the resources for your application in a single, coordinated operation. You define the resources for the application and how it will be deployed. You can also redeploy templates to make changes to the resources in the resource group. +Azure Resource Manager templates deploy and provision all the resources for your application in a single, coordinated operation. You can also redeploy templates to make changes to the resources in the resource group. These templates can be deployed with the Microsoft Azure Stack portal, PowerShell, the command line, and Visual Studio. ->[!VIDEO https://channel9.msdn.com/Blogs/azurestack/Microsoft-Azure-Stack-TP1--Foundational-Skills-1-Deploying-JSON-Templates/player] - - -The following templates are available on [GitHub](http://aka.ms/azurestackgithub): +The following quickstart templates are available on [GitHub](http://aka.ms/azurestackgithub): ## Deploy SharePoint (non-high availability) -Use the PowerShell DSC extension to create a SharePoint 2013 farm that includes the following: +Use the PowerShell DSC extension to create a SharePoint 2013 farm that includes the following resources: * A virtual network * Three storage accounts @@ -38,7 +35,7 @@ Use the PowerShell DSC extension to create a SharePoint 2013 farm that includes * One VM configured as a one machine SharePoint 2013 farm ## Deploy AD (non-high availability) -Use the PowerShell DSC extension to create an AD domain controller server that includes the following: +Use the PowerShell DSC extension to create an AD domain controller server that includes the following resources: * A virtual network * One storage account @@ -46,7 +43,7 @@ Use the PowerShell DSC extension to create an AD domain controller server that i * One VM configured as a domain controller for a new forest with a single domain ## Deploy AD/SQL (non-high availability) -Use the PowerShell DSC extension to create a SQL Server 2014 stand-alone server that includes the following: +Use the PowerShell DSC extension to create a SQL Server 2014 stand-alone server that includes the following resources: * A virtual network * Two storage accounts @@ -61,7 +58,7 @@ Use the PowerShell DSC extension to configure an existing virtual machine Local Create a virtual machine from a custom user image. This template also deploys a virtual network (with DNS), public IP address, and a network interface. ## Simple VM -Deploy a simple Windows VM that includes a virtual network (with DNS), public IP address, and a network interface. +Deploy a Windows VM that includes a virtual network (with DNS), public IP address, and a network interface. ## Cancel a running template deployment To cancel a running template deployment, use the `Stop-AzureRmResourceGroupDeployment` PowerShell cmdlet. diff --git a/articles/azure-stack/azure-stack-develop-templates.md b/articles/azure-stack/azure-stack-develop-templates.md index a05e0a3dd4743..e34b2a1eb4e70 100644 --- a/articles/azure-stack/azure-stack-develop-templates.md +++ b/articles/azure-stack/azure-stack-develop-templates.md @@ -13,7 +13,7 @@ ms.workload: na ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 05/23/2016 +ms.date: 06/01/2017 ms.author: helaw --- @@ -21,7 +21,7 @@ ms.author: helaw As you develop your application, it is important to ensure template portability between Azure and Azure Stack. This topic provides considerations for developing Azure Resource Manager [templates](http://download.microsoft.com/download/E/A/4/EA4017B5-F2ED-449A-897E-BD92E42479CE/Getting_Started_With_Azure_Resource_Manager_white_paper_EN_US.pdf), so you can prototype your application and test deployment in Azure without access to an Azure Stack environment. ## Public namespaces -Because Azure Stack is hosted in your datacenter, it has different service endpoint namespaces than the Azure public cloud. As a result, hardcoded public endpoints in Resource Manager templates will fail when you try to deploy them to Azure Stack. Instead, you can use the *reference* and *concatenate* function to dynamically build the service endpoint based on values retrieved from the resource provider during deployment. For example, rather than specifying *blob.core.windows.net* in your template, retrieve the [primaryEndpoints.blob](https://github.com/Azure/AzureStack-QuickStart-Templates/blob/master/101-simple-windows-vm/azuredeploy.json#L201) to dynamically set the *osDisk.URI* endpoint: +Because Azure Stack is hosted in your datacenter, it has different service endpoint namespaces than the Azure public cloud. As a result, hardcoded public endpoints in Resource Manager templates fail when you try to deploy them to Azure Stack. Instead, you can use the *reference* and *concatenate* function to dynamically build the service endpoint based on values retrieved from the resource provider during deployment. For example, rather than specifying *blob.core.windows.net* in your template, retrieve the [primaryEndpoints.blob](https://github.com/Azure/AzureStack-QuickStart-Templates/blob/master/101-simple-windows-vm/azuredeploy.json#L201) to dynamically set the *osDisk.URI* endpoint: "osDisk": {"name": "osdisk","vhd": {"uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2015-06-15').primaryEndpoints.blob, variables('vmStorageAccountContainerName'), @@ -53,7 +53,7 @@ As you build your templates, some functions are not available in Azure Stack TP3 * Take ## Resource location -Resource Manager templates use a location attribute to place resources during deployment. In Azure, locations refer to a region like West US or South America. In Azure Stack, locations are different because Azure Stack is in your datacenter. To ensure templates are transferrable between Azure and Azure Stack, you should reference the resource group location as you deploy individual resources. You can do this using [resourceGroup().Location](https://github.com/Azure/AzureStack-QuickStart-Templates/blob/master/101-simple-windows-vm/azuredeploy.json#L54) to ensure resources inherit the resource group location. The following Resource Manager template excerpt is an example of using this function while deploying a storage account: +Resource Manager templates use a location attribute to place resources during deployment. In Azure, locations refer to a region like West US or South America. In Azure Stack, locations are different because Azure Stack is in your datacenter. To ensure templates are transferrable between Azure and Azure Stack, you should reference the resource group location as you deploy individual resources. You can do this using `[resourceGroup().Location]` to ensure all resources inherit the resource group location. The following Resource Manager template excerpt is an example of using this function while deploying a storage account: "resources": [ { diff --git a/articles/azure-stack/azure-stack-key-features.md b/articles/azure-stack/azure-stack-key-features.md index 92a222022669a..1c801626ae177 100644 --- a/articles/azure-stack/azure-stack-key-features.md +++ b/articles/azure-stack/azure-stack-key-features.md @@ -13,7 +13,7 @@ ms.workload: na ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 3/1/2017 +ms.date: 6/1/2017 ms.author: helaw --- @@ -34,17 +34,17 @@ The primary methods of interacting with Microsoft Azure Stack are the administra The Azure Stack portals are each backed by separate instances of Azure Resource Manager. A cloud administrator uses the administrator portal to manage Azure Stack, and to do things like create tenant offerings. The user portal (also referred to as the tenant portal) provides a self-service experience for consumption of cloud resources, like virtual machines, storage accounts, and Web Apps. For more information, see [Using the Azure Stack administrator and user portals](azure-stack-manage-portals.md). ## Identity -Azure Stack can use either Azure Active Directory (AAD) or Active Directory Federation Services (AD FS) as an identity provider. +Azure Stack uses either Azure Active Directory (AAD) or Active Directory Federation Services (AD FS) as an identity provider. ### Azure Active Directory -Azure Active Directory is Microsoft's cloud-based, multi-tenant identity provider. For most hybrid scenarios, you will use Azure Active Directory as the identity store for Azure Stack POC. +Azure Active Directory is Microsoft's cloud-based, multi-tenant identity provider. Most hybrid scenarios use Azure Active Directory as the identity store. ### Active Directory Federation Services You may choose to use Active Directory Federation Services (AD FS) for disconnected deployments of Azure Stack. Azure Stack, resource providers, and other applications work much the same way with AD FS as they do with Azure Active Directory. Azure Stack includes its own AD FS and Active Directory instance, and an Active Directory Graph API. Azure Stack Technical Preview 3 supports the following AD FS scenarios: - Sign in to the POC deployment by using AD FS. - Create a virtual machine with secrets in Key Vault -- Create a vault to store/access secrets +- Create a vault for storing/accessing secrets - Create custom RBAC roles in subscription - Assign users to RBAC roles on resources - Create system-wide RBAC roles through Azure PowerShell @@ -60,7 +60,7 @@ In Azure Stack, services are delivered to tenants using regions, subscriptions, Example hierarchy of a tenant’s subscriptions to offers, each with varying plans and services. ### Regions -Azure Stack regions are a basic element of scale and management. An organization may have multiple regions with resources available in each region. Regions may also have different service offerings available. In Azure Stack TP3, only a single region is supported, and is automatically named "local". +Azure Stack regions are a basic element of scale and management. An organization may have multiple regions with resources available in each region. Regions may also have different service offerings available. In Azure Stack TP3, only a single region is supported, and is automatically named *local*. ### Services Microsoft Azure Stack enables providers to deliver a wide variety of services and applications, such as virtual machines, SQL Server databases, SharePoint, Exchange, and more. @@ -68,9 +68,9 @@ Microsoft Azure Stack enables providers to deliver a wide variety of services an ### Plans Plans are groupings of one or more services. As a provider, you create plans to offer to your tenants. In turn, your tenants subscribe to your offers to use the plans and services they include. -Each service added to a plan can be configured with quota settings to help you manage your cloud capacity. Quotas can include restrictions such as VM, RAM, and CPU limits and are applied per user subscription. Quotas can be differentiated by location. For example, a plan containing compute services from Region A could have a quota of two virtual machines, 4GB RAM, and 10 CPU cores. +Each service added to a plan can be configured with quota settings to help you manage your cloud capacity. Quotas can include restrictions such as VM, RAM, and CPU limits and are applied per user subscription. Quotas can be differentiated by location. For example, a plan containing compute services from Region A could have a quota of two virtual machines, 4 GB RAM, and 10 CPU cores. -When composing an offer, the service administrator can include **base plans**. These base plans are included by default when a tenant subscribes to that offer. As soon as a user subscribes (and the subscription is created), the user has access to all the resource providers specified in those base plans (with the corresponding quotas). +When creating an offer, the service administrator can include a **base plan**. These base plans are included by default when a tenant subscribes to that offer. When a user subscribes (and the subscription is created), the user has access to all the resource providers specified in those base plans (with the corresponding quotas). The service administrator can also include **add-on plans** in an offer. Add-on plans are not included by default in the subscription. Add-on plans are additional plans (quotas) available in an offer that a subscription owner can add to their subscriptions. @@ -87,17 +87,16 @@ Subscriptions help providers organize and access cloud resources and services. For the administrator, a Default Provider Subscription is created during deployment. This subscription can be used to manage Azure Stack, deploy further resource providers, and create plans and offers for tenants. It should not be used to run customer workloads and applications. ## Azure Resource Manager -By using Azure Resource Manager, you can work with your infrastructure resources in a template-based, declarative model. It provides a single interface that you can use to deploy, manage, and monitor your solution components, such as virtual machines, storage accounts, web apps, and databases. For full information and guidance, see the [Azure Resource Manager overview](../azure-resource-manager/resource-group-overview.md). +By using Azure Resource Manager, you can work with your infrastructure resources in a template-based, declarative model. It provides a single interface that you can use to deploy and manage your solution components. For full information and guidance, see the [Azure Resource Manager overview](../azure-resource-manager/resource-group-overview.md). ### Resource groups Resource groups are collections of resources, services, and applications—and each resource has a type, such as virtual machines, virtual networks, public IPs, storage accounts, and websites. Each resource must be in a resource group and so resource groups help logically organize resources, such as by workload or location. In Microsoft Azure Stack, resources such as plans and offers are also managed in resource groups. - ### Azure Resource Manager templates -With Azure Resource Manager, you can create a simple template (in JSON format) that defines deployment and configuration of your application. This template is known as an Azure Resource Manager template and provides a declarative way to define deployment. By using a template, you can repeatedly deploy your application throughout the app lifecycle and have confidence your resources are deployed in a consistent state. +With Azure Resource Manager, you can create a template (in JSON format) that defines deployment and configuration of your application. This template is known as an Azure Resource Manager template and provides a declarative way to define deployment. By using a template, you can repeatedly deploy your application throughout the app lifecycle and have confidence your resources are deployed in a consistent state. -## Resource providers (RPs)—Network RP, Compute RP, Storage RP -Resource providers are web services that form the foundation for all Azure-based IaaS and PaaS services. Azure Resource Manager relies on different RPs to provide access to a hoster’s services. +## Resource providers (RPs) +Resource providers are web services that form the foundation for all Azure-based IaaS and PaaS services. Azure Resource Manager relies on different RPs to provide access to services. There are four foundational RPs: Network, Storage, Compute and KeyVault. Each of these RPs helps you configure and control its respective resources. Service administrators can also add new custom resource providers. @@ -105,7 +104,7 @@ There are four foundational RPs: Network, Storage, Compute and KeyVault. Each of The Compute Resource Provider (CRP) allows Azure Stack tenants to create their own virtual machines. The CRP includes the ability to create virtual machines as well as Virtual Machine extensions. The Virtual Machine extension service helps provide IaaS capabilities for Windows and Linux virtual machines. As an example, you can use the CRP to provision a Linux virtual machine and run Bash scripts during deployment to configure the VM. ### Network RP -The Network Resource Provider (NRP) delivers a series of Software Defined Networking (SDN) and Network Function Virtualization (NFV) features for the private cloud. You can use the NRP to create software load balancers, public IPs, network security groups, virtual networks, among others. +The Network Resource Provider (NRP) delivers a series of Software Defined Networking (SDN) and Network Function Virtualization (NFV) features for the private cloud. You can use the NRP to create resources like software load balancers, public IPs, network security groups, virtual networks. ### Storage RP The Storage RP delivers four Azure-consistent storage services: blob, table, queue, and account management. It also offers a storage cloud administration service to facilitate service provider administration of Azure-consistent Storage services. Azure Storage provides the flexibility to store and retrieve large amounts of unstructured data, such as documents and media files with Azure Blobs, and structured NoSQL based data with Azure Tables. For more information on Azure Storage, see [Introduction to Microsoft Azure Storage](../storage/storage-introduction.md). @@ -113,7 +112,7 @@ The Storage RP delivers four Azure-consistent storage services: blob, table, que #### Blob storage Blob storage stores any data set. A blob can be any type of text or binary data, such as a document, media file, or application installer. Table storage stores structured datasets. Table storage is a NoSQL key-attribute data store, which allows for rapid development and fast access to large quantities of data. Queue storage provides reliable messaging for workflow processing and for communication between components of cloud services. -Every blob is organized under a container. Containers also provide a useful way to assign security policies to groups of objects. A storage account can contain any number of containers, and a container can contain any number of blobs, up to the 500 TB capacity limit of the storage account. Blob storage offers three types of blobs, block blobs, append blobs, and page blobs (disks). Block blobs are optimized for streaming and storing cloud objects, and are a good choice for storing documents, media files, backups etc. Append blobs are similar to block blobs, but are optimized for append operations. An append blob can be updated only by adding a new block to the end. Append blobs are a good choice for scenarios such as logging, where new data needs to be written only to the end of the blob. Page blobs are optimized for representing IaaS disks and supporting random writes, and may be up to 1 TB in size. An Azure virtual machine network attached IaaS disk is a VHD stored as a page blob. +Every blob is organized under a container. Containers also provide a useful way to assign security policies to groups of objects. A storage account can contain any number of containers, and a container can contain any number of blobs, up to the 500 TB capacity limit of the storage account. Blob storage offers three types of blobs, block blobs, append blobs, and page blobs (disks). Block blobs are optimized for streaming and storing cloud objects, and are a good choice for storing documents, media files, backups etc. Append blobs are similar to block blobs, but are optimized for append operations. An append blob can be updated only by adding a new block to the end. Append blobs are a good choice for scenarios such as logging, where new data needs to be written only to the end of the blob. Page blobs are optimized for representing IaaS disks and supporting random writes, and may be up to 1 TB. An Azure virtual machine network attached IaaS disk is a VHD stored as a page blob. #### Table storage Table storage is Microsoft’s NoSQL key/attribute store – it has a design without schemas, making it different from traditional relational databases. Since data stores lack schemas, it's easy to adapt your data as the needs of your application evolve. Table storage is easy to use, so developers can create applications quickly. Table storage is a key-attribute store, meaning that every value in a table is stored with a typed property name. The property name can be used for filtering and specifying selection criteria. A collection of properties and their values comprise an entity. Since Table storage lack schemas, two entities in the same table can contain different collections of properties, and those properties can be of different types. You can use Table storage to store flexible datasets, such as user data for web applications, address books, device information, and any other type of metadata that your service requires. You can store any number of entities in a table, and a storage account may contain any number of tables, up to the capacity limit of the storage account. @@ -121,13 +120,13 @@ Table storage is Microsoft’s NoSQL key/attribute store – it has a design wit #### Queue Storage Azure Queue storage provides cloud messaging between application components. In designing applications for scale, application components are often decoupled, so that they can scale independently. Queue storage delivers asynchronous messaging for communication between application components, whether they are running in the cloud, on the desktop, on an on-premises server, or on a mobile device. Queue storage also supports managing asynchronous tasks and building process work flows. -## KeyVault +### KeyVault The KeyVault RP provides management and auditing of secrets, such as passwords and certificates. As an example, a tenant can use the KeyVault RP to provide administrator passwords or keys during VM deployment. ## Role Based Access Control (RBAC) You can use RBAC to grant system access to authorized users, groups, and services by assigning them roles at a subscription, resource group, or individual resource level. Each role defines the access level a user, group, or service has over Microsoft Azure Stack resources. -Azure RBAC has three basic roles that apply to all resource types: Owner, Contributor and Reader. Owner has full access to all resources including the right to delegate access to others. Contributor can create and manage all types of Azure resources but can’t grant access to others. Reader can only view existing Azure resources. The rest of the RBAC roles in Azure allow management of specific Azure resources. For instance, the Virtual Machine Contributor role allows creation and management of virtual machines but does not allow management of the virtual network or the subnet that the virtual machine connects to. +Azure RBAC has three basic roles that apply to all resource types: Owner, Contributor, and Reader. Owner has full access to all resources including the right to delegate access to others. Contributor can create and manage all types of Azure resources but can’t grant access to others. Reader can only view existing Azure resources. The rest of the RBAC roles in Azure allow management of specific Azure resources. For instance, the Virtual Machine Contributor role allows creation and management of virtual machines but does not allow management of the virtual network or the subnet that the virtual machine connects to. ## Usage data Microsoft Azure Stack collects and aggregates usage data across all resource providers, and transmits it to Azure for processing by Azure commerce. The usage data collected on Azure Stack can be viewed via a REST API. There is an Azure-consistent Tenant API as well as Provider and Delegated Provider APIs to get usage data across all tenant subscriptions. This data can be used to integrate with an external tool or service for billing or chargeback. Once usage has been processed by Azure commerce, it can be viewed in the Azure billing portal. diff --git a/articles/azure-stack/azure-stack-validate-templates.md b/articles/azure-stack/azure-stack-validate-templates.md index db732c7254ef4..29e55e03fca1f 100644 --- a/articles/azure-stack/azure-stack-validate-templates.md +++ b/articles/azure-stack/azure-stack-validate-templates.md @@ -13,7 +13,7 @@ ms.workload: na ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 05/23/2016 +ms.date: 06/01/2017 ms.author: helaw --- @@ -21,11 +21,11 @@ ms.author: helaw # Check your templates for Azure Stack with Template Validator You can use the template validation tool to check if your Azure Resource Manager [templates](azure-stack-arm-templates.md) work with Azure Stack. The template validation tool is available as a part of the Azure Stack tools. Download the Azure Stack tools by using the steps described in the [download tools from GitHub](azure-stack-powershell-download.md) article. -To validate templates, you will use the following PowerShell modules and the JSON file located in **TemplateValidator** and **CloudCapabilities** folders: +To validate templates, you use the following PowerShell modules and the JSON file located in **TemplateValidator** and **CloudCapabilities** folders: - AzureRM.CloudCapabilities.psm1 creates a cloud capabilities JSON file representing the services and versions in a cloud like Azure Stack. - AzureRM.TemplateValidator.psm1 uses a cloud capabilities JSON file to test templates for deployment in Azure Stack. - - AzureStackCapabilities_TP2.json is a default cloud capabilities file. You can create your own, or use this file to get started. + - AzureStackCapabilities_TP3.json is a default cloud capabilities file. You can create your own, or use this file to get started. In this topic, you run validation against your templates, and optionally build a cloud capabilities file. @@ -72,7 +72,7 @@ test-AzureRMTemplate -TemplatePath C:\AzureStack-Quickstart-Templates` ``` ## Build cloud capabilities file -The downloaded files include a default AzureStackCapabilities_TP2.json file, which describes the service versions available in a default installation of Azure Stack TP2. As you install additional Resource Providers, you can use the AzureRM.CloudCapabilities PowerShell module to build a JSON file including the new services. +The downloaded files include a default AzureStackCapabilities_TP3.json file, which describes the service versions available in a default installation of Azure Stack TP3. As you install additional Resource Providers, you can use the AzureRM.CloudCapabilities PowerShell module to build a JSON file including the new services. 1. Make sure you have connectivity to Azure Stack. These steps can be performed from [MAS-CON01](azure-stack-connect-azure-stack.md#connect-with-remote-desktop), or you can use [VPN](azure-stack-connect-azure-stack.md#connect-with-vpn) to connect from your workstation. 2. Import the AzureRM.CloudCapabilities PowerShell module: diff --git a/articles/cognitive-services/Speech/Home.md b/articles/cognitive-services/Speech/Home.md index a3d738570dcf2..0cadf17816f7a 100644 --- a/articles/cognitive-services/Speech/Home.md +++ b/articles/cognitive-services/Speech/Home.md @@ -11,58 +11,54 @@ ms.topic: article ms.date: 02/28/2017 ms.author: prrajan --- -# Bing speech API overview -Welcome to Speech Service – Microsoft’s speech recognition and text to speech cloud offering which helps users to voice-enable their applications and bring in a delightful conversational experience. +# Bing Speech API overview +Microsoft’s *Speech to Text* and *Text to Speech* cloud offerings help you put speech to work in your application. Microsoft's +Speech APIs can transcribe speech *to* text and can generate speech *from* text. These +APIs enable you to create powerful experiences that delight your users. -Microsoft Speech Service has two APIs: -* [Speech to Text API](#speech-to-text-speech-recognition): - Using REST API : For apps converting short spoken commands (up to 15 seconds) to text without real-time streaming or user feedback. - Using WebSocket API : For apps converting long audio (up to 10 minutes) to text with intermediate results. -* [Text to Speech API](#text-to-speech-speech-synthesis) - For apps requiring the functionality of converting text into audio that can be played back to the user. +* **Speech to Text** APIs convert human speech to text that can be used as input or commands to control your application. +* **Text to Speech** APIs convert text to audio streams that can be played back to the user of your application. -## Speech to Text (STT) -Microsoft's Speech Service *transcribes* audio streams into text suitable for display to a user. Transcription includes adding appropriate capitalization and punctuation, masking profanity, and normalizing text. For example, if a user says `remind me to buy six pencils`, Microsoft's Speech Services will return the transcribed text `Remind me to buy 6 pencils.` -There are two options for adding speech recognition capabilities to your app: -* The REST API uses chunked-transfer encoding to convert short spoken commands without real-time streaming or user feedback. -* The WebSocket API uses full-duplex communication to convert longer audio input and supports intermediate results. -Use this comparison chart to help you choose the API that fits your needs. +## Speech to text (speech recognition) +The *Speech to Text* APIs *transcribe* audio streams into text that your application can display to the user or act upon as command input. The *Speech To Text* APIs come in two flavors. -### Speech recognition modes -The API supports multiple types of speech input depending on speaking style. Choosing the most suitable style you expect produces better recognition results: - -| Mode | Description | -|---|---| -| Interactive | A user makes short requests and expects the application to perform an action in response. | -| Dictation | Users are engaged in a human-to-human conversation. | -| Conversation | The user recites longer utterances to the application for further processing. | +* A REST API, useful for apps that need to convert short spoken commands to text but do not need simultaneous user feedback. The REST API uses +[HTTP chunked-transfer encoding](https://en.wikipedia.org/wiki/Chunked_transfer_encoding) to send the audio bytes to the service. +* A [WebSocket](https://en.wikipedia.org/wiki/WebSocket) API, useful for apps need an +improved user experience by using the power of the full-duplex WebSocket connection. Apps using this API +get access to advanced features like speech recognition hypotheses. This API choice is also better for apps that need to transcribe longer audio passages. -Refer to [Recognition Modes](api-reference-rest/bingvoicerecognition.md#recognition-modes) in API reference for more information. +Both *Speech to Text* APIs enrich the transcribed text by adding capitalization and punctuation, masking profanity, and text normalization. -### Quick feature comparison -Here is a quick comparison of features between the REST and WebSocket APIs for speech recognition. +### Comparing API options for speech recognition | Feature | WebSocket API | REST API | |-----|-----|-----| -| Continuous Recognition | Yes | No | -| Audio Length | 10 mins | 15 seconds | -| Partial results | Yes | No | -| Service Endpointing | Yes| No | -| Recognition Modes | Interactive, Dictation, Conversational| Interactive, Dictation, Conversational | -| Debug support with Telemetry | Yes | No | -| Subscription Key Authorization | Yes | No | -| Reco Results | Lexical, ITN, Masked | Lexical, ITN, Masked | -| N-Best | Up to 5 | Up to 5 | -| Confidence | Yes| Yes | +| Speech hypotheses | Yes | No | +| Continuous recognition | Yes | No | +| Maximum audio input | 10 minutes of audio | 15 seconds of audio | +| Service detects when speech ends | Yes| No | +| Subscription key authorization | Yes | No | -Refer to [Output Format](api-reference-rest/bingvoicerecognition.md#output-format) in API reference for more information. +### Speech recognition modes +Microsoft's *Speech to Text* APIs support multiple modes of speech recognition. Choose the mode that produces the best recognition results for your application. + +| Mode | Description | +|---|---| +| *interactive* | "Command and control" recognition for interactive user application scenarios. Users speak short phrases intended as commands to an application. | +| *dictation* | Continuous recognition for dictation scenarios. Users speak longer sentences that are displayed as text. Users adopt a more formal speaking style. | +| *conversation* | Continuous recognition for transcribing conversations between humans. Users adopt a less formal speaking style and may alternate between longer sentences and shorter phrases. | -## Supported languages -Speech recognition API supports many spoken languages in multiple dialects. Refer to [Recognition Languages](api-reference-rest/bingvoicerecognition.md#recognition-languages) for full list of supported languages for each recognition mode. +For more information, see [Recognition Modes](api-reference-rest/bingvoicerecognition.md#recognition-modes) in the API reference. -## Text to speech (TTS) -The speech synthesis REST API provides real-time text to speech conversion in a variety of different voices and languages. The maximum amount of audio returned for any single request must not exceed 15 seconds. +### Speech recognition supported languages +The *Speech to Text* APIs support many spoken languages in multiple dialects. For the full list of supported languages in +each recognition mode, see [Recognition Languages](api-reference-rest/bingvoicerecognition.md#recognition-languages). -### Supported languages -Text to speech API supports many voices in many languages in multiple dialects. Refer to [Supported Locales and Voice Fonts](api-reference-rest/bingvoiceoutput.md#a-namesuplocalesasupported-locales-and-voice-fonts) for full list of supported languages and voices. +## Text to speech (speech synthesis) +*Text to Speech* APIs use REST to convert structured text to an audio stream. The APIs provide fast text to speech +conversion in various voices and languages. For the full list of supported languages and voices, see +[Supported Locales and Voice Fonts](api-reference-rest/bingvoiceoutput.md#a-namesuplocalesasupported-locales-and-voice-fonts). +### Text to speech API +The maximum amount of audio returned for any single request is 15 seconds. diff --git a/articles/cognitive-services/custom-decision-service/custom-decision-service-api-reference.md b/articles/cognitive-services/custom-decision-service/custom-decision-service-api-reference.md index f5a6a3babdeaf..87a547ba51a7c 100644 --- a/articles/cognitive-services/custom-decision-service/custom-decision-service-api-reference.md +++ b/articles/cognitive-services/custom-decision-service/custom-decision-service-api-reference.md @@ -8,7 +8,7 @@ manager: slivkins ms.service: cognitive-services ms.topic: article ms.date: 05/03/2017 -ms.author: slivkins +ms.author: slivkins;marcozo;alekh --- # Custom Decision Service API reference @@ -181,5 +181,4 @@ Other elements inside an `` are ignored. The Atom feed version uses the same XML syntax and conventions. > [!TIP] -> If your system uses its own article IDs, they can be passed into the callback function by using ``. - +> If your system uses its own article IDs, they can be passed into the callback function by using ``. \ No newline at end of file diff --git a/articles/cognitive-services/custom-decision-service/custom-decision-service-get-started-app.md b/articles/cognitive-services/custom-decision-service/custom-decision-service-get-started-app.md index 1e755c8e47da2..48334a1500967 100644 --- a/articles/cognitive-services/custom-decision-service/custom-decision-service-get-started-app.md +++ b/articles/cognitive-services/custom-decision-service/custom-decision-service-get-started-app.md @@ -1,5 +1,5 @@ --- -title: Azure Custom Decision Service get started (server) | Microsoft Docs +title: Azure Custom Decision Service get started (app) | Microsoft Docs description: How to get started with Azure Custom Decision Service if you call the APIs from a smartphone app. services: cognitive-services author: slivkins @@ -7,35 +7,17 @@ manager: slivkins ms.service: cognitive-services ms.topic: article -ms.date: 05/03/2017 -ms.author: slivkins +ms.date: 06/02/2017 +ms.author: slivkins;marcozo;alekh --- # Get started with Custom Decision Service (app version) -This article explains how to get started with some basic options. The example here is for when you want to make calls to the Azure Custom Decision Service APIs from a smartphone app. +This article explains how to get started with some basic options. The example here is for when you want to make calls to the Azure Custom Decision Service APIs from a smartphone app. -## Register a new app on the portal +Register your application, as explained [here](custom-decision-service-get-started-register.md). -1. To use Custom Decision Service for your application, register it on the portal. On the ribbon, click **My Portal**, as highlighted in the image: - - ![Custom Decision Service home page](./media/custom-decision-service-get-started-app/home.png) - - If you are not already signed in, the portal prompts you to sign in with your [Microsoft account](https://account.microsoft.com/account). After you have signed in, the portal displays your Microsoft account in the upper-right corner of the page. - -2. To register your application, click the **New App** button. In this example, you register an application in the **pooled learning mode** as described in the [overview](custom-decision-service-overview.md#pooled-learning-mode). - -3. In the dialog box, choose an identifier for your application. Custom Decision Service requires a unique ID for each application. If someone else has already taken this ID, the system asks you to pick a different ID. - - ![Custom Decision Service portal](./media/custom-decision-service-get-started-app/portal.png) - -4. Specify an Action Set API. This setting is an RSS or Atom feed that communicates the available content for your application to Custom Decision Service. Enter a name for the feed, and enter the URL from which it is served. To do this step later, click the **Feeds** button and then click the **New feed** button. An example that creates an RSS feed is described later. - -5. To register your application in the [application-specific learning mode](custom-decision-service-overview.md#application-specific-learning-mode), select the **Advanced** check box in the lower-left corner. Enter a [connection string](../../storage/storage-configure-connection-string.md) for the Azure storage account where your application data is logged. For more information on how to create a storage account, see [How to create, manage, or delete a storage account](../../storage/storage-create-storage-account.md). - -## Use the APIs - -The APIs are fairly easy to use. (See the API reference for additional options and features.) There are two API calls you make from your smartphone app to Custom Decision Service: a call to the Ranking API to obtain a ranked list of your content and a call to the Reward API to report a reward. Here we provide the sample calls in [cURL](https://en.wikipedia.org/wiki/CURL). +The APIs are fairly easy to use. (See the [API reference](custom-decision-service-api-reference.md) for additional options and features.) There are two API calls you make from your smartphone app to Custom Decision Service: a call to the Ranking API to obtain a ranked list of your content and a call to the Reward API to report a reward. Here we provide the sample calls in [cURL](https://en.wikipedia.org/wiki/CURL). We start with the call to the Ranking API. Create the file ``, which contains the action set ID. This ID is the name of the corresponding RSS or Atom feed that you entered on the portal: @@ -94,3 +76,8 @@ Finally, you need to provide the Action Set API, which returns the list of artic ``` Here each top-level `` element describes an article. `` is mandatory and is used as an action ID by Custom Decision Service. Specify `` (in a standard RSS format) if you have more than 15 articles. The 15 most recent articles are used. `` is optional and is used to create text-related features for the article. + +## Next steps + +* Work through a [tutorial](custom-decision-service-tutorial.md) for a more in-depth example. +* Consult the [API reference](custom-decision-service-api-reference.md) to learn more about the provided functionality. \ No newline at end of file diff --git a/articles/cognitive-services/custom-decision-service/custom-decision-service-get-started-browser.md b/articles/cognitive-services/custom-decision-service/custom-decision-service-get-started-browser.md index 35a4b99715368..4acde6f4c51db 100644 --- a/articles/cognitive-services/custom-decision-service/custom-decision-service-get-started-browser.md +++ b/articles/cognitive-services/custom-decision-service/custom-decision-service-get-started-browser.md @@ -7,35 +7,17 @@ manager: slivkins ms.service: cognitive-services ms.topic: article -ms.date: 05/03/2017 -ms.author: slivkins +ms.date: 06/02/2017 +ms.author: slivkins,marcozo,alekh --- # Get started with Custom Decision Service (browser version) This article explains how to get started with some basic options. The example here is for when you want to make calls to the Azure Custom Decision Service APIs directly from a browser. -## Register a new app on the portal +Register your application, as explained [here](custom-decision-service-get-started-register.md). -1. To use Custom Decision Service for your application, register it on the portal. On the ribbon, click **My Portal**, as highlighted in the image: - - ![Custom Decision Service home page](./media/custom-decision-service-get-started-browser/home.png) - - If you are not already signed in, the portal prompts you to sign in with your [Microsoft account](https://account.microsoft.com/account). After you have signed in, the portal displays your Microsoft account in the upper-right corner of the page. - -2. To register your application, click the **New App** button. In this example, you register an application in the **pooled learning mode** as described in the [overview](custom-decision-service-overview.md#pooled-learning-mode). - - ![Custom Decision Service portal](./media/custom-decision-service-get-started-browser/portal.png) - -3. In the dialog box, choose an identifier for your application. Custom Decision Service requires a unique ID for each application. If someone else has already taken this ID, the system asks you to pick a different ID. - -4. Specify an Action Set API. This setting is an RSS or Atom feed that communicates the available content for your application to Custom Decision Service. Enter a name for the feed, and enter the URL from which it is served. To do this step later, click the **Feeds** button and then click the **New Feed** button. An example that creates an RSS feed is described later. - -5. To register your application in the [application-specific learning mode](custom-decision-service-overview.md#application-specific-learning-mode), select the **Advanced** check box in the lower-left corner. Enter a [connection string](../../storage/storage-configure-connection-string.md) for the Azure storage account where your application data is logged. For more information on how to create a storage account, see [How to create, manage, or delete a storage account](../../storage/storage-create-storage-account.md). - -## Use the APIs - -The APIs are fairly easy to use. (See the API reference for additional options and features.) Your application is modeled as having a front page, which links to several article pages. The front page uses Custom Decision Service to specify the ordering of the article pages. Insert the following code into the HTML head of the front page: +The APIs are fairly easy to use. (See the [API reference](custom-decision-service-api-reference.md) for additional options and features.) Your application is modeled as having a front page, which links to several article pages. The front page uses Custom Decision Service to specify the ordering of the article pages. Insert the following code into the HTML head of the front page: ```html // Define the "callback function" to render UI @@ -77,3 +59,8 @@ Finally, you need to provide the Action Set API, which returns the list of artic ``` Here each top-level `<item>` element describes an article. `<link>` is mandatory and is used as an action ID by Custom Decision Service. Specify `<date>` (in a standard RSS format) if you have more than 15 articles. The 15 most recent articles are used. `<title>` is optional and is used to create text-related features for the article. + +## Next steps + +* Work through a [tutorial](custom-decision-service-tutorial.md) for a more in-depth example. +* Consult the [API reference](custom-decision-service-api-reference.md) to learn more about the provided functionality. \ No newline at end of file diff --git a/articles/cognitive-services/custom-decision-service/custom-decision-service-get-started-register.md b/articles/cognitive-services/custom-decision-service/custom-decision-service-get-started-register.md new file mode 100644 index 0000000000000..46b0e958536ec --- /dev/null +++ b/articles/cognitive-services/custom-decision-service/custom-decision-service-get-started-register.md @@ -0,0 +1,38 @@ +--- +title: Register your app with Azure Custom Decision Service | Microsoft Docs +description: A step-by-step guide for how to register a new app with Azure Custom Decision Service +services: cognitive-services +author: slivkins +manager: slivkins + +ms.service: cognitive-services +ms.topic: article +ms.date: 06/02/2017 +ms.author: slivkins;marcozo;alekh +--- + +# Register your app with Custom Decision Service + +To use Custom Decision Service for your application, register it on the portal. This article explains how. + +1. Go to the [front page](https://ds.microsoft.com/) of Custom Decision Service. On the ribbon, click **My Portal**, as highlighted in the image: + + ![Custom Decision Service home page](./media/custom-decision-service-get-started-app/home.png) + + If you are not already signed in, the portal prompts you to sign in with your [Microsoft account](https://account.microsoft.com/account). After you have signed in, the portal displays your Microsoft account in the upper-right corner of the page. + +2. To register your application, click the **New App** button. In this example, you register an application in the **pooled learning mode** as described in the [overview](custom-decision-service-overview.md#pooled-learning-mode). + +3. In the dialog box, choose an identifier for your application. Custom Decision Service requires a unique ID for each application. If someone else has already taken this ID, the system asks you to pick a different ID. + + ![Custom Decision Service portal](./media/custom-decision-service-get-started-app/portal.png) + +4. Specify an Action Set API. This setting is an RSS or Atom feed that communicates the available content for your application to Custom Decision Service. Enter a name for the feed, and enter the URL from which it is served. To do this step later, click the **Feeds** button and then click the **New feed** button. An example that creates an RSS feed is described later. + +5. To register your application in the [application-specific learning mode](custom-decision-service-overview.md#application-specific-learning-mode), select the **Custom App** check box in the lower-left corner. Enter a [connection string](../../storage/storage-configure-connection-string.md) for the Azure storage account where your application data is logged. For more information on how to create a storage account, see [How to create, manage, or delete a storage account](../../storage/storage-create-storage-account.md). + +## Next steps + +* Get started to optimize [a webpage](custom-decision-service-get-started-browser.md) or [a smartphone app](custom-decision-service-get-started-app.md). +* Work through a [tutorial](custom-decision-service-tutorial.md) for a more in-depth example. +* Consult the [API reference](custom-decision-service-api-reference.md) to learn more about the provided functionality. \ No newline at end of file diff --git a/articles/cognitive-services/custom-decision-service/custom-decision-service-overview.md b/articles/cognitive-services/custom-decision-service/custom-decision-service-overview.md index 2f0071eea1120..40ba5a5b0a959 100644 --- a/articles/cognitive-services/custom-decision-service/custom-decision-service-overview.md +++ b/articles/cognitive-services/custom-decision-service/custom-decision-service-overview.md @@ -7,8 +7,8 @@ manager: slivkins ms.service: cognitive-services ms.topic: article -ms.date: 05/03/2017 -ms.author: alekha;slivkins +ms.date: 06/02/2017 +ms.author: slivkins;marcozo;alekh --- # Custom Decision Service @@ -73,5 +73,6 @@ Several terms frequently occur in our documentation: ## Next steps -* Get started with Custom Decision Service to optimize [a webpage](custom-decision-service-get-started-browser.md) or [a smartphone app](custom-decision-service-get-started-app.md). +* [Register your application](custom-decision-service-get-started-register.md) with Custom Decision Service +* Get started to optimize [a webpage](custom-decision-service-get-started-browser.md) or [a smartphone app](custom-decision-service-get-started-app.md). * Consult the [API reference](custom-decision-service-api-reference.md) to learn more about the provided functionality. \ No newline at end of file diff --git a/articles/cognitive-services/custom-decision-service/custom-decision-service-tutorial.md b/articles/cognitive-services/custom-decision-service/custom-decision-service-tutorial.md index f221f530ead65..612ad8b874daf 100644 --- a/articles/cognitive-services/custom-decision-service/custom-decision-service-tutorial.md +++ b/articles/cognitive-services/custom-decision-service/custom-decision-service-tutorial.md @@ -8,7 +8,7 @@ manager: slivkins ms.service: cognitive-services ms.topic: article ms.date: 05/04/2017 -ms.author: slivkins +ms.author: slivkins;marcozo;alekh --- # Tutorial for Custom Decision Service @@ -47,7 +47,7 @@ For more information on the feed format, see the [API reference](custom-decision 1. Sign in with your [Microsoft account](https://account.microsoft.com/account). On the ribbon, click **My Portal**. -2. To register a new application, click the **New App** button. +2. To register a new application, click the **New App** button. ![Custom Decision Service portal](./media/custom-decision-service-tutorial/portal.png) @@ -153,3 +153,7 @@ The Y axis corresponds to rewards. Currently, a ranking is assigned reward 1 if We also provide upper and lower confidence bounds for our counterfactual estimates. To see the upper and lower bounds, select the **bounds** check box in the upper-right corner. ![Dashboard with confidence bounds](./media/custom-decision-service-tutorial/dashboard-with-bounds.png) + +## Next steps + +* Consult the [API reference](custom-decision-service-api-reference.md) to learn more about the provided functionality. \ No newline at end of file diff --git a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/apps-dashboard-link.png b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/apps-dashboard-link.png index 70077c2738372..a93e3e8f3804d 100644 Binary files a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/apps-dashboard-link.png and b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/apps-dashboard-link.png differ diff --git a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/apps.png b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/apps.png index e380d4d9f30c6..33b0d4f05caea 100644 Binary files a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/apps.png and b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/apps.png differ diff --git a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/dashboard-with-bounds.png b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/dashboard-with-bounds.png index 51a6b09d408f0..22f305568639e 100644 Binary files a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/dashboard-with-bounds.png and b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/dashboard-with-bounds.png differ diff --git a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/dashboard.png b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/dashboard.png index 3568d872ff9bc..6fe4659afead3 100644 Binary files a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/dashboard.png and b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/dashboard.png differ diff --git a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/feeds.png b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/feeds.png index 2a3bcab3d2f00..09107ac5f15a3 100644 Binary files a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/feeds.png and b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/feeds.png differ diff --git a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/new-app-dialog.png b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/new-app-dialog.png index dbc062157eb8c..70c1bfa9a2739 100644 Binary files a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/new-app-dialog.png and b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/new-app-dialog.png differ diff --git a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/new-feed-dialog.png b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/new-feed-dialog.png index 96e5b1ffaade0..719200417156d 100644 Binary files a/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/new-feed-dialog.png and b/articles/cognitive-services/custom-decision-service/media/custom-decision-service-tutorial/new-feed-dialog.png differ diff --git a/articles/cognitive-services/custom-decision-service/toc.yml b/articles/cognitive-services/custom-decision-service/toc.yml index 7450fdbe84f46..e6d8d1f8b45ec 100644 --- a/articles/cognitive-services/custom-decision-service/toc.yml +++ b/articles/cognitive-services/custom-decision-service/toc.yml @@ -4,6 +4,8 @@ href: custom-decision-service-overview.md - name: Get started items: + - name: Register your application + href: custom-decision-service-get-started-register.md - name: Call API from a browser href: custom-decision-service-get-started-browser.md - name: Call API from an app diff --git a/articles/cosmos-db/create-graph-nodejs.md b/articles/cosmos-db/create-graph-nodejs.md index cd97b937c68d3..cc2837fced588 100644 --- a/articles/cosmos-db/create-graph-nodejs.md +++ b/articles/cosmos-db/create-graph-nodejs.md @@ -1,5 +1,5 @@ --- -title: Build an Azure Cosmos DB Node.js application using the Graph API | Microsoft Docs +title: Build an Azure Cosmos DB Node.js application by using Graph API | Microsoft Docs description: Presents a Node.js code sample you can use to connect to and query Azure Cosmos DB services: cosmos-db documentationcenter: '' @@ -18,21 +18,21 @@ ms.date: 05/21/2017 ms.author: arramac --- -# Azure Cosmos DB: Build a Node.js application using the Graph API +# Azure Cosmos DB: Build a Node.js application by using Graph API -Azure Cosmos DB is Microsoft’s globally distributed multi-model database service. You can quickly create and query document, key/value, and graph databases, all of which benefit from the global distribution and horizontal scale capabilities at the core of Azure Cosmos DB. +Azure Cosmos DB is the globally distributed multi-model database service from Microsoft. You can quickly create and query document, key/value, and graph databases, all of which benefit from the global distribution and horizontal scale capabilities at the core of Azure Cosmos DB. -This quick start demonstrates how to create an Azure Cosmos DB account for Graph API (preview), database, and graph using the Azure portal. You then build and run a console app using the OSS [Gremlin Node.js](https://www.npmjs.com/package/gremlin-secure) driver. +This quick-start article demonstrates how to create an Azure Cosmos DB account for Graph API (preview), database, and graph by using the Azure portal. You then build and run a console app by using the open-source [Gremlin Node.js](https://www.npmjs.com/package/gremlin-secure) driver. > [!NOTE] -> The NPM module `gremlin-secure` is a modified version of `gremlin` module, with support for SSL and SASL required for connecting with Azure Cosmos DB. Source code is available on [Github](https://github.com/CosmosDB/gremlin-javascript). +> The npm module `gremlin-secure` is a modified version of `gremlin` module, with support for SSL and SASL required for connecting with Azure Cosmos DB. Source code is available on [GitHub](https://github.com/CosmosDB/gremlin-javascript). > ## Prerequisites -* Before you can run this sample, you must have the following prerequisites: - * [Node.js](https://nodejs.org/en/) version v0.10.29 or higher - * [Git](http://git-scm.com/) +Before you can run this sample, you must have the following prerequisites: +* [Node.js](https://nodejs.org/en/) version v0.10.29 or later +* [Git](http://git-scm.com/) [!INCLUDE [quickstarts-free-trial-note](../../includes/quickstarts-free-trial-note.md)] @@ -46,9 +46,9 @@ This quick start demonstrates how to create an Azure Cosmos DB account for Graph ## Clone the sample application -Now let's clone a Graph API app from github, set the connection string, and run it. You'll see how easy it is to work with data programmatically. +Now let's clone a Graph API app from GitHub, set the connection string, and run it. You'll see how easy it is to work with data programmatically. -1. Open a git terminal window, such as git bash, and `cd` to a working directory. +1. Open a Git terminal window, such as Git Bash, and change (via `cd` command) to a working directory. 2. Run the following command to clone the sample repository. @@ -56,11 +56,11 @@ Now let's clone a Graph API app from github, set the connection string, and run git clone https://github.com/Azure-Samples/azure-cosmos-db-graph-nodejs-getting-started.git ``` -3. Then open the solution file in Visual Studio. +3. Open the solution file in Visual Studio. ## Review the code -Let's make a quick review of what's happening in the app. Open the `app.js` file and you'll find that these lines of code. +Let's make a quick review of what's happening in the app. Open the `app.js` file, and you'll find the following lines of code. * The Gremlin client is created. @@ -76,9 +76,9 @@ Let's make a quick review of what's happening in the app. Open the `app.js` file }); ``` -The configurations are all in `config.js`, which we edit in the following section. + The configurations are all in `config.js`, which we edit in the following section. -* A series of Gremlin steps are executed using the `client.execute` method. +* A series of Gremlin steps are executed with the `client.execute` method. ```nodejs console.log('Running Count'); @@ -91,17 +91,17 @@ The configurations are all in `config.js`, which we edit in the following sectio ## Update your connection string -Now go back to the Azure portal to get your connection string information and copy it into the app. +Now go back to the Azure portal to get your connection string information, and copy it into the app. -1. In the [Azure portal](http://portal.azure.com/), in your Azure Cosmos DB account, in the left navigation click **Keys**, and then click **Read-write Keys**. You use the copy buttons on the right side of the screen to copy the URI and Primary Key into the `app.js` file in the next step. +1. In the [Azure portal](http://portal.azure.com/), in your Azure Cosmos DB account, on the left navigation menu, click **Keys**, and then click **Read-write Keys**. You use the copy buttons at the right to copy the URI and primary key into the `app.js` file in the next step. - ![View and copy an access key in the Azure portal, Keys blade](./media/create-documentdb-dotnet/keys.png) + ![The Azure portal Keys blade](./media/create-documentdb-dotnet/keys.png) -2. Copy your Gremlin URI value from the portal (using the copy button) and make it the value of `config.endpoint` key in config.js. The Gremlin endpoint must be only the host name without protocol/port number like `mygraphdb.graphs.azure.com` (NOT `https://mygraphdb.graphs.azure.com` or `mygraphdb.graphs.azure.com:433`). +2. Copy your Gremlin URI value from the portal (using the copy button) and make it the value of `config.endpoint` key in config.js. The Gremlin endpoint must be only the host name without the protocol/port number, like `mygraphdb.graphs.azure.com` (not `https://mygraphdb.graphs.azure.com` or `mygraphdb.graphs.azure.com:433`). `config.endpoint = "GRAPHENDPOINT";` -3. Then copy your PRIMARY KEY value from the portal and make it the value of config.primaryKey in config.js. You've now updated your app with all the info it needs to communicate with Azure Cosmos DB. +3. Copy your primary key value from the portal and make it the value of config.primaryKey in config.js. You've now updated your app with all the info it needs to communicate with Azure Cosmos DB. `config.primaryKey = "PRIMARYKEY";` @@ -123,36 +123,34 @@ module.exports = config; ## Run the console app -1. Open a terminal window and `cd` to a the installation directory for the package.json file included in the project. +1. Open a terminal window and change (via `cd` command) to the installation directory for the package.json file that's included in the project. -2. Run `npm install` to install required npm modules. This includes `gremlin-secure`. +2. Run `npm install` to install the required npm modules, including `gremlin-secure`. 3. Run `node app.js` in a terminal to start your node application. -You can now go back to Data Explorer and see query, modify, and work with this new data. +## Browse with Data Explorer -## Browse using the Data Explorer +You can now go back to Data Explorer in the Azure portal to view, query, modify, and work with your new graph data. -You can now go back to Data Explorer in the Azure portal and browse and query your new graph data. +In Data Explorer, the new database appears in the **Collections** pane. Expand **graphdb**, **graphcoll**, and then click **Graph**. -* In Data Explorer, the new database appears in the Collections pane. Expand **graphdb**, **graphcoll**, and then click **Graph**. - - The data generated by the sample app is displayed in the Graphs pane. +The data generated by the sample app is displayed in the **Graphs** pane. ## Review SLAs in the Azure portal [!INCLUDE [cosmosdb-tutorial-review-slas](../../includes/cosmos-db-tutorial-review-slas.md)] -## Clean up resources +## Clean up your resources -If you're not going to continue to use this app, delete all resources created by this quickstart in the Azure portal with the following steps: +If you do not plan to continue using this app, delete all resources that you created in this article by doing the following: -1. From the left-hand menu in the Azure portal, click **Resource groups** and then click the name of the resource you created. -2. On your resource group page, click **Delete**, type the name of the resource to delete in the text box, and then click **Delete**. +1. In the Azure portal, on the left navigation menu, click **Resource groups**, and then click the name of the resource that you created. +2. On your resource group page, click **Delete**, type the name of the resource to be deleted, and then click **Delete**. ## Next steps -In this quickstart, you've learned how to create an Azure Cosmos DB account, create a graph using the Data Explorer, and run an app. You can now build more complex queries and implement powerful graph traversal logic using Gremlin. +In this article, you've learned how to create an Azure Cosmos DB account, create a graph by using Data Explorer, and run an app. You can now build more complex queries and implement powerful graph traversal logic by using Gremlin. > [!div class="nextstepaction"] -> [Query using Gremlin](tutorial-query-graph.md) \ No newline at end of file +> [Query using Gremlin](tutorial-query-graph.md) diff --git a/articles/cosmos-db/documentdb-sdk-dotnet.md b/articles/cosmos-db/documentdb-sdk-dotnet.md index aa1e131e90304..b9c144457008e 100644 --- a/articles/cosmos-db/documentdb-sdk-dotnet.md +++ b/articles/cosmos-db/documentdb-sdk-dotnet.md @@ -60,7 +60,7 @@ ms.custom: H1Hack27Feb2017 * Made some performance improvements in the SDK. ### <a name="1.13.4"/>1.13.4 -* Functionally same as 1.13.4. Made some internal changes. +* Functionally same as 1.13.3. Made some internal changes. ### <a name="1.13.3"/>1.13.3 * Functionally same as 1.13.2. Made some internal changes. diff --git a/articles/data-catalog/TOC.md b/articles/data-catalog/TOC.md index ff3a9c454412b..752c642792144 100644 --- a/articles/data-catalog/TOC.md +++ b/articles/data-catalog/TOC.md @@ -23,6 +23,7 @@ # Reference ## [REST](/rest/api/datacatalog/) +## [Search syntax reference](/rest/api/datacatalog/data-catalog-search-syntax-reference) ## [Developer concepts](data-catalog-developer-concepts.md) ## [Developer samples](data-catalog-samples.md) diff --git a/articles/data-factory/data-factory-monitor-manage-app.md b/articles/data-factory/data-factory-monitor-manage-app.md index 258bb54d96875..cbba6c7bf9d63 100644 --- a/articles/data-factory/data-factory-monitor-manage-app.md +++ b/articles/data-factory/data-factory-monitor-manage-app.md @@ -13,7 +13,7 @@ ms.workload: data-services ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 02/21/2017 +ms.date: 05/18/2017 ms.author: spelluru --- @@ -24,14 +24,16 @@ ms.author: spelluru > > -This article describes how to use the Monitoring and Management app to monitor, manage, and debug your Azure Data Factory pipelines--and create alerts to get notified on failures. You can also watch the following video to learn about using the Monitoring and Management app. +This article describes how to use the Monitoring and Management app to monitor, manage, and debug your Data Factory pipelines. It also provides information on how to create alerts to get notified on failures. You can get started with using the application by watching the following video: + +> [!NOTE] +> The user interface shown in the video may not exactly match what you see in the portal. It's slightly older, but concepts remain the same. > [!VIDEO https://channel9.msdn.com/Shows/Azure-Friday/Azure-Data-Factory-Monitoring-and-Managing-Big-Data-Piplines/player] > -> -## Open the Monitoring and Management app -To open the Monitor and Management app, click the **Monitor & Manage** tile on the **Data Factory** blade for your data factory. +## Launch the Monitoring and Management app +To launch the Monitor and Management app, click the **Monitor & Manage** tile on the **Data Factory** blade for your data factory. ![Monitoring tile on the Data Factory home page](./media/data-factory-monitor-manage-app/MonitoringAppTile.png) @@ -42,7 +44,13 @@ You should see the Monitoring and Management app open in a separate window. > [!NOTE] > If you see that the web browser is stuck at "Authorizing...", clear the **Block third-party cookies and site data** check box--or keep it selected, create an exception for **login.microsoftonline.com**, and then try to open the app again. -If you don't see activity windows in the list at the bottom, click the **Refresh** button on the toolbar to refresh the list. In addition, set the right values for the **Start time** and **End time** filters. + +In the Activity Windows list in the middle pane, you see an activity window for each run of an activity. For example, if you have the activity scheduled to run hourly for five hours, you see five activity windows associated with five data slices. If you don't see activity windows in the list at the bottom, do the following: + +- Update the **start time** and **end time** filters at the top to match the start and end times of your pipeline, and then click the **Apply** button. +- The Activity Windows list is not automatically refreshed. Click the **Refresh** button on the toolbar in the **Activity Windows** list. + +If you don't have a Data Factory application to test these steps with, do the tutorial: [copy data from Blob Storage to SQL Database using Data Factory](data-factory-copy-data-from-azure-blob-storage-to-sql-database.md). ## Understand the Monitoring and Management app There are three tabs on the left: **Resource Explorer**, **Monitoring Views**, and **Alerts**. The first tab (**Resource Explorer**) is selected by default. @@ -51,9 +59,9 @@ There are three tabs on the left: **Resource Explorer**, **Monitoring Views**, a You see the following: * The Resource Explorer **tree view** in the left pane. -* The **Diagram View** at the top. +* The **Diagram View** at the top in the middle pane. * The **Activity Windows** list at the bottom in the middle pane. -* The **Properties** and **Activity Window Explorer** tabs in the right pane. +* The **Properties**, **Activity Window Explorer**, and **Script** tabs in the right pane. In Resource Explorer, you see all resources (pipelines, datasets, linked services) in the data factory in a tree view. When you select an object in Resource Explorer: @@ -77,23 +85,31 @@ When the pipeline is enabled (not in a paused state), it's shown with a green li ![Pipeline running](./media/data-factory-monitor-manage-app/PipelineRunning.png) -There are three command bar buttons for the pipeline in the Diagram View. You can use the second button to pause the pipeline. Pausing doesn't terminate the currently running activities and lets them proceed to completion. The third button pauses the pipeline and terminates its existing executing activities. The first button resumes the pipeline. When your pipeline is paused, the color of the pipeline changes to yellow: +You can pause, resume, or terminate a pipeline by selecting it in the diagram view and using the buttons on the command bar. -![Pause/resume on tile](./media/data-factory-monitor-manage-app/SuspendResumeOnTile.png) +![Pause/resume on the command bar](./media/data-factory-monitor-manage-app/SuspendResumeOnCommandBar.png) + +There are three command bar buttons for the pipeline in the Diagram View. You can use the second button to pause the pipeline. Pausing doesn't terminate the currently running activities and lets them proceed to completion. The third button pauses the pipeline and terminates its existing executing activities. The first button resumes the pipeline. When your pipeline is paused, the color of the pipeline changes. For example, a paused pipeline looks like in the following image: -You can multiselect two or more pipelines by using the Ctrl key. You can use the command bar buttons to pause/resume multiple pipelines at a time. +![Pipeline paused](./media/data-factory-monitor-manage-app/PipelinePaused.png) -![Pause/resume on the command bar](./media/data-factory-monitor-manage-app/SuspendResumeOnCommandBar.png) +You can multi-select two or more pipelines by using the Ctrl key. You can use the command bar buttons to pause/resume multiple pipelines at a time. + +You can also right-click a pipeline and select options to suspend, resume, or terminate a pipeline. -You can see all the activities in the pipeline by right-clicking the pipeline tile, and then clicking **Open pipeline**. +![Context menu for pipeline](./media/data-factory-monitor-manage-app/right-click-menu-for-pipeline.png) + +Click the **Open pipeline** option to see all the activities in the pipeline. ![Open pipeline menu](./media/data-factory-monitor-manage-app/OpenPipelineMenu.png) -In the opened pipeline view, you see all activities in the pipeline. In this example, there is only one activity: Copy Activity. To go back to the previous view, click the data factory name in the breadcrumb menu at the top. +In the opened pipeline view, you see all activities in the pipeline. In this example, there is only one activity: Copy Activity. ![Opened pipeline](./media/data-factory-monitor-manage-app/OpenedPipeline.png) -In the pipeline view, when you click an output dataset or when you move your mouse over the output dataset, you see the Activity Windows pop-up window for that dataset. +To go back to the previous view, click the data factory name in the breadcrumb menu at the top. + +In the pipeline view, when you select an output dataset or when you move your mouse over the output dataset, you see the Activity Windows pop-up window for that dataset. ![Activity Windows pop-up window](./media/data-factory-monitor-manage-app/ActivityWindowsPopup.png) diff --git a/articles/data-factory/data-factory-monitor-manage-pipelines.md b/articles/data-factory/data-factory-monitor-manage-pipelines.md index 4ecc9e0b29d02..ea0f2f5c1e49d 100644 --- a/articles/data-factory/data-factory-monitor-manage-pipelines.md +++ b/articles/data-factory/data-factory-monitor-manage-pipelines.md @@ -13,7 +13,7 @@ ms.workload: data-services ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 02/21/2017 +ms.date: 05/18/2017 ms.author: spelluru --- @@ -23,15 +23,11 @@ ms.author: spelluru > * [Using Monitoring and Management app](data-factory-monitor-manage-app.md) -Azure Data Factory provides a reliable and complete view of your storage, processing, and data movement services. The service provides you a monitoring dashboard that you can use to: +> [!IMPORTANT] +> The monitoring & management application provides a better support for monitoring and managing your data pipelines, and troubleshooting any issues. For details about using the application, see [monitor and manage Data Factory pipelines by using the Monitoring and Management app](data-factory-monitor-manage-app.md). -* Quickly assess end-to-end data pipeline health. -* Identify issues, and take corrective action if needed. -* Track data lineage. -* Track relationships between your data across any of your sources. -* View full historical accounting of job execution, system health, and dependencies. -This article describes how to monitor, manage, and debug your pipelines. It also provides information on how to create alerts and get notified about failures. +This article describes how to monitor, manage, and debug your pipelines by using Azure portal and PowerShell. The article also provides information on how to create alerts and get notified about failures. ## Understand pipelines and activity states By using the Azure portal, you can: @@ -40,15 +36,13 @@ By using the Azure portal, you can: * View activities in a pipeline. * View input and output datasets. -This section also describes how a slice transitions from one state to another state. +This section also describes how a dataset slice transitions from one state to another state. ### Navigate to your data factory 1. Sign in to the [Azure portal](https://portal.azure.com). 2. Click **Data factories** on the menu on the left. If you don't see it, click **More services >**, and then click **Data factories** under the **INTELLIGENCE + ANALYTICS** category. ![Browse all > Data factories](./media/data-factory-monitor-manage-pipelines/browseall-data-factories.png) - - You should see all the data factories on the **Data factories** blade. 3. On the **Data factories** blade, select the data factory that you're interested in. ![Select data factory](./media/data-factory-monitor-manage-pipelines/select-data-factory.png) @@ -58,13 +52,11 @@ This section also describes how a slice transitions from one state to another st ![Data factory blade](./media/data-factory-monitor-manage-pipelines/data-factory-blade.png) #### Diagram view of your data factory -The **Diagram** view of a data factory provides a single pane of glass to monitor and manage the data factory and its assets. - -To see the **Diagram** view of your data factory, click **Diagram** on the home page for the data factory. +The **Diagram** view of a data factory provides a single pane of glass to monitor and manage the data factory and its assets. To see the **Diagram** view of your data factory, click **Diagram** on the home page for the data factory. ![Diagram view](./media/data-factory-monitor-manage-pipelines/diagram-view.png) -You can zoom in, zoom out, zoom to fit, zoom to 100%, lock the layout of the diagram, and automatically position pipelines and tables. You can also see the data lineage information (that is, show upstream and downstream items of selected items). +You can zoom in, zoom out, zoom to fit, zoom to 100%, lock the layout of the diagram, and automatically position pipelines and datasets. You can also see the data lineage information (that is, show upstream and downstream items of selected items). ### Activities inside a pipeline 1. Right-click the pipeline, and then click **Open pipeline** to see all activities in the pipeline, along with input and output datasets for the activities. This feature is useful when your pipeline includes more than one activity and you want to understand the operational lineage of a single pipeline. @@ -168,17 +160,13 @@ The slice starts in a **Waiting** state, waiting for preconditions to be met bef You can reset the slice to go back from the **Ready** or **Failed** state to the **Waiting** state. You can also mark the slice state to **Skip**, which prevents the activity from executing and not processing the slice. -## Manage pipelines -You can manage your pipelines by using Azure PowerShell. For example, you can pause and resume pipelines by running Azure PowerShell cmdlets. - -### Pause and resume pipelines -You can pause/suspend pipelines by using the **Suspend-AzureRmDataFactoryPipeline** PowerShell cmdlet. This cmdlet is useful when you don’t want to run your pipelines until an issue is fixed. +## Pause and resume pipelines +You can manage your pipelines by using Azure PowerShell. For example, you can pause and resume pipelines by running Azure PowerShell cmdlets. -For example, in the following screenshot, an issue has been identified with the **PartitionProductsUsagePipeline** in the **productrecgamalbox1dev** data factory, and we want to suspend the pipeline. +> [!NOTE] +> The diagram view does not support pausing and resuming pipelines. If you want to use an user interface, use the monitoring and managing application. For details about using the application, see [monitor and manage Data Factory pipelines by using the Monitoring and Management app](data-factory-monitor-manage-app.md) article. -![Pipeline to be suspended](./media/data-factory-monitor-manage-pipelines/pipeline-to-be-suspended.png) - -To suspend a pipeline, run the following PowerShell command: +You can pause/suspend pipelines by using the **Suspend-AzureRmDataFactoryPipeline** PowerShell cmdlet. This cmdlet is useful when you don’t want to run your pipelines until an issue is fixed. ```powershell Suspend-AzureRmDataFactoryPipeline [-ResourceGroupName] <String> [-DataFactoryName] <String> [-Name] <String> @@ -189,7 +177,7 @@ For example: Suspend-AzureRmDataFactoryPipeline -ResourceGroupName ADF -DataFactoryName productrecgamalbox1dev -Name PartitionProductsUsagePipeline ``` -After the issue has been fixed with the **PartitionProductsUsagePipeline**, you can resume the suspended pipeline by running the following PowerShell command: +After the issue has been fixed with the pipeline, you can resume the suspended pipeline by running the following PowerShell command: ```powershell Resume-AzureRmDataFactoryPipeline [-ResourceGroupName] <String> [-DataFactoryName] <String> [-Name] <String> @@ -199,9 +187,13 @@ For example: ```powershell Resume-AzureRmDataFactoryPipeline -ResourceGroupName ADF -DataFactoryName productrecgamalbox1dev -Name PartitionProductsUsagePipeline ``` + ## Debug pipelines Azure Data Factory provides rich capabilities for you to debug and troubleshoot pipelines by using the Azure portal and Azure PowerShell. +> [!NOTE} +> It is much easier to troubleshot errors using the Monitoring & Management App. For details about using the application, see [monitor and manage Data Factory pipelines by using the Monitoring and Management app](data-factory-monitor-manage-app.md) article. + ### Find errors in a pipeline If the activity run fails in a pipeline, the dataset that is produced by the pipeline is in an error state because of the failure. You can debug and troubleshoot errors in Azure Data Factory by using the following methods. @@ -217,7 +209,7 @@ If the activity run fails in a pipeline, the dataset that is produced by the pip ![Activity run details blade with error](./media/data-factory-monitor-manage-pipelines/activity-run-details-with-error.png) #### Use PowerShell to debug an error -1. Start **Azure PowerShell**. +1. Launch **PowerShell**. 2. Run the **Get-AzureRmDataFactorySlice** command to see the slices and their statuses. You should see a slice with the status of **Failed**. ```powershell @@ -229,7 +221,7 @@ If the activity run fails in a pipeline, the dataset that is produced by the pip Get-AzureRmDataFactorySlice -ResourceGroupName ADF -DataFactoryName LogProcessingFactory -DatasetName EnrichedGameEventsTable -StartDateTime 2014-05-04 20:00:00 ``` - Replace **StartDateTime** with the the StartDateTime value that you specified for the Set-AzureRmDataFactoryPipelineActivePeriod. + Replace **StartDateTime** with start time of your pipeline. 3. Now, run the **Get-AzureRmDataFactoryRun** cmdlet to get details about the activity run for the slice. ```powershell @@ -275,12 +267,17 @@ If the activity run fails in a pipeline, the dataset that is produced by the pip ``` ## Rerun failures in a pipeline + +> [!IMPORTANT] +> It's easier to troubleshoot errors and rerun failed slices by using the Monitoring & Management App. For details about using the application, see [monitor and manage Data Factory pipelines by using the Monitoring and Management app](data-factory-monitor-manage-app.md). + ### Use the Azure portal After you troubleshoot and debug failures in a pipeline, you can rerun failures by navigating to the error slice and clicking the **Run** button on the command bar. ![Rerun a failed slice](./media/data-factory-monitor-manage-pipelines/rerun-slice.png) In case the slice has failed validation because of a policy failure (for example, if data isn't available), you can fix the failure and validate again by clicking the **Validate** button on the command bar. + ![Fix errors and validate](./media/data-factory-monitor-manage-pipelines/fix-error-and-validate.png) ### Use Azure PowerShell diff --git a/articles/data-factory/media/data-factory-monitor-manage-app/MonitoringAppTile.png b/articles/data-factory/media/data-factory-monitor-manage-app/MonitoringAppTile.png index 87dc7a458a063..ece5334ea8313 100644 Binary files a/articles/data-factory/media/data-factory-monitor-manage-app/MonitoringAppTile.png and b/articles/data-factory/media/data-factory-monitor-manage-app/MonitoringAppTile.png differ diff --git a/articles/data-factory/media/data-factory-monitor-manage-app/OpenedPipeline.png b/articles/data-factory/media/data-factory-monitor-manage-app/OpenedPipeline.png index cc7f5059ea74d..7caf266daba9d 100644 Binary files a/articles/data-factory/media/data-factory-monitor-manage-app/OpenedPipeline.png and b/articles/data-factory/media/data-factory-monitor-manage-app/OpenedPipeline.png differ diff --git a/articles/data-factory/media/data-factory-monitor-manage-app/PipelinePaused.png b/articles/data-factory/media/data-factory-monitor-manage-app/PipelinePaused.png new file mode 100644 index 0000000000000..8b19d9acdb966 Binary files /dev/null and b/articles/data-factory/media/data-factory-monitor-manage-app/PipelinePaused.png differ diff --git a/articles/data-factory/media/data-factory-monitor-manage-app/PipelineRunning.png b/articles/data-factory/media/data-factory-monitor-manage-app/PipelineRunning.png index b360998db3ce2..c882bdc65abc5 100644 Binary files a/articles/data-factory/media/data-factory-monitor-manage-app/PipelineRunning.png and b/articles/data-factory/media/data-factory-monitor-manage-app/PipelineRunning.png differ diff --git a/articles/data-factory/media/data-factory-monitor-manage-app/SuspendResumeOnCommandBar.png b/articles/data-factory/media/data-factory-monitor-manage-app/SuspendResumeOnCommandBar.png index 6563f91366e4f..b00f4a408633c 100644 Binary files a/articles/data-factory/media/data-factory-monitor-manage-app/SuspendResumeOnCommandBar.png and b/articles/data-factory/media/data-factory-monitor-manage-app/SuspendResumeOnCommandBar.png differ diff --git a/articles/data-factory/media/data-factory-monitor-manage-app/right-click-menu-for-pipeline.png b/articles/data-factory/media/data-factory-monitor-manage-app/right-click-menu-for-pipeline.png new file mode 100644 index 0000000000000..83868c967e1ac Binary files /dev/null and b/articles/data-factory/media/data-factory-monitor-manage-app/right-click-menu-for-pipeline.png differ diff --git a/articles/machine-learning/machine-learning-publish-web-service-to-azure-marketplace.md b/articles/machine-learning/machine-learning-publish-web-service-to-azure-marketplace.md index 9ac0ba56e3f55..c563f64584806 100644 --- a/articles/machine-learning/machine-learning-publish-web-service-to-azure-marketplace.md +++ b/articles/machine-learning/machine-learning-publish-web-service-to-azure-marketplace.md @@ -13,12 +13,11 @@ ms.workload: data-services ms.tgt_pltfrm: na ms.devlang: na ms.topic: deprecated -ms.date: 01/06/2017 +ms.date: 06/02/2017 ms.author: bharaths ROBOTS: NOINDEX, NOFOLLOW -#To remove completely, uncomment the following metadata -#redirect_url: https://gallery.cortanaintelligence.com/ +redirect_url: machine-learning-gallery-experiments --- # (deprecated) Publish Azure Machine Learning Web Service to the Azure Marketplace diff --git a/articles/media-services/media-services-process-content-with-indexer2.md b/articles/media-services/media-services-process-content-with-indexer2.md index 574fb6dc09c2e..11382276eb56d 100644 --- a/articles/media-services/media-services-process-content-with-indexer2.md +++ b/articles/media-services/media-services-process-content-with-indexer2.md @@ -13,7 +13,7 @@ ms.workload: media ms.tgt_pltfrm: na ms.devlang: dotnet ms.topic: article -ms.date: 15/05/2017 +ms.date: 02/06/2017 ms.author: adsolank;juliako; --- @@ -80,6 +80,9 @@ Azure Media Indexer 2 Preview supports speech-to-text for the following language * Portuguese [PtBr] * Arabic (Egyptian) [ArEg] * Japanese [JaJp] +* Russian [RuRu] +* British English [EnGb] +* Mexican Spanish [EsMx]  ## Supported file types diff --git a/articles/mysql/howto-manage-firewall-using-cli.md b/articles/mysql/howto-manage-firewall-using-cli.md index 931431f7b38a3..b8679204ba994 100644 --- a/articles/mysql/howto-manage-firewall-using-cli.md +++ b/articles/mysql/howto-manage-firewall-using-cli.md @@ -56,7 +56,7 @@ az account set --subscription {your subscription id} ```azurecli az mysql server list --resource-group myResourceGroup ``` -Note the name attribute in the listing, which will be used to specify which MySQL server to work on. If needed, confirm the details for that server to using the name attribute to confirm name is correct: +Note the name attribute in the listing, which will be used to specify which MySQL server to work on. If needed, confirm the details for that server in order to check the validity of the name using the name attribute. ```azurecli az mysql server show --resource-group myResourceGroup --name mysqlserver4demo ``` @@ -108,4 +108,4 @@ Upon success, there is no output. Upon failure, the error message text will be r ## Next steps - Understand more about [Azure Database for MySQL Server firewall rules](./concepts-firewall-rules.md) -- [Create and manage Azure Database for MySQL firewall rules using the Azure portal](./howto-manage-firewall-using-portal.md) \ No newline at end of file +- [Create and manage Azure Database for MySQL firewall rules using the Azure portal](./howto-manage-firewall-using-portal.md) diff --git a/articles/operations-management-suite/TOC.md b/articles/operations-management-suite/TOC.md index 660c0bf9328f4..5b41bc66bf8c5 100644 --- a/articles/operations-management-suite/TOC.md +++ b/articles/operations-management-suite/TOC.md @@ -37,15 +37,15 @@ #### [AD Assessment](../log-analytics/log-analytics-ad-assessment.md?toc=%2fazure%2foperations-management-suite%2ftoc.json) #### [AD Replication Status](../log-analytics/log-analytics-ad-replication-status.md?toc=%2fazure%2foperations-management-suite%2ftoc.json) #### [Alert Management](../log-analytics/log-analytics-solution-alert-management.md?toc=%2fazure%2foperations-management-suite%2ftoc.json) -#### Service Map -##### [Walkthrough](operations-management-suite-walkthrough-servicemap.md) -##### [Use](operations-management-suite-service-map.md) -##### [Configure](operations-management-suite-service-map-configure.md) #### [Azure Networking Analytics](../log-analytics/log-analytics-azure-networking-analytics.md?toc=%2fazure%2foperations-management-suite%2ftoc.json) #### [Containers](../log-analytics/log-analytics-containers.md?toc=%2fazure%2foperations-management-suite%2ftoc.json) #### [Key Vault Analytics](../log-analytics/log-analytics-azure-key-vault.md?toc=%2fazure%2foperations-management-suite%2ftoc.json) #### [Network Performance Monitor](../log-analytics/log-analytics-network-performance-monitor.md?toc=%2fazure%2foperations-management-suite%2ftoc.json) #### [Service Fabric Analytics](../log-analytics/log-analytics-service-fabric.md?toc=%2fazure%2foperations-management-suite%2ftoc.json) +#### Service Map +##### [Walkthrough](operations-management-suite-walkthrough-servicemap.md) +##### [Use](operations-management-suite-service-map.md) +##### [Configure](operations-management-suite-service-map-configure.md) #### [SQL Assessment](../log-analytics/log-analytics-sql-assessment.md?toc=%2fazure%2foperations-management-suite%2ftoc.json) #### [Surface Hub](../log-analytics/log-analytics-surface-hubs.md?toc=%2fazure%2foperations-management-suite%2ftoc.json) #### [Upgrade Analytics](https://technet.microsoft.com/itpro/windows/deploy/manage-windows-upgrades-with-upgrade-analytics?f=255&MSPPError=-2147217396) diff --git a/articles/security/TOC.md b/articles/security/TOC.md index defd28fda5461..c21e6ed91f116 100644 --- a/articles/security/TOC.md +++ b/articles/security/TOC.md @@ -11,6 +11,7 @@ ### [Logging and auditing](azure-log-audit.md) ### [Isolation in the public cloud](azure-isolation.md) ### [Security technical capabilities](azure-security-technical-capabilities.md) +### [Governance in Azure](governance-in-azure.md) # Get Started ## [Getting started with Azure security](azure-security-getting-started.md) diff --git a/articles/service-fabric/media/service-fabric-visualizing-your-cluster/SfxClusterDashboard.png b/articles/service-fabric/media/service-fabric-visualizing-your-cluster/SfxClusterDashboard.png index 684effc730217..bf4dda4c3aa77 100644 Binary files a/articles/service-fabric/media/service-fabric-visualizing-your-cluster/SfxClusterDashboard.png and b/articles/service-fabric/media/service-fabric-visualizing-your-cluster/SfxClusterDashboard.png differ diff --git a/articles/service-fabric/service-fabric-application-model.md b/articles/service-fabric/service-fabric-application-model.md index c359c3f35492e..ad1497879d3dd 100644 --- a/articles/service-fabric/service-fabric-application-model.md +++ b/articles/service-fabric/service-fabric-application-model.md @@ -13,7 +13,7 @@ ms.devlang: dotnet ms.topic: article ms.tgt_pltfrm: NA ms.workload: NA -ms.date: 3/02/2017 +ms.date: 6/02/2017 ms.author: ryanwi --- @@ -21,28 +21,28 @@ ms.author: ryanwi This article provides an overview of the Azure Service Fabric application model and how to define an application and service via manifest files. ## Understand the application model -An application is a collection of constituent services that perform a certain function or functions. A service performs a complete and standalone function (it can start and run independently of other services) and is composed of code, configuration, and data. For each service, code consists of the executable binaries, configuration consists of service settings that can be loaded at run time, and data consists of arbitrary static data to be consumed by the service. Each component in this hierarchical application model can be versioned and upgraded independently. +An application is a collection of constituent services that perform a certain function or functions. A service performs a complete and standalone function and can start and run independently of other services. A service is composed of code, configuration, and data. For each service, code consists of the executable binaries, configuration consists of service settings that can be loaded at run time, and data consists of arbitrary static data to be consumed by the service. Each component in this hierarchical application model can be versioned and upgraded independently. ![The Service Fabric application model][appmodel-diagram] An application type is a categorization of an application and consists of a bundle of service types. A service type is a categorization of a service. The categorization can have different settings and configurations, but the core functionality remains the same. The instances of a service are the different service configuration variations of the same service type. -Classes (or "types") of applications and services are described through XML files (application manifests and service manifests) that are the templates against which applications can be instantiated from the cluster's image store. The schema definition for the ServiceManifest.xml and ApplicationManifest.xml file is installed with the Service Fabric SDK and tools to *C:\Program Files\Microsoft SDKs\Service Fabric\schemas\ServiceFabricServiceModel.xsd*. +Classes (or "types") of applications and services are described through XML files (application manifests and service manifests). The manifests are the templates against which applications can be instantiated from the cluster's image store. The schema definition for the ServiceManifest.xml and ApplicationManifest.xml file is installed with the Service Fabric SDK and tools to *C:\Program Files\Microsoft SDKs\Service Fabric\schemas\ServiceFabricServiceModel.xsd*. -The code for different application instances will run as separate processes even when hosted by the same Service Fabric node. Furthermore, the lifecycle of each application instance can be managed (i.e. upgraded) independently. The following diagram shows how application types are composed of service types, which in turn are composed of code, configuration, and data packages. To simplify the diagram, only the code/config/data packages for `ServiceType4` are shown, though each service type would include some or all of those package types. +The code for different application instances run as separate processes even when hosted by the same Service Fabric node. Furthermore, the lifecycle of each application instance can be managed (for example, upgraded) independently. The following diagram shows how application types are composed of service types, which in turn are composed of code, configuration, and data packages. To simplify the diagram, only the code/config/data packages for `ServiceType4` are shown, though each service type would include some or all those package types. ![Service Fabric application types and service types][cluster-imagestore-apptypes] -Two different manifest files are used to describe applications and services: the service manifest and application manifest. These are covered in detail in the ensuing sections. +Two different manifest files are used to describe applications and services: the service manifest and application manifest. Manifests are covered in detail in the following sections. -There can be one or more instances of a service type active in the cluster. For example, stateful service instances, or replicas, achieve high reliability by replicating state between replicas located on different nodes in the cluster. This replication essentially provides redundancy for the service to be available even if one node in a cluster fails. A [partitioned service](service-fabric-concepts-partitioning.md) further divides its state (and access patterns to that state) across nodes in the cluster. +There can be one or more instances of a service type active in the cluster. For example, stateful service instances, or replicas, achieve high reliability by replicating state between replicas located on different nodes in the cluster. Replication essentially provides redundancy for the service to be available even if one node in a cluster fails. A [partitioned service](service-fabric-concepts-partitioning.md) further divides its state (and access patterns to that state) across nodes in the cluster. The following diagram shows the relationship between applications and service instances, partitions, and replicas. ![Partitions and replicas within a service][cluster-application-instances] > [!TIP] -> You can view the layout of applications in a cluster using the Service Fabric Explorer tool available at http://<yourclusteraddress>:19080/Explorer. For more details, see [Visualizing your cluster with Service Fabric Explorer](service-fabric-visualizing-your-cluster.md). +> You can view the layout of applications in a cluster using the Service Fabric Explorer tool available at http://<yourclusteraddress>:19080/Explorer. For more information, see [Visualizing your cluster with Service Fabric Explorer](service-fabric-visualizing-your-cluster.md). > > @@ -77,24 +77,24 @@ The service manifest declaratively defines the service type and version. It spec </ServiceManifest> ``` -**Version** attributes are unstructured strings and not parsed by the system. These are used to version each component for upgrades. +**Version** attributes are unstructured strings and not parsed by the system. Version attributes are used to version each component for upgrades. -**ServiceTypes** declares what service types are supported by **CodePackages** in this manifest. When a service is instantiated against one of these service types, all code packages declared in this manifest are activated by running their entry points. The resulting processes are expected to register the supported service types at run time. Note that service types are declared at the manifest level and not the code package level. So when there are multiple code packages, they are all activated whenever the system looks for any one of the declared service types. +**ServiceTypes** declares what service types are supported by **CodePackages** in this manifest. When a service is instantiated against one of these service types, all code packages declared in this manifest are activated by running their entry points. The resulting processes are expected to register the supported service types at run time. Service types are declared at the manifest level and not the code package level. So when there are multiple code packages, they are all activated whenever the system looks for any one of the declared service types. -**SetupEntryPoint** is a privileged entry point that runs with the same credentials as Service Fabric (typically the *LocalSystem* account) before any other entry point. The executable specified by **EntryPoint** is typically the long-running service host. The presence of a separate setup entry point avoids having to run the service host with high privileges for extended periods of time. The executable specified by **EntryPoint** is run after **SetupEntryPoint** exits successfully. The resulting process is monitored and restarted (beginning again with **SetupEntryPoint**) if it ever terminates or crashes. +**SetupEntryPoint** is a privileged entry point that runs with the same credentials as Service Fabric (typically the *LocalSystem* account) before any other entry point. The executable specified by **EntryPoint** is typically the long-running service host. The presence of a separate setup entry point avoids having to run the service host with high privileges for extended periods of time. The executable specified by **EntryPoint** is run after **SetupEntryPoint** exits successfully. If the process ever terminates or crashes, the resulting process is monitored and restarted (beginning again with **SetupEntryPoint**). -Typical scenarios for using **SetupEntryPoint** are when you need to run an executable before the service starts or you need to perform an operation with elevated privileges. For example: +Typical scenarios for using **SetupEntryPoint** are when you run an executable before the service starts or you perform an operation with elevated privileges. For example: * Setting up and initializing environment variables that the service executable needs. This is not limited to only executables written via the Service Fabric programming models. For example, npm.exe needs some environment variables configured for deploying a node.js application. * Setting up access control by installing security certificates. For more details on how to configure the **SetupEntryPoint** see [Configure the policy for a service setup entry point](service-fabric-application-runas-security.md) -**EnvironmentVariables** provides a list of environment variables that are set for this code package. These can be overridden in the `ApplicationManifest.xml` to provide different values for different service instances. +**EnvironmentVariables** provides a list of environment variables that are set for this code package. Environmentment variables can be overridden in the `ApplicationManifest.xml` to provide different values for different service instances. **DataPackage** declares a folder, named by the **Name** attribute, that contains arbitrary static data to be consumed by the process at run time. -**ConfigPackage** declares a folder, named by the **Name** attribute, that contains a *Settings.xml* file. This file contains sections of user-defined, key-value pair settings that the process can read back at run time. During an upgrade, if only the **ConfigPackage** **version** has changed, then the running process is not restarted. Instead, a callback notifies the process that configuration settings have changed so they can be reloaded dynamically. Here is an example *Settings.xml* file: +**ConfigPackage** declares a folder, named by the **Name** attribute, that contains a *Settings.xml* file. The settings file contains sections of user-defined, key-value pair settings that the process reads back at run time. During an upgrade, if only the **ConfigPackage** **version** has changed, then the running process is not restarted. Instead, a callback notifies the process that configuration settings have changed so they can be reloaded dynamically. Here is an example *Settings.xml* file: ```xml <Settings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2011/01/fabric"> @@ -148,10 +148,10 @@ Thus, an application manifest describes elements at the application level and re </ApplicationManifest> ``` -Like service manifests, **Version** attributes are unstructured strings and are not parsed by the system. These are also used to version each component for upgrades. +Like service manifests, **Version** attributes are unstructured strings and are not parsed by the system. Version attributes are also used to version each component for upgrades. **ServiceManifestImport** contains references to service manifests that compose this application type. Imported service manifests determine what service types are valid within this application type. -Within the ServiceManifestImport you can override configuration values in Settings.xml and environment variables in ServiceManifest.xml files. +Within the ServiceManifestImport, you override configuration values in Settings.xml and environment variables in ServiceManifest.xml files. **DefaultServices** declares service instances that are automatically created whenever an application is instantiated against this application type. Default services are just a convenience and behave like normal services in every respect after they have been created. They are upgraded along with any other services in the application instance and can be removed as well. @@ -174,7 +174,7 @@ For more information about other features supported by application manifests, re ## Next steps -[Package an application](service-fabric-package-apps.md) and get it ready to deploy. +[Package an application](service-fabric-package-apps.md) and make it ready to deploy. [Deploy and remove applications][10] describes how to use PowerShell to manage application instances. @@ -182,7 +182,7 @@ For more information about other features supported by application manifests, re [Configure security policies for your application][12] describes how to run services under security policies to restrict access. -[Application hosting models][13] describes relationship between replicas (or instances) of a deployed service and service-host process. +[Application hosting models][13] describe relationship between replicas (or instances) of a deployed service and service-host process. <!--Image references--> [appmodel-diagram]: ./media/service-fabric-application-model/application-model.png diff --git a/articles/service-fabric/service-fabric-cluster-manifest.md b/articles/service-fabric/service-fabric-cluster-manifest.md index 39f453d82afbb..4132cae20351a 100644 --- a/articles/service-fabric/service-fabric-cluster-manifest.md +++ b/articles/service-fabric/service-fabric-cluster-manifest.md @@ -1,6 +1,6 @@ --- -title: Configure your standalone cluster | Microsoft Docs -description: This article describes how to configure your standalone or private Service Fabric cluster. +title: Configure your Azure Service Fabric standalone cluster | Microsoft Docs +description: Learn how to configure your standalone or private Service Fabric cluster. services: service-fabric documentationcenter: .net author: rwike77 @@ -13,7 +13,7 @@ ms.devlang: dotnet ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 2/17/2017 +ms.date: 06/02/2017 ms.author: ryanwi --- @@ -33,7 +33,7 @@ This covers the broad cluster specific configurations, as shown in the JSON snip "name": "SampleCluster", "clusterConfigurationVersion": "1.0.0", - "apiVersion": "2016-09-26", + "apiVersion": "01-2017", You can give any friendly name to your Service Fabric cluster by assigning it to the **name** variable. The **clusterConfigurationVersion** is the version number of your cluster; you should increase it every time you upgrade your Service Fabric cluster. You should however leave the **apiVersion** to the default value. diff --git a/articles/service-fabric/service-fabric-create-your-first-linux-application-with-java.md b/articles/service-fabric/service-fabric-create-your-first-linux-application-with-java.md index cb237ce5dd451..4a790fa429183 100644 --- a/articles/service-fabric/service-fabric-create-your-first-linux-application-with-java.md +++ b/articles/service-fabric/service-fabric-create-your-first-linux-application-with-java.md @@ -3,7 +3,7 @@ title: Create your first Azure microservices app on Linux using Java | Microsoft description: Create and deploy a Service Fabric application using Java services: service-fabric documentationcenter: java -author: seanmck +author: rwike77 manager: timlt editor: '' @@ -13,11 +13,11 @@ ms.devlang: java ms.topic: hero-article ms.tgt_pltfrm: NA ms.workload: NA -ms.date: 01/05/2017 -ms.author: seanmck +ms.date: 06/02/2017 +ms.author: ryanwi --- -# Create your first Azure Service Fabric application +# Create your first Service Fabric Java application on Linux > [!div class="op_single_selector"] > * [C# - Windows](service-fabric-create-your-first-application-in-visual-studio.md) > * [Java - Linux](service-fabric-create-your-first-linux-application-with-java.md) @@ -25,38 +25,21 @@ ms.author: seanmck > > -Service Fabric provides SDKs for building services on Linux in both .NET Core and Java. In this tutorial, we create an application for Linux and build a service using Java. - -> [!NOTE] -> Java as a first class built-in programming language is supported for the Linux preview only (Windows support is planned). However, any applications including Java applications can be run as guest executables or inside containers on Windows or Linux. For more information, see [Deploy an existing executable to Azure Service Fabric](service-fabric-deploy-existing-app.md) and [Deploy containers to Service Fabric](service-fabric-deploy-container.md). -> - -## Video tutorial - -The following Microsoft Virtual Academy video walks you through the process of creating a Java app on Linux: -<center><a target="\_blank" href="https://mva.microsoft.com/en-US/training-courses/building-microservices-applications-on-azure-service-fabric-16747?l=DOX8K86yC_206218965"> -<img src="./media/service-fabric-create-your-first-linux-application-with-java/LinuxVid.png" WIDTH="360" HEIGHT="244"> -</a></center> - +This quick start helps you create your first Azure Service Fabric Java application in a Linux development environment in just a few minutes. When you are finished, you'll have a simple Java single-service app running on the local development cluster. ## Prerequisites -Before you get started, make sure that you have [set up your Linux development environment](service-fabric-get-started-linux.md). If you are using Mac OS X, you can [set up a Linux one-box environment in a virtual machine using Vagrant](service-fabric-get-started-mac.md). +Before you get started, install the Service Fabric SDK, the Azure CLI, and setup a development cluster in your [Linux development environment](service-fabric-get-started-linux.md). If you are using Mac OS X, you can [set up a Linux development environment in a virtual machine using Vagrant](service-fabric-get-started-mac.md). ## Create the application -A Service Fabric application can contain one or more services, each with a specific role in delivering the application's functionality. The Service Fabric SDK for Linux includes a [Yeoman](http://yeoman.io/) generator that makes it easy to create your first service and to add more later. Let's use Yeoman to create an application with a single service. +A Service Fabric application contains one or more services, each with a specific role in delivering the application's functionality. The Service Fabric SDK for Linux includes a [Yeoman](http://yeoman.io/) generator that makes it easy to create your first service and to add more later. You can also create, build, and deploy Service Fabric Java applications using a plugin for Eclipse. See [Create and deploy your first Java application using Eclipse](service-fabric-get-started-eclipse.md). For this quick start, use Yeoman to create an application with a single service that stores and gets a counter value. 1. In a terminal, type ``yo azuresfjava``. -2. Name your application. -3. Choose the type of your first service and name it. For the purposes of this tutorial, we choose a Reliable Actor Service. - +2. Name your application. +3. Choose the type of your first service and name it. For this tutorial, choose a Reliable Actor Service. For more information about the other types of services, see [Service Fabric programming model overview](service-fabric-choose-framework.md). ![Service Fabric Yeoman generator for Java][sf-yeoman] -> [!NOTE] -> For more information about the options, see [Service Fabric programming model overview](service-fabric-choose-framework.md). -> - ## Build the application -The Service Fabric Yeoman templates include a build script for [Gradle](https://gradle.org/), which you can use to build the app from the terminal. +The Service Fabric Yeoman templates include a build script for [Gradle](https://gradle.org/), which you can use to build the app from the terminal. To build and package the app, run the following: ```bash cd myapp @@ -72,50 +55,51 @@ Once the application is built, you can deploy it to the local cluster using the azure servicefabric cluster connect ``` -2. Use the install script provided in the template to copy the application package to the cluster's image store, register the application type, and create an instance of the application. +2. Run the install script provided in the template to copy the application package to the cluster's image store, register the application type, and create an instance of the application. ```bash ./install.sh ``` -3. Open a browser and navigate to Service Fabric Explorer at http://localhost:19080/Explorer (replace localhost with the private IP of the VM if using Vagrant on Mac OS X). +3. Open a browser and navigate to [Service Fabric Explorer](service-fabric-visualizing-your-cluster.md) at http://localhost:19080/Explorer (replace localhost with the private IP of the VM if using Vagrant on Mac OS X). -4. Expand the Applications node and note that there is now an entry for your application type and another for the first instance of that type. +4. Expand the **Applications** node and note that there is now an entry for your application type and another for the first instance of that type. ## Start the test client and perform a failover -Actor projects do not do anything on their own. They require another service or client to send them messages. The actor template includes a simple test script that you can use to interact with the actor service. +Actors do not do anything on their own, they require another service or client to send them messages. The actor template includes a simple test script that you can use to interact with the actor service. -1. Run the script using the watch utility to see the output of the actor service. +1. Run the script using the watch utility to see the output of the actor service. The test script calls the `setCountAsync()` method on the actor to increment a counter, calls the `getCountAsync()` method on the actor to get the new counter value, and displays that value to the console. ```bash cd myactorsvcTestClient watch -n 1 ./testclient.sh ``` -2. In Service Fabric Explorer, locate node hosting the primary replica for the actor service. In the screenshot below, it is node 3. +2. In Service Fabric Explorer, locate the node hosting the primary replica for the actor service. In the screenshot below, it is node 3. The primary service replica handles read and write operations. Changes in service state are then replicated out to the secondary replicas, running on nodes 0 and 1 in the screen shot below. ![Finding the primary replica in Service Fabric Explorer][sfx-primary] -3. Click the node you found in the previous step, then select **Deactivate (restart)** from the Actions menu. This action restarts one of the five nodes in your local cluster and force a failover to one of the secondary replicas running on another node. As you perform this action, pay attention to the output from the test client and note that the counter continues to increment despite the failover. - -## Create and deploy an application with the Eclipse Neon plugin - -Service Fabric also gives you the provision to create, build and deploy Service Fabric Java application using Eclipse. When installing Eclipse, choose the **Eclipse IDE for Java developers**. Also, Service Fabric currently supports the plugin for Eclipse **Neon**. Please refer to the detailed documentation - [Create and deploy your first Service Fabric Java application using Service Fabric Plugin for Eclipse on Linux](service-fabric-get-started-eclipse.md) +3. In **Nodes**, click the node you found in the previous step, then select **Deactivate (restart)** from the Actions menu. This action restarts the node running the primary service replica and forces a failover to one of the secondary replicas running on another node. That secondary replica is promoted to primary, another secondary replica is created on a different node, and the primary replica begins to take read/write operations. As the node restarts, watch the output from the test client and note that the counter continues to increment despite the failover. -## Adding more services to an existing application - -### Using command line utility -To add another service to an application already created using `yo`, perform the following steps: +## Add another service to the application +To add another service to an existing application using `yo`, perform the following steps: 1. Change directory to the root of the existing application. For example, `cd ~/YeomanSamples/MyApplication`, if `MyApplication` is the application created by Yeoman. 2. Run `yo azuresfjava:AddService` +3. Build and deploy the app, as in the preceding steps. + +## Remove the application +Use the uninstall script provided in the template to delete the app instance, unregister the application package, and remove the application package from the cluster's image store. + +```bash +./uninstall.sh +``` -### Using Service Fabric Eclipse plugin for Java on Linux -To add service to an existing application created using Eclipse plugin for Service Fabric refer to documentation [here](service-fabric-get-started-eclipse.md#add-a-service-fabric-service-to-your-service-fabric-application). +In Service Fabric explorer you see that the application and application type no longer appear in the **Applications** node. ## Next steps -* [Create and deploy your first Service Fabric Java application using Service Fabric Plugin for Eclipse on Linux](service-fabric-get-started-eclipse.md) +* [Create your first Service Fabric Java application on Linux using Eclipse](service-fabric-get-started-eclipse.md) * [Learn more about Reliable Actors](service-fabric-reliable-actors-introduction.md) -* [Interacting with Service Fabric clusters using the Azure CLI](service-fabric-azure-cli.md) +* [Interact with Service Fabric clusters using the Azure CLI](service-fabric-azure-cli.md) * [Troubleshooting deployment](service-fabric-azure-cli.md#troubleshooting) * Learn about [Service Fabric support options](service-fabric-support.md) diff --git a/articles/service-fabric/service-fabric-technical-overview.md b/articles/service-fabric/service-fabric-technical-overview.md index 4be756753319b..a4342e02e2d50 100644 --- a/articles/service-fabric/service-fabric-technical-overview.md +++ b/articles/service-fabric/service-fabric-technical-overview.md @@ -13,12 +13,12 @@ ms.devlang: dotnet ms.topic: article ms.tgt_pltfrm: NA ms.workload: NA -ms.date: 2/17/2017 +ms.date: 06/02/2017 ms.author: ryanwi --- # Service Fabric terminology overview -Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices. This topic details the terminology used by Service Fabric in order to understand the terms used in the documentation. +Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices. This topic details the terminology used by Service Fabric to understand the terms used in the documentation. The concepts listed in this section are also discussed in the following Microsoft Virtual Academy videos: <a target="_blank" href="https://mva.microsoft.com/en-US/training-courses/building-microservices-applications-on-azure-service-fabric-16747?l=tbuZM46yC_5206218965">Core concepts</a>, <a target="_blank" href="https://mva.microsoft.com/en-US/training-courses/building-microservices-applications-on-azure-service-fabric-16747?l=tlkI046yC_2906218965">Design-time concepts</a>, and <a target="_blank" href="https://mva.microsoft.com/en-US/training-courses/building-microservices-applications-on-azure-service-fabric-16747?l=x7CVH56yC_1406218965">Run-time concepts</a>. @@ -34,7 +34,7 @@ Read the [Application Model](service-fabric-application-model.md) article for mo **Application Package**: A disk directory containing the application type's `ApplicationManifest.xml` file. References the service packages for each service type that makes up the application type. The files in the application package directory are copied to Service Fabric cluster's image store. For example, an application package for an email application type could contain references to a queue service package, a frontend service package, and a database service package. -**Named Application**: After an application package is copied to the image store, you create an instance of the application within the cluster by specifying the application package's application type (using its name/version). Each application type instance is assigned a URI name that looks like this: `"fabric:/MyNamedApp"`. Within a cluster, you can create multiple named applications from a single application type. You can also create named applications from different application types. Each named application is managed and versioned independently. +**Named Application**: After an application package is copied to the image store, you create an instance of the application within the cluster by specifying the application package's application type (using its name/version). Each application type instance is assigned a URI name that looks like: `"fabric:/MyNamedApp"`. Within a cluster, you can create multiple named applications from a single application type. You can also create named applications from different application types. Each named application is managed and versioned independently. **Service Type**: The name/version assigned to a service's code packages, data packages, and configuration packages. Defined in a `ServiceManifest.xml` file, embedded in a service package directory and the service package directory is then referenced by an application package's `ApplicationManifest.xml` file. Within the cluster, after creating a named application, you can create a named service from one of the application type's service types. The service type's `ServiceManifest.xml` file describes the service. @@ -49,29 +49,29 @@ There are two types of services: **Named Service**: After creating a named application, you can create an instance of one of its service types within the cluster by specifying the service type (using its name/version). Each service type instance is assigned a URI name scoped under its named application's URI. For example, if you create a "MyDatabase" named service within a "MyNamedApp" named application, the URI looks like: `"fabric:/MyNamedApp/MyDatabase"`. Within a named application, you can create several named services. Each named service can have its own partition scheme and instance/replica counts. -**Code Package**: A disk directory containing the service type's executable files (typically EXE/DLL files). The files in the code package directory are referenced by the service type's `ServiceManifest.xml` file. When a named service is created, the code package is copied to the one or more nodes selected to run the named service. Then the code starts running. There are two types of code package executables: +**Code Package**: A disk directory containing the service type's executable files (typically EXE/DLL files). The files in the code package directory are referenced by the service type's `ServiceManifest.xml` file. When a named service is created, the code package is copied to the node or nodes selected to run the named service. Then the code starts running. There are two types of code package executables: * **Guest executables**: Executables that run as-is on the host operating system (Windows or Linux). That is, these executables do not link to or reference any Service Fabric runtime files and therefore do not use any Service Fabric programming models. These executables are unable to use some Service Fabric features such as the naming service for endpoint discovery. Guest executables cannot report load metrics specific to each service instance. * **Service Host Executables**: Executables that use Service Fabric programming models by linking to Service Fabric runtime files, enabling Service Fabric features. For example, a named service instance can register endpoints with Service Fabric's Naming Service and can also report load metrics. -**Data Package**: A disk directory containing the service type's static, read-only data files (typically photo, sound, and video files). The files in the data package directory are referenced by the service type's `ServiceManifest.xml` file. When a named service is created, the data package is copied to the one or more nodes selected to run the named service. The code starts running and can now access the data files. +**Data Package**: A disk directory containing the service type's static, read-only data files (typically photo, sound, and video files). The files in the data package directory are referenced by the service type's `ServiceManifest.xml` file. When a named service is created, the data package is copied to the node or nodes selected to run the named service. The code starts running and can now access the data files. **Configuration Package**: A disk directory containing the service type's static, read-only configuration files (typically text files). The files in the configuration package directory are referenced by the service type's `ServiceManifest.xml` file. When a named service is created, the files in the configuration package are copied to the one or more nodes selected to run the named service. Then the code starts running and can now access the configuration files. **Containers**: By default, Service Fabric deploys and activates services as processes. Service Fabric can also deploy services in container images. Containers are a virtualization technology that virtualizes the underlying operating system from applications. An application and its runtime, dependencies, and system libraries run inside a container with full, private access to the container's own isolated view of operating system constructs. Service Fabric supports Docker containers on Linux and Windows Server containers. For more information, read [Service Fabric and containers](service-fabric-containers-overview.md). -**Partition Scheme**: When creating a named service, you specify a partition scheme. Services with large amounts of state split the data across partitions which spreads it across the cluster's nodes. This allows your named service's state to scale. Within a partition, stateless named services have instances while stateful named services have replicas. Usually, stateless named services only ever have one partition since they have no internal state. The partition instances provide for availability; if one instance fails, other instances continue to operate normally and then Service Fabric will create a new instance. Stateful named services maintain their state within replicas and each partition has its own replica set with all the state being kept in sync. Should a replica fail, Service Fabric builds a new replica from the existing replicas. +**Partition Scheme**: When creating a named service, you specify a partition scheme. Services with large amounts of state split the data across partitions, which spreads the state across the cluster's nodes. This allows your named service's state to scale. Within a partition, stateless named services have instances while stateful named services have replicas. Usually, stateless named services only ever have one partition since they have no internal state. The partition instances provide for availability; if one instance fails, other instances continue to operate normally and then Service Fabric will create a new instance. Stateful named services maintain their state within replicas and each partition has its own replica set with all the state being kept in sync. Should a replica fail, Service Fabric builds a new replica from the existing replicas. Read the [Partition Service Fabric reliable services](service-fabric-concepts-partitioning.md) article for more information. ## System services There are system services that are created in every cluster that provide the platform capabilities of Service Fabric. -**Naming Service**: Each Service Fabric cluster has a Naming service, which resolves service names to a location in the cluster. You manage the service names and properties, similar to an internet Domain Name Service (DNS) for the cluster. Clients securely communicate with any node in the cluster using the Naming Service to resolve a service name and its location. Clients obtain the actual machine IP address and port where it is currently running. You can develop services and clients capable of resolving the current network location despite applications being moved within the cluster for example due to failures, resource balancing, or the resizing of the cluster. +**Naming Service**: Each Service Fabric cluster has a Naming service, which resolves service names to a location in the cluster. You manage the service names and properties, similar to an internet Domain Name Service (DNS) for the cluster. Clients securely communicate with any node in the cluster using the Naming Service to resolve a service name and its location. Applications mov within the cluster for example due to failures, resource balancing, or the resizing of the cluster. You can develop services and clients which resolve the current network location. Clients obtain the actual machine IP address and port where it is currently running. Read [Communicate with services](service-fabric-connect-and-communicate-with-services.md) for more information on the client and service communication APIs that work with the Naming service. -**Image Store Service**: Each Service Fabric cluster has an Image Store service where deployed, versioned application packages are kept. Copy an application package to the Image Store and then register the application type contained within that application package. After the application type is provisioned, you create a named applications from it. You can unregister an application type from the Image Store service after all its named applications have been deleted. +**Image Store Service**: Each Service Fabric cluster has an Image Store service where deployed, versioned application packages are kept. Copy an application package to the Image Store and then register the application type contained within that application package. After the application type is provisioned, you create a named application from it. You can unregister an application type from the Image Store service after all its named applications have been deleted. Read [Understand the ImageStoreConnectionString setting](service-fabric-image-store-connection-string.md) for more information about the Image Store service. @@ -80,7 +80,7 @@ Read the [Deploy an application](service-fabric-deploy-remove-applications.md) a ## Built-in programming models There are .NET Framework programming models available for you to build Service Fabric services: -**Reliable Services**: An API to build stateless and stateful services. Stateful service store their state in Reliable Collections (such as a dictionary or a queue). You also get to plug in a variety of communication stacks such as Web API and Windows Communication Foundation (WCF). +**Reliable Services**: An API to build stateless and stateful services. Stateful service store their state in Reliable Collections (such as a dictionary or a queue). You also get to plug in various communication stacks such as Web API and Windows Communication Foundation (WCF). **Reliable Actors**: An API to build stateless and stateful objects through the virtual Actor programming model. This model can be useful when you have lots of independent units of computation/state. Because this model uses a turn-based threading model, it is best to avoid code that calls out to other actors or services since an individual actor cannot process other incoming requests until all its outbound requests have completed. diff --git a/articles/service-fabric/service-fabric-visualizing-your-cluster.md b/articles/service-fabric/service-fabric-visualizing-your-cluster.md index 4c3accfcfde60..9dff4f359d51a 100644 --- a/articles/service-fabric/service-fabric-visualizing-your-cluster.md +++ b/articles/service-fabric/service-fabric-visualizing-your-cluster.md @@ -3,7 +3,7 @@ title: Visualizing your cluster using Service Fabric Explorer | Microsoft Docs description: Service Fabric Explorer is a web-based tool for inspecting and managing cloud applications and nodes in a Microsoft Azure Service Fabric cluster. services: service-fabric documentationcenter: .net -author: seanmck +author: rwike77 manager: timlt editor: '' @@ -13,8 +13,8 @@ ms.devlang: dotnet ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 01/05/2017 -ms.author: seanmck +ms.date: 06/02/2017 +ms.author: ryanwi --- # Visualize your cluster with Service Fabric Explorer diff --git a/articles/sql-data-warehouse/sql-data-warehouse-reference-tsql-system-views.md b/articles/sql-data-warehouse/sql-data-warehouse-reference-tsql-system-views.md index 342d0137092f4..fbed9391b4a94 100644 --- a/articles/sql-data-warehouse/sql-data-warehouse-reference-tsql-system-views.md +++ b/articles/sql-data-warehouse/sql-data-warehouse-reference-tsql-system-views.md @@ -14,7 +14,7 @@ ms.topic: article ms.tgt_pltfrm: NA ms.workload: data-services ms.custom: reference -ms.date: 10/31/2016 +ms.date: 06/01/2017 ms.author: kevin;barbkess --- @@ -144,6 +144,8 @@ This is why each of these DMV's has a specific column called pdw_node_id. This i | DMV name in SQL Data Warehouse | Link to SQL Server Transact-SQL topic on MSDN | |:--- |:--- | +| sys.dm_pdw_nodes_db_column_store_row_group_physical_stats | [sys.dm_db_column_store_row_group_physical_stats](/sql/relational-databases/system-dynamic-management-views/sys-dm-db-column-store-row-group-physical-stats-transact-sql)| +| sys.dm_pdw_nodes_db_column_store_row_group_operational_stats | [sys.dm_db_column_store_row_group_operational_stats](/sql/relational-databases/system-dynamic-management-views/sys-dm-db-column-store-row-group-operational-stats-transact-sql)| | sys.dm_pdw_nodes_db_file_space_usage |[sys.dm_db_file_space_usage](http://msdn.microsoft.com/library/ms174412.aspx) | | sys.dm_pdw_nodes_db_index_usage_stats |[sys.dm_db_index_usage_stats](http://msdn.microsoft.com/library/ms188755.aspx) | | sys.dm_pdw_nodes_db_partition_stats |[sys.dm_db_partition_stats](http://msdn.microsoft.com/library/ms187737.aspx) | @@ -161,7 +163,7 @@ This is why each of these DMV's has a specific column called pdw_node_id. This i | sys.dm_pdw_nodes_exec_requests |[sys.dm_exec_requests](http://msdn.microsoft.com/library/ms177648.aspx) | | sys.dm_pdw_nodes_exec_sessions |[sys.dm_exec_sessions](https://msdn.microsoft.com/en-us/library/ms176013.aspx) | | sys.dm_pdw_nodes_io_pending_io_requests |[sys.dm_io_pending_io_requests](http://msdn.microsoft.com/library/ms188762.aspx) | -| sys.dm_pdw_nodes_io_virtual_file_stats |[sys.dm_io_virtual_file_stats](/sql/relational-databases/system-dynamic-management-views/sys-dm-io-virtual-file-stats-transact-sql.md) | +| sys.dm_pdw_nodes_io_virtual_file_stats |[sys.dm_io_virtual_file_stats](/sql/relational-databases/system-dynamic-management-views/sys-dm-io-virtual-file-stats-transact-sql) | | sys.dm_pdw_nodes_os_buffer_descriptors |[sys.dm_os_buffer_descriptors](http://msdn.microsoft.com/library/ms173442.aspx) | | sys.dm_pdw_nodes_os_child_instances |[sys.dm_os_child_instances](http://msdn.microsoft.com/library/ms165698.aspx) | | sys.dm_pdw_nodes_os_cluster_nodes |[sys.dm_os_cluster_nodes](http://msdn.microsoft.com/library/ms187341.aspx) | diff --git a/articles/sql-database/media/sql-database-elastic-pool-create-portal/pricing-tier.png b/articles/sql-database/media/sql-database-elastic-pool-create-portal/pricing-tier.png index e37b6649217fb..538d484df312b 100644 Binary files a/articles/sql-database/media/sql-database-elastic-pool-create-portal/pricing-tier.png and b/articles/sql-database/media/sql-database-elastic-pool-create-portal/pricing-tier.png differ diff --git a/articles/sql-database/media/sql-database-single-database-monitoring/sql_db_metrics_monitoring.PNG b/articles/sql-database/media/sql-database-single-database-monitoring/sql_db_metrics_monitoring.PNG new file mode 100644 index 0000000000000..7070114ce4b2b Binary files /dev/null and b/articles/sql-database/media/sql-database-single-database-monitoring/sql_db_metrics_monitoring.PNG differ diff --git a/articles/sql-database/media/sql-database-single-database-monitoring/sql_db_overview_monitoring.PNG b/articles/sql-database/media/sql-database-single-database-monitoring/sql_db_overview_monitoring.PNG new file mode 100644 index 0000000000000..a4408f1f7f936 Binary files /dev/null and b/articles/sql-database/media/sql-database-single-database-monitoring/sql_db_overview_monitoring.PNG differ diff --git a/articles/sql-database/sql-database-elastic-pool-manage-portal.md b/articles/sql-database/sql-database-elastic-pool-manage-portal.md index 73a09141380b2..89cb281fca2b2 100644 --- a/articles/sql-database/sql-database-elastic-pool-manage-portal.md +++ b/articles/sql-database/sql-database-elastic-pool-manage-portal.md @@ -12,7 +12,7 @@ ms.assetid: 3dc9b7a3-4b10-423a-8e44-9174aca5cf3d ms.service: sql-database ms.custom: multiple databases ms.devlang: NA -ms.date: 04/18/2016 +ms.date: 05/08/2017 ms.author: ninarn ms.workload: data-management ms.topic: article @@ -26,7 +26,7 @@ This topic shows you how to create and manage scalable [elastic pools](sql-datab There are two ways you can create an elastic pool. You can do it from scratch if you know the pool setup you want, or start with a recommendation from the service. SQL Database has built-in intelligence that recommends an elastic pool setup if it's more cost-efficient for you based on the past usage telemetry for your databases. -You can create multiple pools on a server, but you can't add databases from different servers into the same pool. +You can create multiple pools on a server, but you can't add databases from different servers into the same pool. > [!NOTE] > Elastic pools are generally available (GA) in all Azure regions except West India where it is currently in preview. GA of elastic pools in this region will occur as soon as possible. @@ -154,7 +154,7 @@ You can edit the chart and the metric blade to display other metrics such as CPU ![Click edit](./media/sql-database-elastic-pool-manage-portal/edit-chart.png) - + 3. Then click **OK**. diff --git a/articles/sql-database/sql-database-in-memory-oltp-monitoring.md b/articles/sql-database/sql-database-in-memory-oltp-monitoring.md index 1ebdf992391d8..fddfa6ef7287b 100644 --- a/articles/sql-database/sql-database-in-memory-oltp-monitoring.md +++ b/articles/sql-database/sql-database-in-memory-oltp-monitoring.md @@ -14,8 +14,8 @@ ms.workload: data-management ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 12/19/2016 -ms.author: jodebrui +ms.date: 05/08/2017 +ms.author: ninarn --- # Monitor In-Memory OLTP Storage @@ -29,11 +29,11 @@ Estimating memory requirements for a memory-optimized table works the same way f Note that the table and table variable rows, as well as indexes, count toward the max user data size. In addition, ALTER TABLE needs enough room to create a new version of the entire table and its indexes. ## Monitoring and alerting -You can monitor in-memory storage use as a percentage of the [storage cap for your performance tier](sql-database-service-tiers.md#single-database-service-tiers-and-performance-levels) in the Azure [portal](https://portal.azure.com/): +You can monitor in-memory storage use as a percentage of the [storage cap for your performance tier](sql-database-service-tiers.md#single-database-service-tiers-and-performance-levels) in the Azure [portal](https://portal.azure.com/): -* On the Database blade, locate the Resource utilization box and click on Edit. -* Then select the metric `In-Memory OLTP Storage percentage`. -* To add an alert, click on the Resource Utilization box to open the Metric blade, then click on Add alert. +* On the Database blade, locate and click on the Monitoring chart. +* In the Metrics blade that opens, select the metric `In-Memory OLTP Storage percentage`. +* To add an alert, click "Add alert" in the Metrics blade and select the metric you wish to track. Or use the following query to show the in-memory storage utilization: diff --git a/articles/sql-database/sql-database-performance-tutorial.md b/articles/sql-database/sql-database-performance-tutorial.md index 4c3155e09741d..c812c2dd726ae 100644 --- a/articles/sql-database/sql-database-performance-tutorial.md +++ b/articles/sql-database/sql-database-performance-tutorial.md @@ -103,7 +103,6 @@ Follow these steps to find the query consuming the most resources: ## Next steps Missing indexes and poorly optimized queries are common reasons for poor database performance. In this tutorial you learned to: -In this tutorial you learned how to: > [!div class="checklist"] > * Review, apply and revert performance improvement recommendations > * Find queries with high resource utilization diff --git a/articles/sql-database/sql-database-single-database-monitor.md b/articles/sql-database/sql-database-single-database-monitor.md index 0d9b7f5848497..15ac5395b7ad3 100644 --- a/articles/sql-database/sql-database-single-database-monitor.md +++ b/articles/sql-database/sql-database-single-database-monitor.md @@ -15,26 +15,30 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: data-management -ms.date: 01/10/2017 -ms.author: carlrab +ms.date: 05/08/2017 +ms.author: ninarn --- # Monitoring database performance in Azure SQL Database Monitoring the performance of a SQL database in Azure starts with monitoring the resource utilization relative to the level of database performance you choose. Monitoring helps you determine whether your database has excess capacity or is having trouble because resources are maxed out, and then decide whether it's time to adjust the performance level and [service tier](sql-database-service-tiers.md) of your database. You can monitor your database using graphical tools in the [Azure portal](https://portal.azure.com) or using SQL [dynamic management views](https://msdn.microsoft.com/library/ms188754.aspx). ## Monitor databases using the Azure portal -In the [Azure portal](https://portal.azure.com/), you can monitor a single database’s utilization by selecting your database and clicking the **Monitoring** chart. This brings up a **Metric** window that you can change by clicking the **Edit chart** button. Add the following metrics: +In the [Azure portal](https://portal.azure.com/), you can monitor a single database’s utilization by selecting your database and clicking the **Monitoring** chart. This brings up a **Metric** blade where you can edit the contents of a monitoring chart. + +![SQL DB overview monitoring](./media/sql-database-single-database-monitoring/sql_db_overview_monitoring.png) + +![Service tier monitoring of database performance.](./media/sql-database-single-database-monitoring/sql_db_metrics_monitoring.png) + +Add the following metrics: * CPU percentage * DTU percentage * Data IO percentage * Database size percentage -Once you’ve added these metrics, you can continue to view them in the **Monitoring** chart with more details on the **Metric** window. All four metrics show the average utilization percentage relative to the **DTU** of your database. See the [service tiers](sql-database-service-tiers.md) article for details about DTUs. - -![Service tier monitoring of database performance.](./media/sql-database-service-tiers/sqldb_service_tier_monitoring.png) +Once you’ve added these metrics, you can pin this monitoring chart to your Dashboard to save it for later viewing. All four metrics show the average utilization percentage relative to the limits of your database. See the [service tiers](sql-database-service-tiers.md) article for details about the limits of your database. -You can also configure alerts on the performance metrics. Click the **Add alert** button in the **Metric** window. Follow the wizard to configure your alert. You have the option to alert if the metrics exceed a certain threshold or if the metric falls below a certain threshold. +You can also configure alerts on the performance metrics. Click the **Add alert** button in the **Metric** blade. Follow the wizard to configure your alert. You have the option to alert if the metrics exceed a certain threshold or if the metric falls below a certain threshold. For example, if you expect the workload on your database to grow, you can choose to configure an email alert whenever your database reaches 80% on any of the performance metrics. You can use this as an early warning to figure out when you might have to switch to the next higher performance level. diff --git a/articles/sql-database/sql-database-ssms-mfa-authentication-configure.md b/articles/sql-database/sql-database-ssms-mfa-authentication-configure.md index 1c6feddb96b0b..4e78ed9e0188a 100644 --- a/articles/sql-database/sql-database-ssms-mfa-authentication-configure.md +++ b/articles/sql-database/sql-database-ssms-mfa-authentication-configure.md @@ -15,7 +15,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: data-management -ms.date: 01/23/2017 +ms.date: 06/02/2017 ms.author: rickbyh --- @@ -23,7 +23,7 @@ ms.author: rickbyh This topic shows you how to configure Azure SQL Database multi-factor authentication for SQL Server Management Studio. -For an overview of Azure SQL Database multi-factor authentication, see [Overview of Azure SQL Database multi-factor authentication for SQL Server Management Studio](sql-database-ssms-mfa-authentication.md). +For an overview of Azure SQL Database multi-factor authentication, see [Universal Authentication with SQL Database and SQL Data Warehouse (SSMS support for MFA)](sql-database-ssms-mfa-authentication.md). ## Configuration steps @@ -62,7 +62,7 @@ When verification is complete, SSMS connects normally presuming valid credential ## Next steps -* For an overview of Azure SQL Database multi-factor authentication, see [Overview of Azure SQL Database multi-factor authentication for SQL Server Management Studio](sql-database-ssms-mfa-authentication.md). +* For an overview of Azure SQL Database multi-factor authentication, see Universal Authentication with SQL Database and SQL Data Warehouse (SSMS support for MFA)](sql-database-ssms-mfa-authentication.md). * Grant others access to your database: [SQL Database Authentication and Authorization: Granting Access](sql-database-manage-logins.md) Make sure others can connect through the firewall: [Configure an Azure SQL Database server-level firewall rule using the Azure portal](sql-database-configure-firewall-settings.md) diff --git a/articles/sql-database/toc.yml b/articles/sql-database/toc.yml index fb736a0e3790b..b4f50780d43d0 100644 --- a/articles/sql-database/toc.yml +++ b/articles/sql-database/toc.yml @@ -113,6 +113,18 @@ href: sql-database-recovery-using-backups.md - name: Failover groups href: sql-database-geo-replication-overview.md + - name: Configure security + href: sql-database-geo-replication-security-config.md + - name: App design & recovery + href: sql-database-designing-cloud-solutions-for-disaster-recovery.md + - name: App design & pools + href: sql-database-disaster-recovery-strategies-for-applications-with-elastic-pool.md + - name: App design & app upgrades + href: sql-database-manage-application-rolling-upgrade.md + - name: Recover from outage + href: sql-database-disaster-recovery.md + - name: Perform recovery drill + href: sql-database-disaster-recovery-drills.md - name: Load & move data items: - name: Migrate SQL Server DB @@ -143,6 +155,12 @@ href: sql-database-xevent-db-diff-from-svr.md - name: Compatibility levels href: sql-database-compatibility-level-query-performance-130.md + - name: Evaluate and tune + href: sql-database-troubleshoot-performance.md + - name: Monitor in-memory + href: sql-database-in-memory-oltp-monitoring.md + - name: Connectivity issues + href: sql-database-troubleshoot-common-connection-issues.md - name: Scale out apps items: - name: SaaS design patterns @@ -193,15 +211,29 @@ href: sql-database-develop-overview.md - name: Connectivity href: sql-database-libraries.md + - name: Authenticate App + href: sql-database-client-id-keys.md + - name: Error messages + href: sql-database-develop-error-messages.md + - name: Dapper + href: sql-database-elastic-scale-working-with-dapper.md + - name: Batching for perf + href: sql-database-use-batching-to-improve-performance.md + - name: SaaS app security + href: sql-database-elastic-tools-multi-tenant-row-level-security.md + - name: Connectivity guidance + href: sql-database-connectivity-issues.md + - name: Ports - ADO.NET + href: sql-database-develop-direct-route-ports-adonet-v12.md - name: How-to guides items: - name: Databases & servers items: - - name: Elastic pools - portal + - name: Elastic pools - Portal href: sql-database-elastic-pool-manage-portal.md - name: Elastic pools - PowerShell href: sql-database-elastic-pool-manage-powershell.md - - name: Elastic pools - Transact-SQL + - name: Elastic pools - T-SQL href: sql-database-elastic-pool-manage-tsql.md - name: Elastic pools - C# href: sql-database-elastic-pool-manage-csharp.md @@ -223,24 +255,12 @@ items: - name: Configure vault - backups href: sql-database-long-term-backup-retention-configure.md - - name: Configure security - href: sql-database-geo-replication-security-config.md - - name: App design & recovery - href: sql-database-designing-cloud-solutions-for-disaster-recovery.md - - name: App design and pools - href: sql-database-disaster-recovery-strategies-for-applications-with-elastic-pool.md - - name: App design and upgrades - href: sql-database-manage-application-rolling-upgrade.md - - name: Geo-replicate - portal + - name: Geo-replicate - Portal href: sql-database-geo-replication-portal.md - name: Geo-replicate- T-SQL - Configure href: sql-database-geo-replication-transact-sql.md - name: Geo-replicate - T-SQL - Failover href: sql-database-geo-replication-failover-transact-sql.md - - name: Recover from outage - href: sql-database-disaster-recovery.md - - name: Perform recovery drill - href: sql-database-disaster-recovery-drills.md - name: Recover single table href: sql-database-cloud-migrate-restore-single-table-azure-backup.md - name: Load & move data @@ -257,12 +277,8 @@ href: sql-database-advisor-portal.md - name: Use QPI href: sql-database-performance.md - - name: Evaluate and tune - href: sql-database-troubleshoot-performance.md - name: Create alerts href: sql-database-insights-alerts-portal.md - - name: Monitor in-memory - href: sql-database-in-memory-oltp-monitoring.md - name: Extended events - event file href: sql-database-xevent-code-event-file.md - name: Extended events - ring buffer @@ -315,24 +331,8 @@ href: sql-database-develop-cplusplus-simple.md - name: Excel href: sql-database-connect-excel.md - - name: Connectivity guidance - href: sql-database-connectivity-issues.md - - name: Connectivity issues - href: sql-database-troubleshoot-common-connection-issues.md - - name: Create DB with C # + - name: Create DB with C# href: sql-database-get-started-csharp.md - - name: Ports - ADO.NET - href: sql-database-develop-direct-route-ports-adonet-v12.md - - name: Authenticate App - href: sql-database-client-id-keys.md - - name: Error messages - href: sql-database-develop-error-messages.md - - name: Dapper - href: sql-database-elastic-scale-working-with-dapper.md - - name: Batching for perf - href: sql-database-use-batching-to-improve-performance.md - - name: SaaS app security - href: sql-database-elastic-tools-multi-tenant-row-level-security.md - name: SaaS app tutorial href: sql-database-wtp-overview.md - name: Reference diff --git a/articles/storage/TOC.md b/articles/storage/TOC.md index d8667e88a4699..7388983bd1d97 100644 --- a/articles/storage/TOC.md +++ b/articles/storage/TOC.md @@ -130,7 +130,8 @@ ### [Disaster recovery guidance](storage-disaster-recovery-guidance.md) ## Transfer Data ### [Move data to and from Storage](storage-moving-data.md) -### [AzCopy command-line utility](storage-use-azcopy.md) +### [AzCopy on Windows](storage-use-azcopy.md) +### [AzCopy on Linux](storage-use-azcopy-linux.md) ### [Using the Import/Export service](storage-import-export-service.md) ### [Using the Import/Export Tool](storage-import-export-tool-how-to.md) #### [Setting up the Import/Export Tool](storage-import-export-tool-setup.md) diff --git a/articles/storage/storage-azure-cli.md b/articles/storage/storage-azure-cli.md index 1584bc7b04f24..86d5c0d6f1ba6 100644 --- a/articles/storage/storage-azure-cli.md +++ b/articles/storage/storage-azure-cli.md @@ -13,7 +13,7 @@ ms.workload: storage ms.tgt_pltfrm: na ms.devlang: azurecli ms.topic: article -ms.date: 05/15/2017 +ms.date: 06/02/2017 ms.author: marsma --- @@ -252,7 +252,8 @@ az storage blob upload \ For more information on the different blob types, see [Understanding Block Blobs, Append Blobs, and Page Blobs](/rest/api/storageservices/Understanding-Block-Blobs--Append-Blobs--and-Page-Blobs). -### Download blobs from a container + +### Download a blob from a container This example demonstrates how to download a blob from a container: ```azurecli @@ -262,35 +263,47 @@ az storage blob download \ --file ~/mydownloadedblob.png ``` +### List the blobs in a container + +List the blobs in a container with the [az storage blob list](/cli/azure/storage/blob#list) command. + +```azurecli +az storage blob list \ + --container-name mycontainer \ + --output table +``` + ### Copy blobs You can copy blobs within or across storage accounts and regions asynchronously. -The following example demonstrates how to copy blobs from one storage account to another. We first create a container in another account, specifying that its blobs are publicly, anonymously accessible. Next, we upload a file to the container, and finally, copy the blob from that container into the **mycontainer** container in the current account. +The following example demonstrates how to copy blobs from one storage account to another. We first create a container in the source storage account, specifying public read-access for its blobs. Next, we upload a file to the container, and finally, copy the blob from that container into a container in the destination storage account. ```azurecli -# Create container in second account +# Create container in source account az storage container create \ - --account-name <accountName2> \ - --account-key <accountKey2> \ - --name mycontainer2 \ + --account-name sourceaccountname \ + --account-key sourceaccountkey \ + --name sourcecontainer \ --public-access blob -# Upload blob to container in second account +# Upload blob to container in source account az storage blob upload \ - --account-name <accountName2> \ - --account-key <accountKey2> \ - --file ~/Images/HelloWorld.png \ - --container-name mycontainer2 \ - --name myBlockBlob2 + --account-name sourceaccountname \ + --account-key sourceaccountkey \ + --container-name sourcecontainer \ + --file ~/Pictures/sourcefile.png \ + --name sourcefile.png -# Copy blob from second account to current account +# Copy blob from source account to destination account (destcontainer must exist) az storage blob copy start \ - --source-uri https://<accountname2>.blob.core.windows.net/mycontainer2/myBlockBlob2 \ - --destination-blob myBlobBlob \ - --destination-container mycontainer + --account-name destaccountname \ + --account-key destaccountkey \ + --destination-blob destfile.png \ + --destination-container destcontainer \ + --source-uri https://sourceaccountname.blob.core.windows.net/sourcecontainer/sourcefile.png ``` -The source blob URL (specified by `--source-uri`) must either be publicly accessible, or include a shared access signature (SAS) token. +In the above example, the destination container must already exist in the destination storage account for the copy operation to succeed. Additionally, the source blob specified in the `--source-uri` argument must either include a shared access signature (SAS) token, or be publicly accessible, as in this example. ### Delete a blob To delete a blob, use the `blob delete` command: diff --git a/articles/storage/storage-use-azcopy-linux.md b/articles/storage/storage-use-azcopy-linux.md new file mode 100644 index 0000000000000..f2ad1707ca99c --- /dev/null +++ b/articles/storage/storage-use-azcopy-linux.md @@ -0,0 +1,757 @@ +--- +title: Copy or move data to Azure Storage with AzCopy on Linux | Microsoft Docs +description: Use the AzCopy on Linux utility to move or copy data to or from blob and file content. Copy data to Azure Storage from local files, or copy data within or between storage accounts. Easily migrate your data to Azure Storage. +services: storage +documentationcenter: '' +author: seguler +manager: jahogg +editor: tysonn + +ms.assetid: aa155738-7c69-4a83-94f8-b97af4461274 +ms.service: storage +ms.workload: storage +ms.tgt_pltfrm: na +ms.devlang: na +ms.topic: article +ms.date: 05/11/2017 +ms.author: seguler + +--- +# Transfer data with AzCopy on Linux +AzCopy on Linux is a command-line utility designed for copying data to and from Microsoft Azure Blob and File storage using simple commands with optimal performance. You can copy data from one object to another within your storage account, or between storage accounts. + +There are two versions of AzCopy that you can download. AzCopy on Linux is built with .NET Core Framework, which targets Linux platforms offering POSIX style command-line options. [AzCopy on Windows](storage-use-azcopy.md) is built with .NET Framework, and offers Windows style command-line options. This article covers AzCopy on Linux. + +## Download and install AzCopy +### Installation on Linux + +AzCopy on Linux requires .NET Core framework on the platform. See the installation instructions on the [.NET Core](https://www.microsoft.com/net/core#linuxubuntu) page. + +As an example, let's install .NET Core on Ubuntu 16.10. For the latest installation guide, visit [.NET Core on Linux](https://www.microsoft.com/net/core#linuxubuntu) installation page. + + +```bash +sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ yakkety main" > /etc/apt/sources.list.d/dotnetdev.list' +sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893 +sudo apt-get update +sudo apt-get install dotnet-dev-1.0.3 +``` + +Once you have installed .NET Core, download and install AzCopy. + +```bash +wget -O azcopy.tar.gz https://aka.ms/downloadazcopyprlinux +tar -xf azcopy.tar.gz +sudo ./install.sh +``` + +You can remove the extracted files once AzCopy on Linux is installed. Alternatively if you do not have superuser privileges, you can also run AzCopy using the shell script 'azcopy' in the extracted folder. + +### Alternative Installation on Ubuntu + +**Ubuntu 14.04** + +Add apt source for .Net Core: + +```bash +sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list' +sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893 +``` + +Add apt source for Microsoft Linux product repository and install AzCopy: + +```bash +curl https://packages.microsoft.com/config/ubuntu/14.04/prod.list > ./microsoft-prod.list +sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/ +curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg +sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/ +``` + +```bash +sudo apt-get update +sudo apt-get install azcopy +``` + +**Ubuntu 16.04** + +Add apt source for .Net Core: + +```bash +sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ xenial main" > /etc/apt/sources.list.d/dotnetdev.list' +sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893 +``` + +Add apt source for Microsoft Linux product repository and install AzCopy: + +```bash +curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > ./microsoft-prod.list +sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/ +curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg +sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/ +``` + +```bash +sudo apt-get update +sudo apt-get install azcopy +``` + +**Ubuntu 16.10** + +Add apt source for .Net Core: + +```bash +sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ yakkety main" > /etc/apt/sources.list.d/dotnetdev.list' +sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893 +``` + +Add apt source for Microsoft Linux product repository and install AzCopy: + +```bash +curl https://packages.microsoft.com/config/ubuntu/16.10/prod.list > ./microsoft-prod.list +sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/ +curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg +sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/ +``` + +```bash +sudo apt-get update +sudo apt-get install azcopy +``` + +## Writing your first AzCopy command +The basic syntax for AzCopy commands is: + +```azcopy +azcopy --source <source> --destination <destination> [Options] +``` + +The following examples demonstrate various scenarios for copying data to and from Microsoft Azure Blobs and Files. Refer to the `azcopy --help` menu for a detailed explanation of the parameters used in each sample. + +## Blob: Download +### Download single blob + +```azcopy +azcopy \ + --source https://myaccount.blob.core.windows.net/mycontainer \ + --destination /mnt/myfiles \ + --source-key <key> \ + --include "abc.txt" +``` + +If the folder `/mnt/myfiles` does not exist, AzCopy creates it and downloads `abc.txt ` into the new folder. + +### Download single blob from secondary region + +```azcopy +azcopy \ + --source https://myaccount-secondary.blob.core.windows.net/mynewcontainer \ + --destination /mnt/myfiles \ + --source-key <key> \ + --include "abc.txt" +``` + +Note that you must have read-access geo-redundant storage enabled. + +### Download all blobs + +```azcopy +azcopy \ + --source https://myaccount.blob.core.windows.net/mycontainer \ + --destination /mnt/myfiles \ + --source-key <key> \ + --recursive +``` + +Assume the following blobs reside in the specified container: + +``` +abc.txt +abc1.txt +abc2.txt +vd1/a.txt +vd1/abcd.txt +``` + +After the download operation, the directory `/mnt/myfiles` includes the following files: + +``` +/mnt/myfiles/abc.txt +/mnt/myfiles/abc1.txt +/mnt/myfiles/abc2.txt +/mnt/myfiles/vd1/a.txt +/mnt/myfiles/vd1/abcd.txt +``` + +If you do not specify option `--recursive`, no blob will be downloaded. + +### Download blobs with specified prefix + +```azcopy +azcopy \ + --source https://myaccount.blob.core.windows.net/mycontainer \ + --destination /mnt/myfiles \ + --source-key <key> \ + --include "a" \ + --recursive +``` + +Assume the following blobs reside in the specified container. All blobs beginning with the prefix `a` are downloaded. + +``` +abc.txt +abc1.txt +abc2.txt +xyz.txt +vd1\a.txt +vd1\abcd.txt +``` + +After the download operation, the folder `/mnt/myfiles` includes the following files: + +``` +/mnt/myfiles/abc.txt +/mnt/myfiles/abc1.txt +/mnt/myfiles/abc2.txt +``` + +The prefix applies to the virtual directory, which forms the first part of the blob name. In the example shown above, the virtual directory does not match the specified prefix, so no blob is downloaded. In addition, if the option `--recursive` is not specified, AzCopy does not download any blobs. + +### Set the last-modified time of exported files to be same as the source blobs + +```azcopy +azcopy \ + --source https://myaccount.blob.core.windows.net/mycontainer \ + --destination "/mnt/myfiles" \ + --source-key <key> \ + --preserve-last-modified-time +``` + +You can also exclude blobs from the download operation based on their last-modified time. For example, if you want to exclude blobs whose last modified time is the same or newer than the destination file, add the `--exclude-newer` option: + +```azcopy +azcopy \ + --source https://myaccount.blob.core.windows.net/mycontainer \ + --destination /mnt/myfiles \ + --source-key <key> \ + --preserve-last-modified-time \ + --exclude-newer +``` + +Or if you want to exclude blobs whose last modified time is the same or older than the destination file, add the `--exclude-older` option: + +```azcopy +azcopy \ + --source https://myaccount.blob.core.windows.net/mycontainer \ + --destination /mnt/myfiles \ + --source-key <key> \ + --preserve-last-modified-time \ + --exclude-older +``` + +## Blob: Upload +### Upload single file + +```azcopy +azcopy \ + --source /mnt/myfiles \ + --destination https://myaccount.blob.core.windows.net/mycontainer \ + --dest-key <key> \ + --include "abc.txt" +``` + +If the specified destination container does not exist, AzCopy creates it and uploads the file into it. + +### Upload single file to virtual directory + +```azcopy +azcopy \ + --source /mnt/myfiles \ + --destination https://myaccount.blob.core.windows.net/mycontainer \ + --dest-key <key> \ + --include "abc.txt" +``` + +If the specified virtual directory does not exist, AzCopy uploads the file to include the virtual directory in the blob name (*e.g.*, `vd/abc.txt` in the example above). + +### Upload all files + +```azcopy +azcopy \ + --source /mnt/myfiles \ + --destination https://myaccount.blob.core.windows.net/mycontainer \ + --dest-key <key> \ + --recursive +``` + +Specifying option `--recursive` uploads the contents of the specified directory to Blob storage recursively, meaning that all subfolders and their files are uploaded as well. For instance, assume the following files reside in folder `/mnt/myfiles`: + +``` +/mnt/myfiles/abc.txt +/mnt/myfiles/abc1.txt +/mnt/myfiles/abc2.txt +/mnt/myfiles/subfolder/a.txt +/mnt/myfiles/subfolder/abcd.txt +``` + +After the upload operation, the container includes the following files: + +``` +abc.txt +abc1.txt +abc2.txt +subfolder/a.txt +subfolder/abcd.txt +``` + +When the option `--recursive` is not specified, only the following three files are uploaded: + +``` +abc.txt +abc1.txt +abc2.txt +``` + +### Upload files matching specified pattern + +```azcopy +azcopy \ + --source /mnt/myfiles \ + --destination https://myaccount.blob.core.windows.net/mycontainer \ + --dest-key <key> \ + --include "a*" \ + --recursive +``` + +Assume the following files reside in folder `/mnt/myfiles`: + +``` +/mnt/myfiles/abc.txt +/mnt/myfiles/abc1.txt +/mnt/myfiles/abc2.txt +/mnt/myfiles/xyz.txt +/mnt/myfiles/subfolder/a.txt +/mnt/myfiles/subfolder/abcd.txt +``` + +After the upload operation, the container includes the following files: + +``` +abc.txt +abc1.txt +abc2.txt +subfolder/a.txt +subfolder/abcd.txt +``` + +When the option `--recursive` is not specified, AzCopy skips files that are in sub-directories: + +``` +abc.txt +abc1.txt +abc2.txt +``` + +### Specify the MIME content type of a destination blob +By default, AzCopy sets the content type of a destination blob to `application/octet-stream`. However, you can explicitly specify the content type via the option `--set-content-type [content-type]`. This syntax sets the content type for all blobs in an upload operation. + +```azcopy +azcopy \ + --source /mnt/myfiles \ + --destination https://myaccount.blob.core.windows.net/myContainer/ \ + --dest-key <key> \ + --include "ab" \ + --set-content-type "video/mp4" +``` + +If the option `--set-content-type` is specified without a value, then AzCopy sets each blob or file's content type according to its file extension. + +```azcopy +azcopy \ + --source /mnt/myfiles \ + --destination https://myaccount.blob.core.windows.net/myContainer/ \ + --dest-key <key> \ + --include "ab" \ + --set-content-type +``` + +## Blob: Copy +### Copy single blob within Storage account + +```azcopy +azcopy \ + --source https://myaccount.blob.core.windows.net/mycontainer1 \ + --destination https://myaccount.blob.core.windows.net/mycontainer2 \ + --source-key <key> \ + --dest-key <key> \ + --include "abc.txt" +``` + +When you copy a blob without --sync-copy option, a [server-side copy](http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06/12/introducing-asynchronous-cross-account-copy-blob.aspx) operation is performed. + +### Copy single blob across Storage accounts + +```azcopy +azcopy \ + --source https://sourceaccount.blob.core.windows.net/mycontainer1 \ + --destination https://destaccount.blob.core.windows.net/mycontainer2 \ + --source-key <key1> \ + --dest-key <key2> \ + --include "abc.txt" +``` + +When you copy a blob without --sync-copy option, a [server-side copy](http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06/12/introducing-asynchronous-cross-account-copy-blob.aspx) operation is performed. + +### Copy single blob from secondary region to primary region + +```azcopy +azcopy \ + --source https://myaccount1-secondary.blob.core.windows.net/mynewcontainer1 \ + --destination https://myaccount2.blob.core.windows.net/mynewcontainer2 \ + --source-key <key1> \ + --dest-key <key2> \ + --include "abc.txt" +``` + +Note that you must have read-access geo-redundant storage enabled. + +### Copy single blob and its snapshots across Storage accounts + +```azcopy +azcopy \ + --source https://sourceaccount.blob.core.windows.net/mycontainer1 \ + --destination https://destaccount.blob.core.windows.net/mycontainer2 \ + --source-key <key1> \ + --dest-key <key2> \ + --include "abc.txt" \ + --include-snapshot +``` + +After the copy operation, the target container includes the blob and its snapshots. The container includes the following blob and its snapshots: + +``` +abc.txt +abc (2013-02-25 080757).txt +abc (2014-02-21 150331).txt +``` + +### Synchronously copy blobs across Storage accounts +AzCopy by default copies data between two storage endpoints asynchronously. Therefore, the copy operation runs in the background using spare bandwidth capacity that has no SLA in terms of how fast a blob is copied. + +The `--sync-copy` option ensures that the copy operation gets consistent speed. AzCopy performs the synchronous copy by downloading the blobs to copy from the specified source to local memory, and then uploading them to the Blob storage destination. + +```azcopy +azcopy \ + --source https://myaccount1.blob.core.windows.net/myContainer/ \ + --destination https://myaccount2.blob.core.windows.net/myContainer/ \ + --source-key <key1> \ + --dest-key <key2> \ + --include "ab" \ + --sync-copy +``` + +`--sync-copy` might generate additional egress cost compared to asynchronous copy. The recommended approach is to use this option in an Azure VM, that is in the same region as your source storage account to avoid egress cost. + +## File: Download +### Download single file + +```azcopy +azcopy \ + --source https://myaccount.file.core.windows.net/myfileshare/myfolder1/ \ + --destination /mnt/myfiles \ + --source-key <key> \ + --include "abc.txt" +``` + +If the specified source is an Azure file share, then you must either specify the exact file name, (*e.g.* `abc.txt`) to download a single file, or specify option `--recursive` to download all files in the share recursively. Attempting to specify both a file pattern and option `--recursive` together results in an error. + +### Download all files + +```azcopy +azcopy \ + --source https://myaccount.file.core.windows.net/myfileshare/ \ + --destination /mnt/myfiles \ + --source-key <key> \ + --recursive +``` + +Note that any empty folders are not downloaded. + +## File: Upload +### Upload single file + +```azcopy +azcopy \ + --source /mnt/myfiles \ + --destination https://myaccount.file.core.windows.net/myfileshare/ \ + --dest-key <key> \ + --include abc.txt +``` + +### Upload all files + +```azcopy +azcopy \ + --source /mnt/myfiles \ + --destination https://myaccount.file.core.windows.net/myfileshare/ \ + --dest-key <key> \ + --recursive +``` + +Note that any empty folders are not uploaded. + +### Upload files matching specified pattern + +```azcopy +azcopy \ + --source /mnt/myfiles \ + --destination https://myaccount.file.core.windows.net/myfileshare/ \ + --dest-key <key> \ + --include "ab*" \ + --recursive +``` + +## File: Copy +### Copy across file shares + +```azcopy +azcopy \ + --source https://myaccount1.file.core.windows.net/myfileshare1/ \ + --destination https://myaccount2.file.core.windows.net/myfileshare2/ \ + --source-key <key1> \ + --dest-key <key2> \ + --recursive +``` +When you copy a file across file shares, a [server-side copy](http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06/12/introducing-asynchronous-cross-account-copy-blob.aspx) operation is performed. + +### Copy from file share to blob + +```azcopy +azcopy \ + --source https://myaccount1.file.core.windows.net/myfileshare/ \ + --destination https://myaccount2.blob.core.windows.net/mycontainer/ \ + --source-key <key1> \ + --dest-key <key2> \ + --recursive +``` +When you copy a file from file share to blob, a [server-side copy](http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06/12/introducing-asynchronous-cross-account-copy-blob.aspx) operation is performed. + +### Copy from blob to file share + +```azcopy +azcopy \ + --source https://myaccount1.blob.core.windows.net/mycontainer/ \ + --destination https://myaccount2.file.core.windows.net/myfileshare/ \ + --source-key <key1> \ + --dest-key <key2> \ + --recursive +``` +When you copy a file from blob to file share, a [server-side copy](http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06/12/introducing-asynchronous-cross-account-copy-blob.aspx) operation is performed. + +### Synchronously copy files +You can specify the `--sync-copy` option to copy data from File Storage to File Storage, from File Storage to Blob Storage and from Blob Storage to File Storage synchronously. AzCopy runs this operation by downloading the source data to local memory, and then uploading it to destination. In this case, standard egress cost applies. + +```azcopy +azcopy \ + --source https://myaccount1.file.core.windows.net/myfileshare1/ \ + --destination https://myaccount2.file.core.windows.net/myfileshare2/ \ + --source-key <key1> \ + --dest-key <key2> \ + --recursive \ + --sync-copy +``` + +When copying from File Storage to Blob Storage, the default blob type is block blob, user can specify option `/BlobType:page` to change the destination blob type. + +Note that `--sync-copy` might generate additional egress cost comparing to asynchronous copy. The recommended approach is to use this option in an Azure VM, that is in the same region as your source storage account to avoid egress cost. + +## Other AzCopy features +### Only copy data that doesn't exist in the destination +The `--exclude-older` and `--exclude-newer` parameters allow you to exclude older or newer source resources from being copied, respectively. If you only want to copy source resources that don't exist in the destination, you can specify both parameters in the AzCopy command: + + --source http://myaccount.blob.core.windows.net/mycontainer --destination /mnt/myfiles --source-key <sourcekey> --recursive --exclude-older --exclude-newer + + --source /mnt/myfiles --destination http://myaccount.file.core.windows.net/myfileshare --dest-key <destkey> --recursive --exclude-older --exclude-newer + + --source http://myaccount.blob.core.windows.net/mycontainer --destination http://myaccount.blob.core.windows.net/mycontainer1 --source-key <sourcekey> --dest-key <destkey> --recursive --exclude-older --exclude-newer + +### Use a configuration file to specify command-line parameters + +```azcopy +azcopy --config-file "azcopy-config.ini" +``` + +You can include any AzCopy command-line parameters in a configuration file. AzCopy processes the parameters in the file as if they had been specified on the command line, performing a direct substitution with the contents of the file. + +Assume a configuration file named `copyoperation`, that contains the following lines. Each AzCopy parameter can be specified on a single line. + + --source http://myaccount.blob.core.windows.net/mycontainer --destination /mnt/myfiles --source-key <sourcekey> --recursive --quiet + +or on separate lines: + + --source http://myaccount.blob.core.windows.net/mycontainer + --destination /mnt/myfiles + --source-key<sourcekey> + --recursive + --quiet + +AzCopy fails if you split the parameter across two lines, as shown here for the `--source-key` parameter: + + http://myaccount.blob.core.windows.net/mycontainer + /mnt/myfiles + --sourcekey + <sourcekey> + --recursive + --quiet + +### Specify a shared access signature (SAS) + +```azcopy +azcopy \ + --source https://myaccount.blob.core.windows.net/mycontainer1 \ + --destination https://myaccount.blob.core.windows.net/mycontainer2 \ + --source-sas <SAS1> \ + --dest-sas <SAS2> \ + --include abc.txt +``` + +You can also specify a SAS on the container URI: + +```azcopy +azcopy \ + --source https://myaccount.blob.core.windows.net/mycontainer1/?SourceSASToken \ + --destination /mnt/myfiles \ + --recursive +``` + +Note that AzCopy currently only supports the [Account SAS](https://docs.microsoft.com/en-us/azure/storage/storage-dotnet-shared-access-signature-part-1). + +### Journal file folder +Each time you issue a command to AzCopy, it checks whether a journal file exists in the default folder, or whether it exists in a folder that you specified via this option. If the journal file does not exist in either place, AzCopy treats the operation as new and generates a new journal file. + +If the journal file does exist, AzCopy checks whether the command line that you input matches the command line in the journal file. If the two command lines match, AzCopy resumes the incomplete operation. If they do not match, AzCopy prompts user to either overwrite the journal file to start a new operation, or to cancel the current operation. + +If you want to use the default location for the journal file: + +```azcopy +azcopy \ + --source /mnt/myfiles \ + --destination https://myaccount.blob.core.windows.net/mycontainer \ + --dest-key <key> \ + --resume +``` + +If you omit option `--resume`, or specify option `--resume` without the folder path, as shown above, AzCopy creates the journal file in the default location, which is `~\Microsoft\Azure\AzCopy`. If the journal file already exists, then AzCopy resumes the operation based on the journal file. + +If you want to specify a custom location for the journal file: + +```azcopy +azcopy \ + --source /mnt/myfiles \ + --destination https://myaccount.blob.core.windows.net/mycontainer \ + --dest-key key \ + --resume "/mnt/myjournal" +``` + +This example creates the journal file if it does not already exist. If it does exist, then AzCopy resumes the operation based on the journal file. + +If you want to resume an AzCopy operation, repeat the same command. AzCopy on Linux then will prompt for confirmation: + +```azcopy +Incomplete operation with same command line detected at the journal directory "/home/myaccount/Microsoft/Azure/AzCopy", do you want to resume the operation? Choose Yes to resume, choose No to overwrite the journal to start a new operation. (Yes/No) +``` + +### Output verbose logs + +```azcopy +azcopy \ + --source /mnt/myfiles \ + --destination https://myaccount.blob.core.windows.net/mycontainer \ + --dest-key <key> \ + --verbose +``` + +### Specify the number of concurrent operations to start +Option `--parallel-level` specifies the number of concurrent copy operations. By default, AzCopy starts a certain number of concurrent operations to increase the data transfer throughput. The number of concurrent operations is equal eight times the number of processors you have. If you are running AzCopy across a low-bandwidth network, you can specify a lower number for --parallel-level to avoid failure caused by resource competition. + +[!TIP] +>To view the complete list of AzCopy parameters, check out 'azcopy --help' menu. + +## Known issues and best practices +### Error: .NET Core is not found in the system. +If you encounter an error stating that .NET Core is not installed in the system, the PATH to the .NET Core binary `dotnet` may be missing. + +In order to address this issue, find the .NET Core binary in the system: +```bash +sudo find / -name dotnet +``` + +This returns the path to the dotnet binary. + + /opt/rh/rh-dotnetcore11/root/usr/bin/dotnet + /opt/rh/rh-dotnetcore11/root/usr/lib64/dotnetcore/dotnet + /opt/rh/rh-dotnetcore11/root/usr/lib64/dotnetcore/shared/Microsoft.NETCore.App/1.1.2/dotnet + +Now add this path to the PATH variable. For sudo, edit secure_path to contain the path to the dotnet binary: +```bash +sudo visudo +### Append the path found in the preceding example to 'secure_path' variable +``` + +In this example, secure_path variable reads as: + +``` +secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/opt/rh/rh-dotnetcore11/root/usr/bin/ +``` + +For the current user, edit .bash_profile/.profile to include the path to the dotnet binary in PATH variable +```bash +vi ~/.bash_profile +### Append the path found in the preceding example to 'PATH' variable +``` + +Verify that .NET Core is now in PATH: +```bash +which dotnet +sudo which dotnet +``` + +### Error Installing AzCopy +If you encounter issues with AzCopy installation, you may try to run AzCopy using the bash script in the extracted `azcopy` folder. + +```bash +cd azcopy +./azcopy +``` + +### Limit concurrent writes while copying data +When you copy blobs or files with AzCopy, keep in mind that another application may be modifying the data while you are copying it. If possible, ensure that the data you are copying is not being modified during the copy operation. For example, when copying a VHD associated with an Azure virtual machine, make sure that no other applications are currently writing to the VHD. A good way to do this is by leasing the resource to be copied. Alternately, you can create a snapshot of the VHD first and then copy the snapshot. + +If you cannot prevent other applications from writing to blobs or files while they are being copied, then keep in mind that by the time the job finishes, the copied resources may no longer have full parity with the source resources. + +### Run one AzCopy instance on one machine. +AzCopy is designed to maximize the utilization of your machine resource to accelerate the data transfer, we recommend you run only one AzCopy instance on one machine, and specify the option `--parallel-level` if you need more concurrent operations. For more details, type `AzCopy --help parallel-level` at the command line. + +## Next steps +For more information about Azure Storage and AzCopy, see the following resources: + +### Azure Storage documentation: +* [Introduction to Azure Storage](storage-introduction.md) +* [Create a storage account](storage-create-storage-account.md) +* [Manage blobs with Storage Explorer](https://docs.microsoft.com/en-us/azure/vs-azure-tools-storage-explorer-blobs) +* [Using the Azure CLI 2.0 with Azure Storage](storage-azure-cli.md) +* [How to use Blob storage from C++](storage-c-plus-plus-how-to-use-blobs.md) +* [How to use Blob storage from Java](storage-java-how-to-use-blob-storage.md) +* [How to use Blob storage from Node.js](storage-nodejs-how-to-use-blob-storage.md) +* [How to use Blob storage from Python](storage-python-how-to-use-blob-storage.md) + +### Azure Storage blog posts: +* [Announcing AzCopy on Linux Preview](https://azure.microsoft.com/en-in/blog/announcing-azcopy-on-linux-preview/) +* [Introducing Azure Storage Data Movement Library Preview](https://azure.microsoft.com/blog/introducing-azure-storage-data-movement-library-preview-2/) +* [AzCopy: Introducing synchronous copy and customized content type](http://blogs.msdn.com/b/windowsazurestorage/archive/2015/01/13/azcopy-introducing-synchronous-copy-and-customized-content-type.aspx) +* [AzCopy: Announcing General Availability of AzCopy 3.0 plus preview release of AzCopy 4.0 with Table and File support](http://blogs.msdn.com/b/windowsazurestorage/archive/2014/10/29/azcopy-announcing-general-availability-of-azcopy-3-0-plus-preview-release-of-azcopy-4-0-with-table-and-file-support.aspx) +* [AzCopy: Optimized for Large-Scale Copy Scenarios](http://go.microsoft.com/fwlink/?LinkId=507682) +* [AzCopy: Support for read-access geo-redundant storage](http://blogs.msdn.com/b/windowsazurestorage/archive/2014/04/07/azcopy-support-for-read-access-geo-redundant-account.aspx) +* [AzCopy: Transfer data with restartable mode and SAS token](http://blogs.msdn.com/b/windowsazurestorage/archive/2013/09/07/azcopy-transfer-data-with-re-startable-mode-and-sas-token.aspx) +* [AzCopy: Using cross-account Copy Blob](http://blogs.msdn.com/b/windowsazurestorage/archive/2013/04/01/azcopy-using-cross-account-copy-blob.aspx) +* [AzCopy: Uploading/downloading files for Azure Blobs](http://blogs.msdn.com/b/windowsazurestorage/archive/2012/12/03/azcopy-uploading-downloading-files-for-windows-azure-blobs.aspx) + diff --git a/articles/storage/storage-use-azcopy.md b/articles/storage/storage-use-azcopy.md index 2d0ea40c6b1d9..bb107e4b462be 100644 --- a/articles/storage/storage-use-azcopy.md +++ b/articles/storage/storage-use-azcopy.md @@ -1,6 +1,6 @@ --- -title: Copy or move data to Storage with AzCopy | Microsoft Docs -description: Use the AzCopy utility to move or copy data to or from blob, table, and file content. Copy data to Azure Storage from local files, or copy data within or between storage accounts. Easily migrate your data to Azure Storage. +title: Copy or move data to Azure Storage with AzCopy on Windows| Microsoft Docs +description: Use the AzCopy on Windows utility to move or copy data to or from blob, table, and file content. Copy data to Azure Storage from local files, or copy data within or between storage accounts. Easily migrate your data to Azure Storage. services: storage documentationcenter: '' author: seguler @@ -13,25 +13,21 @@ ms.workload: storage ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 01/30/2017 +ms.date: 05/14/2017 ms.author: seguler --- -# Transfer data with the AzCopy Command-Line Utility -## Overview -AzCopy is a Windows command-line utility designed for copying data to and from Microsoft Azure Blob, File, and Table storage using simple commands with optimal performance. You can copy data from one object to another within your storage account, or between storage accounts. +# Transfer data with the AzCopy on Windows +AzCopy is a command-line utility designed for copying data to and from Microsoft Azure Blob, File, and Table storage using simple commands with optimal performance. You can copy data from one object to another within your storage account, or between storage accounts. -> [!NOTE] -> This guide assumes that you are already familiar with [Azure Storage](https://azure.microsoft.com/services/storage/). If not, reading the [Introduction to Azure Storage](storage-introduction.md) documentation will be helpful. Most importantly, you will need to [create a Storage account](storage-create-storage-account.md#create-a-storage-account) in order to start using AzCopy. -> -> +There are two versions of AzCopy that you can download. AzCopy on Windows is built with .NET Framework, and offers Windows style command-line options. [AzCopy on Linux](storage-use-azcopy-linux.md) is built with .NET Core Framework which targets Linux platforms offering POSIX style command-line options. This article covers AzCopy on Windows. ## Download and install AzCopy -### Windows -Download the [latest version of AzCopy](http://aka.ms/downloadazcopy). +### AzCopy on Windows +Download the [latest version of AzCopy on Windows](http://aka.ms/downloadazcopy). -### Mac/Linux -AzCopy is not available for Mac/Linux OSs. However, Azure CLI is a suitable alternative for copying data to and from Azure Storage. Read [Using the Azure CLI with Azure Storage](storage-azure-cli.md) to learn more. +#### Installation on Windows +After installing AzCopy on Windows using the installer, open a command window and navigate to the AzCopy installation directory on your computer - where the `AzCopy.exe` executable is located. If desired, you can add the AzCopy installation location to your system path. By default, AzCopy is installed to `%ProgramFiles(x86)%\Microsoft SDKs\Azure\AzCopy` or `%ProgramFiles%\Microsoft SDKs\Azure\AzCopy`. ## Writing your first AzCopy command The basic syntax for AzCopy commands is: @@ -40,8 +36,6 @@ The basic syntax for AzCopy commands is: AzCopy /Source:<source> /Dest:<destination> [Options] ``` -Open a command window and navigate to the AzCopy installation directory on your computer - where the `AzCopy.exe` executable is located. If desired, you can add the AzCopy installation location to your system path. By default, AzCopy is installed to `%ProgramFiles(x86)%\Microsoft SDKs\Azure\AzCopy` or `%ProgramFiles%\Microsoft SDKs\Azure\AzCopy`. - The following examples demonstrate a variety of scenarios for copying data to and from Microsoft Azure Blobs, Files, and Tables. Refer to the [AzCopy Parameters](#azcopy-parameters) section for a detailed explanation of the parameters used in each sample. ## Blob: Download @@ -894,6 +888,7 @@ For more information about Azure Storage and AzCopy, refer to the following reso * [How to use File storage from .NET](storage-dotnet-how-to-use-files.md) * [How to use Table storage from .NET](storage-dotnet-how-to-use-tables.md) * [How to create, manage, or delete a storage account](storage-create-storage-account.md) +* [Transfer data with AzCopy on Linux](storage-use-azcopy-linux.md) ### Azure Storage blog posts: * [Introducing Azure Storage Data Movement Library Preview](https://azure.microsoft.com/blog/introducing-azure-storage-data-movement-library-preview-2/) diff --git a/articles/virtual-machines/linux/planned-maintenance.md b/articles/virtual-machines/linux/planned-maintenance.md index f373940cfcfde..18f3edf00f136 100644 --- a/articles/virtual-machines/linux/planned-maintenance.md +++ b/articles/virtual-machines/linux/planned-maintenance.md @@ -43,4 +43,4 @@ virtual machines: Please note that this page describes how Microsoft Azure performs planned maintenance. For more information about unplanned events (outages), see [Manage the availability of virtual -machines](../windows/manage-availability.md). \ No newline at end of file +machines](../linux/manage-availability.md). diff --git a/articles/virtual-machines/linux/upload-vhd.md b/articles/virtual-machines/linux/upload-vhd.md index 3f4a8bcbe1225..3aef4e5985fde 100644 --- a/articles/virtual-machines/linux/upload-vhd.md +++ b/articles/virtual-machines/linux/upload-vhd.md @@ -243,7 +243,7 @@ Now, create your VM with [az vm create](/cli/azure/vm#create) and specify the UR az vm create --resource-group myResourceGroup --location westus \ --name myVM --os-type linux \ --admin-username azureuser --ssh-key-value ~/.ssh/id_rsa.pub \ - --attach-os-disk https://vhdstoragezw9.blob.core.windows.net/system/Microsoft.Compute/Images/vhds/my_image-osDisk.vhd + --attach-os-disk myUMDiskFromVHD ``` ### Azure 2.0 - unmanaged disks diff --git a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-iis-using-dsc.md b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-iis-using-dsc.md index fcc00b37ddffe..7d178f4b3e01c 100644 --- a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-iis-using-dsc.md +++ b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-iis-using-dsc.md @@ -25,6 +25,8 @@ This script creates a virtual machine, and uses the Azure Virtual Machine DSC cu [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + [!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] ## Sample script diff --git a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-iis.md b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-iis.md index a53aabbca1f5d..088344895d513 100644 --- a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-iis.md +++ b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-iis.md @@ -24,6 +24,8 @@ This script creates an Azure Virtual Machine running Windows Server 2016, and us [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + [!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] ## Sample script diff --git a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-nsg.md b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-nsg.md index 6fcedbdaf953a..53b1837b1d52c 100644 --- a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-nsg.md +++ b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-nsg.md @@ -24,6 +24,8 @@ This script creates two virtual machines and secures incoming traffic to both. O [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + [!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] ## Sample script diff --git a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-oms.md b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-oms.md index 6a08dceb0a044..a9f803bd0dd2d 100644 --- a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-oms.md +++ b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-oms.md @@ -24,6 +24,8 @@ This script creates an Azure Virtual Machine, installs the Operations Management [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + [!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] ## Sample script diff --git a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-quick-create.md b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-quick-create.md index 1ab2e9c0c6b2f..11d41fd7c5a69 100644 --- a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-quick-create.md +++ b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm-quick-create.md @@ -24,6 +24,8 @@ This script creates an Azure Virtual Machine running Windows Server 2016. After [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + [!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] ## Sample script diff --git a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm.md b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm.md index 24ce581a1f171..5bf9e44b6e2f1 100644 --- a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm.md +++ b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-create-vm.md @@ -24,6 +24,8 @@ This script creates an Azure Virtual Machine running Windows Server 2016. After [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + [!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] ## Sample script diff --git a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-nlb.md b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-nlb.md index 5730615d85ce5..687a9751835f1 100644 --- a/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-nlb.md +++ b/articles/virtual-machines/scripts/virtual-machines-windows-cli-sample-nlb.md @@ -24,6 +24,8 @@ This script sample creates everything needed to run several Ubuntu virtual machi [!INCLUDE [sample-cli-install](../../../includes/sample-cli-install.md)] +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + [!INCLUDE [quickstarts-free-trial-note](../../../includes/quickstarts-free-trial-note.md)] ## Sample script diff --git a/articles/virtual-machines/windows/aws-to-azure.md b/articles/virtual-machines/windows/aws-to-azure.md index b2a5c90f44e9b..4e67d76572ec7 100644 --- a/articles/virtual-machines/windows/aws-to-azure.md +++ b/articles/virtual-machines/windows/aws-to-azure.md @@ -1,6 +1,6 @@ --- -title: Migrate AWS VMs to Azure | Microsoft Docs -description: Migrate an Amazon Web Services (AWS) EC2 instance to Azure Virtual Machines. This scenario uses Managed Disks to simplify your cloud storage. +title: Move a Windows AWS VMs to Azure | Microsoft Docs +description: Move an Amazon Web Services (AWS) EC2 Windows instance to Azure Virtual Machines using Azure PowerShell. services: virtual-machines-windows documentationcenter: '' author: cynthn @@ -14,338 +14,55 @@ ms.workload: infrastructure-services ms.tgt_pltfrm: vm-windows ms.devlang: na ms.topic: article -ms.date: 05/10/2017 +ms.date: 06/01/2017 ms.author: cynthn --- -# Migrate from Amazon Web Services (AWS) to Azure Managed Disks +# Move a Windows VM from Amazon Web Services (AWS) to Azure using PowerShell -You can migrate an Amazon Web Services (AWS) EC2 instance to Azure by uploading the virtual hard disk (VHD). If you want to create multiple virtual machines (VMs) in Azure from the same image, you must first generalize the VM and then export the generalized VHD to a local directory. Once the VHD is uploaded, you can create a new Azure VM that uses [Managed Disks](../../storage/storage-managed-disks-overview.md?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) for storage. Azure Managed Disks removes the need to manage storage accounts for Azure IaaS VMs. You have to only specify the type (Premium or Standard) and size of disk you need, and Azure creates and manages the disk for you. +If you are evaluating Azure virtual machines for hosting your workloads, you can export an existing Amazon Web Services (AWS) EC2 Windows VM instance then upload the virtual hard disk (VHD) to Azure. Once the VHD is uploaded, you can create a new VM in Azure from the VHD. -Before starting this process, make sure that you review [Plan for the migration to Managed Disks](on-prem-to-azure.md#plan-for-the-migration-to-managed-disks). +This topic covers moving a single VM from AWS to Azure. If you want to move VMs from AWS to Azure at scale, see [Migrate virtual machines in Amazon Web Services (AWS) to Azure with Azure Site Recovery](../../site-recovery/site-recovery-migrate-aws-to-azure.md). -Before uploading any VHD to Azure, you should follow [Prepare a Windows VHD or VHDX to upload to Azure](prepare-for-upload-vhd-image.md?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). - -## Before you begin -If you use PowerShell, make sure that you have the latest version of the AzureRM.Compute PowerShell module. Run the following command to install it. - -```powershell -Install-Module AzureRM.Compute -MinimumVersion 2.6.0 -``` -For more information, see [Azure PowerShell Versioning](/powershell/azure/overview). - - -## Generalize the VM - -Generalizing a VM using Sysprep removes any machine-specific information and personal account information from the VHD and prepares the machine to be used as an image. For details about Sysprep, see [How to Use Sysprep: An Introduction](http://technet.microsoft.com/library/bb457073.aspx). - -Make sure the server roles running on the machine are supported by Sysprep. For more information, see [Sysprep Support for Server Roles](https://msdn.microsoft.com/windows/hardware/commercialize/manufacture/desktop/sysprep-support-for-server-roles) - -> [!IMPORTANT] -> If you are running Sysprep before uploading your VHD to Azure for the first time, make sure you have [prepared your VM](prepare-for-upload-vhd-image.md?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) before running Sysprep. -> -> - -1. Sign in to the Windows virtual machine. -2. Open the Command Prompt window as an administrator. Change the directory to **%windir%\system32\sysprep**, and then run `sysprep.exe`. -3. In the **System Preparation Tool** dialog box, select **Enter System Out-of-Box Experience (OOBE)**, and make sure that the **Generalize** check box is selected. -4. In **Shutdown Options**, select **Shutdown**. -5. Click **OK**. - - ![Start Sysprep](./media/aws-to-azure/sysprepgeneral.png) -6. When Sysprep completes, it shuts down the virtual machine. Do not restart the VM. - - - -## Export the VHD from AWS - -1. If you are using Amazon Web Services (AWS), export the EC2 instance to a VHD in an Amazon S3 bucket. Follow the steps described in the Amazon documentation for Exporting Amazon EC2 Instances to install the Amazon EC2 command-line interface (CLI) tool and run the create-instance-export-task command to export the EC2 instance to a VHD file. Be sure to use VHD for the DISK_IMAGE_FORMAT variable when running the create-instance-export-task command. The exported VHD file is saved in the Amazon S3 bucket you designate during that process. - - ``` - aws ec2 create-instance-export-task --instance-id ID --target-environment TARGET_ENVIRONMENT ' - --export-to-s3-task DiskImageFormat=DISK_IMAGE_FORMAT,ContainerFormat=ova,S3Bucket=BUCKET,S3Prefix=PREFIX - ``` - -2. Download the VHD file from the S3 bucket. Select the VHD file, then select **Actions** > **Download**. - - - -## Upload the VHD - -You need to log in to Azure, create a storage account and upload the VHD to the storage account before you can create the image. - -### Log in to Azure - -If you don't already have PowerShell version installed, read [How to install and configure Azure PowerShell](/powershell/azure/overview). - -1. Open Azure PowerShell and sign in to your Azure account. A pop-up window opens for you to enter your Azure account credentials. - - ```powershell - Login-AzureRmAccount - ``` -2. Get the subscription IDs for your available subscriptions. - - ```powershell - Get-AzureRmSubscription - ``` -3. Set the correct subscription using the subscription ID. Replace `<subscriptionID>` with the ID of the correct subscription. - - ```powershell - Select-AzureRmSubscription -SubscriptionId "<subscriptionID>" - ``` - -### Get the storage account -You need a storage account in Azure to store the uploaded VM image. You can either use an existing storage account or create a new one. - -If you are using the VHD to create a managed disk for a VM, the storage account location must be same the location where you create the VM. - -To show the available storage accounts, type: - -```powershell -Get-AzureRmStorageAccount -``` - -If you want to use an existing storage account, proceed to the [Upload the VM image](#upload-the-vm-vhd-to-your-storage-account) section. - -If you need to create a storage account, follow these steps: - -1. You need the name of the resource group where the storage account should be created. To find out all the resource groups that are in your subscription, type: - - ```powershell - Get-AzureRmResourceGroup - ``` - - To create a resource group named **myResourceGroup** in the **West US** region, type: - - ```powershell - New-AzureRmResourceGroup -Name myResourceGroup -Location "West US" - ``` - -2. Create a storage account named **mystorageaccount** in this resource group by using the [New-AzureRmStorageAccount](/powershell/module/azurerm.storage/new-azurermstorageaccount) cmdlet: - - ```powershell - New-AzureRmStorageAccount -ResourceGroupName myResourceGroup -Name mystorageaccount -Location "West US" ` - -SkuName "Standard_LRS" -Kind "Storage" - ``` - - Valid values for -SkuName are: - - * **Standard_LRS** - Locally redundant storage. - * **Standard_ZRS** - Zone redundant storage. - * **Standard_GRS** - Geo redundant storage. - * **Standard_RAGRS** - Read access geo redundant storage. - * **Premium_LRS** - Premium locally redundant storage. - -### Upload the VHD - -Use the [Add-AzureRmVhd](/powershell/module/azurerm.compute/add-azurermvhd) cmdlet to upload the VHD to a container in your storage account. This example uploads the file **myVHD.vhd** from `"C:\Users\Public\Documents\Virtual hard disks\"` to a storage account named **mystorageaccount** in the **myResourceGroup** resource group. The file is placed into the container named **mycontainer** and the new file name is **myUploadedVHD.vhd**. - -```powershell -$rgName = "myResourceGroup" -$urlOfUploadedImageVhd = "https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd" -Add-AzureRmVhd -ResourceGroupName $rgName -Destination $urlOfUploadedImageVhd ` - -LocalFilePath "C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd" -``` - - -If successful, you get a response that looks similar to this: - -```powershell -MD5 hash is being calculated for the file C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd. -MD5 hash calculation is completed. -Elapsed time for the operation: 00:03:35 -Creating new page blob of size 53687091712... -Elapsed time for upload: 01:12:49 - -LocalFilePath DestinationUri -------------- -------------- -C:\Users\Public\Doc... https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd -``` - -Depending on your network connection and the size of your VHD file, this command may take a while to complete - -Save the **Destination URI** path to use later if you are going to create a managed disk or a new VM using the uploaded VHD. - -### Other options for uploading a VHD - -You can also upload a VHD to your storage account using one of the following: - -- [Azure Storage Copy Blob API](https://msdn.microsoft.com/library/azure/dd894037.aspx) - -- [Azure Storage Explorer Uploading Blobs](https://azurestorageexplorer.codeplex.com/) - -- [Storage Import/Export Service REST API Reference](https://msdn.microsoft.com/library/dn529096.aspx) - - We recommend using Import/Export Service if estimated uploading time is longer than 7 days. You can use [DataTransferSpeedCalculator](https://github.com/Azure-Samples/storage-dotnet-import-export-job-management/blob/master/DataTransferSpeedCalculator.html) to estimate the time from data size and transfer unit. - - Import/Export can be used to copy to a standard storage account. To use Premium storage, you need to copy from the standard storage to a premium storage account using a tool like AzCopy. - -## Create an image - -Create a managed image using your generalized OS VHD. - - -1. First, set the common parameters: - - ```powershell - $rgName = "myResourceGroupName" - $vmName = "myVM" - $location = "West Central US" - $imageName = "yourImageName" - $osVhdUri = "https://storageaccount.blob.core.windows.net/vhdcontainer/osdisk.vhd" - ``` - -4. Create the image using your generalized OS VHD. - - ```powershell - $imageConfig = New-AzureRmImageConfig -Location $location - $imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsType Windows -OsState Generalized -BlobUri $osVhdUri - $image = New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig - ``` - -## Create VM from image - -First we need to gather basic information about the image and create a variable for the image. This example uses a managed VM image named **myImage** that is in the **myResourceGroup** resource group in the **West Central US** location. - -```powershell -$rgName = "myResourceGroup" -$location = "West Central US" -$imageName = "myImage" -$image = Get-AzureRMImage -ImageName $imageName -ResourceGroupName $rgName -``` - -### Create a virtual network -Create the vNet and subnet of the [virtual network](../../virtual-network/virtual-networks-overview.md). - -1. Create the subnet. This example creates a subnet named **mySubnet** with the address prefix of **10.0.0.0/24**. - - ```powershell - $subnetName = "mySubnet" - $singleSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24 - ``` -2. Create the virtual network. This example creates a virtual network named **myVnet** with the address prefix of **10.0.0.0/16**. - - ```powershell - $vnetName = "myVnet" - $vnet = New-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location ` - -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet - ``` - -### Create a public IP and NIC - -To enable communication with the virtual machine in the virtual network, you need a [public IP address](../../virtual-network/virtual-network-ip-addresses-overview-arm.md) and a network interface. - -1. Create a public IP address. This example creates a public IP address named **myPip**. - - ```powershell - $ipName = "myPip" - $pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location ` - -AllocationMethod Dynamic - ``` -2. Create the NIC. This example creates a NIC named **myNic**. - - ```powershell - $nicName = "myNic" - $nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $location ` - -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id - ``` - -### Create NSG - -To be able to log in to your VM using RDP, you need to have a network security rule (NSG) that allows RDP access on port 3389. - -This example creates an NSG named **myNsg** that contains a rule called **myRdpRule** that allows RDP traffic over port 3389. For more information about NSGs, see [Opening ports to a VM in Azure using PowerShell](nsg-quickstart-powershell.md?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). - -```powershell -$nsgName = "myNsg" -$ruleName = "myRdpRule" -$rdpRule = New-AzureRmNetworkSecurityRuleConfig -Name $ruleName -Description "Allow RDP" ` - -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 ` - -SourceAddressPrefix Internet -SourcePortRange * ` - -DestinationAddressPrefix * -DestinationPortRange 3389 - -$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $rgName -Location $location ` - -Name $nsgName -SecurityRules $rdpRule -``` - - -### Create network variables - -Create a variable for the completed virtual network. - -```powershell -$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName $rgName -Name $vnetName - -``` - -### Get the credentials - -The following cmdlet opens a window where you enter a new user name and password to use as the local administrator account for remotely accessing the VM. - -```powershell -$cred = Get-Credential -``` - -### Set VM variables - -1. Create variables for the VM name and computer name. This example sets the VM name as **myVM** and the computer name as **myComputer**. +## Prepare the VM + +You can upload both generalized and specialized VHDs to Azure. Each type requires that you prepare the VM before exporting from AWS. - ```powershell - $vmName = "myVM" - $computerName = "myComputer" - ``` -2. Set the size of the virtual machine. This example creates **Standard_DS1_v2** sized VM. See the [VM sizes](https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/) documentation for more information. +- **Generalized VHD** - a generalized VHD has had all of your personal account information removed using Sysprep. If you intend to use the VHD as an image to create new VMs from, you should: + + * [Prepare a Windows VM](prepare-for-upload-vhd-image.md). + * Generalize the virtual machine using Sysprep. - ```powershell - $vmSize = "Standard_DS1_v2" - ``` + +- **Specialized VHD** - a specialized VHD maintains the user accounts, applications and other state data from your original VM. If you intend to use the VHD as-is to create a new VM, ensure the following steps are completed. + * [Prepare a Windows VHD to upload to Azure](prepare-for-upload-vhd-image.md). **Do not** generalize the VM using Sysprep. + * Remove any guest virtualization tools and agents that are installed on the VM (i.e. VMware tools). + * Ensure the VM is configured to pull its IP address and DNS settings via DHCP. This ensures that the server obtains an IP address within the VNet when it starts up. -3. Add the VM name and size to the VM configuration. -```powershell -$vm = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize -``` +## Export and download the VHD -### Set the VM image +Export the EC2 instance to a VHD in an Amazon S3 bucket. Follow the steps described in the Amazon documentation topic [Exporting an Instance as a VM Using VM Import/Export](http://docs.aws.amazon.com/vm-import/latest/userguide/vmexport.html) and run the [create-instance-export-task](http://docs.aws.amazon.com/cli/latest/reference/ec2/create-instance-export-task.html) command to export the EC2 instance to a VHD file. -Set the source image using the ID of the managed VM image. +The exported VHD file is saved in the Amazon S3 bucket you specify. The basic syntax for exporting the VHD is below, just replace the placeholder text in <brackets> with your information. -```powershell -$vm = Set-AzureRmVMSourceImage -VM $vm -Id $image.Id ``` - -### Set the OS configuration - -Enter the storage type (PremiumLRS or StandardLRS) and the size of the OS disk. This example sets the account type to **PremiumLRS**, the disk size to **128 GB** and disk caching to **ReadWrite**. - -```powershell -$vm = Set-AzureRmVMOSDisk -VM $vm  -ManagedDiskStorageAccountType PremiumLRS -DiskSizeInGB 128 ` --CreateOption FromImage -Caching ReadWrite - -$vm = Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $computerName ` --Credential $cred -ProvisionVMAgent -EnableAutoUpdate - -$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id +aws ec2 create-instance-export-task --instance-id <instanceID> --target-environment Microsoft \ + --export-to-s3-task DiskImageFormat=VHD,ContainerFormat=ova,S3Bucket=<bucket>,S3Prefix=<prefix> ``` -### Create the VM +Once the VHD has been eported, follow the instructions in [How Do I Download an Object from an S3 Bucket?](http://docs.aws.amazon.com/AmazonS3/latest/user-guide/download-objects.html) to download the VHD file from the S3 bucket. -Create the new VM using the configuration that we have built and stored in the **$vm** variable. +> [!IMPORTANT] +> AWS charges data transfer fees for downloading the VHD. See [Amazon S3 Pricing](https://aws.amazon.com/s3/pricing/) for more information. -```powershell -New-AzureRmVM -VM $vm -ResourceGroupName $rgName -Location $location -``` -## Verify the VM -When complete, you should see the newly created VM in the [Azure portal](https://portal.azure.com) under **Browse** > **Virtual machines**, or by using the following PowerShell commands: +## Next steps -```powershell - $vmList = Get-AzureRmVM -ResourceGroupName $rgName - $vmList.Name -``` +Now you can upload the VHD to Azure and create a new VM. -## Next steps +- If you ran Sysprep on your source to **generalize** it before exporting, see [Upload a generalized VHD and use it to create a new VMs in Azure](upload-generalized-managed.md) +- If you did not run Sysprep before exporting, the VHD is considered **specialized**, see [Upload a specialized VHD to Azure and create a new VM](create-vm-specialized.md) -To sign in to your new virtual machine, browse to the VM in the [portal](https://portal.azure.com), click **Connect**, and open the Remote Desktop RDP file. Use the account credentials of your original virtual machine to sign in to your new virtual machine. For more information, see [How to connect and log on to an Azure virtual machine running Windows](connect-logon.md?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). diff --git a/articles/virtual-machines/windows/quick-create-cli.md b/articles/virtual-machines/windows/quick-create-cli.md index 06cdb0b6cac9d..0644140d86a7b 100644 --- a/articles/virtual-machines/windows/quick-create-cli.md +++ b/articles/virtual-machines/windows/quick-create-cli.md @@ -27,11 +27,13 @@ If you don't have an Azure subscription, create a [free account](https://azure.m This quick start requires the Azure CLI version 2.0.4 or later. Run `az --version` to find the version. If you need to upgrade, see [Install Azure CLI 2.0]( /cli/azure/install-azure-cli). +[!INCLUDE [cloud-shell-try-it.md](../../../includes/cloud-shell-try-it.md)] + ## Log in to Azure -Log in to your Azure subscription with the [az login](/cli/azure/#login) command and follow the on-screen directions. +Log in to your Azure subscription with the [az login](/cli/azure/#login) command and follow the on-screen directions or click **Try it** to use Cloud Shell. -```azurecli +```azurecli-interactive az login ``` @@ -41,7 +43,7 @@ Create a resource group with [az group create](/cli/azure/group#create). An Azur The following example creates a resource group named *myResourceGroup* in the *eastus* location. -```azurecli +```azurecli-interactive az group create --name myResourceGroup --location eastus ``` @@ -51,7 +53,7 @@ Create a VM with [az vm create](/cli/azure/vm#create). The following example creates a VM named *myVM*. This example uses *azureuser* for an administrative user name and *myPassword12* as the password. Update these values to something appropriate to your environment. These values are needed when creating a connection with the virtual machine. -```azurecli +```azurecli-interactive az vm create ` --resource-group myResourceGroup ` --name myVM --image win2016datacenter ` @@ -61,7 +63,7 @@ az vm create ` When the VM has been created, the Azure CLI shows information similar to the following example. Take note of the `publicIpAaddress`. This address is used to access the VM. -```azurecli +```azurecli-interactive { "fqdns": "", "id": "/subscriptions/d5b9d4b7-6fc1-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM", @@ -78,7 +80,7 @@ When the VM has been created, the Azure CLI shows information similar to the fol By default only RDP connections are allowed in to Windows virtual machines deployed in Azure. If this VM is going to be a webserver, you need to open port 80 from the Internet. Use the [az vm open-port](/cli/azure/vm#open-port) command to open the desired port. - ```azurecli + ```azurecli-interactive az vm open-port --port 80 --resource-group myResourceGroup --name myVM ``` @@ -109,7 +111,7 @@ With IIS installed and port 80 now open on your VM from the Internet, you can us When no longer needed, you can use the [az group delete](/cli/azure/group#delete) command to remove the resource group, VM, and all related resources. -```azurecli +```azurecli-interactive az group delete --name myResourceGroup ``` diff --git a/articles/virtual-machines/windows/upload-generalized-managed.md b/articles/virtual-machines/windows/upload-generalized-managed.md index cd9af467d24e3..5416e0c9b1a28 100644 --- a/articles/virtual-machines/windows/upload-generalized-managed.md +++ b/articles/virtual-machines/windows/upload-generalized-managed.md @@ -1,6 +1,6 @@ --- -title: Create a managed Azure VM from a generalized on-premises VHDs | Microsoft Docs -description: Create a managed VM in Azure using VHDs uploaded from on-premises and use managed disks, in the Resource Manager deployment model. +title: Create a managed Azure VM from a generalized on-premises VHD | Microsoft Docs +description: Upload a generalized VHD to Azure and use it to create new VMs, in the Resource Manager deployment model. services: virtual-machines-windows documentationcenter: '' author: cynthn @@ -18,7 +18,7 @@ ms.date: 05/19/2017 ms.author: cynthn --- -# Create a new VM from a generalized VHD uploaded to Azure using Managed Disks +# Upload a generalized VHD and use it to create new VMs in Azure This topic walks you through using PowerShell to upload a VHD of a generalized VM to Azure, create an image from the VHD and create a new VM from that image. You can upload a VHD exported from an on-premises virtualization tool or from another cloud. Using [Managed Disks](../../storage/storage-managed-disks-overview.md) for the new VM simplifies the VM managment and provides better availability when the VM is placed in an availability set. @@ -29,6 +29,7 @@ If you want to use a sample script, see [Sample script to upload a VHD to Azure - Before uploading any VHD to Azure, you should follow [Prepare a Windows VHD or VHDX to upload to Azure](prepare-for-upload-vhd-image.md?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) - Review [Plan for the migration to Managed Disks](on-prem-to-azure.md#plan-for-the-migration-to-managed-disks) before starting your migration to [Managed Disks](../../storage/storage-managed-disks-overview.md). - Make sure that you have the latest version of the AzureRM.Compute PowerShell module. Run the following command to install it. + ```powershell Install-Module AzureRM.Compute -RequiredVersion 2.6.0 ``` diff --git a/articles/virtual-machines/workloads/oracle/asm-configuration.md b/articles/virtual-machines/workloads/oracle/asm-configuration.md deleted file mode 100644 index 2c2a62ff0e082..0000000000000 --- a/articles/virtual-machines/workloads/oracle/asm-configuration.md +++ /dev/null @@ -1,589 +0,0 @@ ---- -title: Set up Oracle ASM on an Azure Linux virtual machine | Microsoft Docs -description: Quickly get Oracle ASM up and running in your Azure environment. -services: virtual-machines-linux -documentationcenter: virtual-machines -author: v-shiuma -manager: timlt -editor: -tags: azure-resource-manager - -ms.assetid: -ms.service: virtual-machines-linux -ms.devlang: na -ms.topic: article -ms.tgt_pltfrm: vm-linux -ms.workload: infrastructure -ms.date: 05/2/2017 -ms.author: v-shiuma ---- - -# Set up Oracle ASM on an Azue Linux virtual machine - -In this article, learn how to install and set up Oracle Automatic Storage Management (Oracle ASM) on an Oracle Linux virtual machine (VM) in Azure. - -Before you begin, make sure that Azure CLI is installed. For more information, see [the Azure CLI installation guide](https://docs.microsoft.com/cli/azure/install-azure-cli). - -## Sign in to Azure - -In Azure CLI, to sign in to your Azure subscription, use the [az login](/cli/azure/#login) command. Then, follow the on-screen instructions. - -```azurecli -az login -``` - -## Create a resource group - -To create a resource group, use the [az group create](/cli/azure/group#create) command. An Azure resource group is a logical container into which Azure resources are deployed and managed. - -The following example creates a resource group named myResourceGroup in the westus location. - -```azurecli -az group create --name myResourceGroup --location westus -``` - -## Create a VM - -To create a VM to use with Oracle ASM, complete the following steps: - -1. To create a virtual machine, use the [az vm create](/cli/azure/vm#create) command. - - The following example creates a VM named myVM. It also creates SSH keys, if they do not already exist in a default key location. To use a specific set of keys, use the `--ssh-key-value` option. - - ```azurecli - az vm create --resource-group myResourceGroup --name myVM --image Oracle:Oracle-Database-Ee:12.1.0.2:latest --size Standard_DS2_v2 --generate-ssh-keys - ``` - - After you create the VM, Azure CLI displays information similar to the following example. Note the value for `publicIpAddress`. You use this address to access the VM. - - ```azurecli - { - "fqdns": "", - "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM", - "location": "westus", - "macAddress": "00-0D-3A-36-2F-56", - "powerState": "VM running", - "privateIpAddress": "10.0.0.4", - "publicIpAddress": "13.64.104.241", - "resourceGroup": "myResourceGroup" - } - ``` - -2. Add disks to use for your Oracle ASM configuration: - - ```azurecli - az vm disk attach -g myResourceGroup --vm-name myVM --disk myDataDisk --new --size-gb 50 - az vm disk attach -g myResourceGroup --vm-name myVM --disk myDataDisk2 --new --size-gb 50 - az vm disk attach -g myResourceGroup --vm-name myVM --disk myDataDisk3 --new --size-gb 50 - az vm disk attach -g myResourceGroup --vm-name myVM --disk myDataDisk4 --new --size-gb 50 - ``` - -## Connect to the VM - -To create an SSH session with the VM, use the following command. Replace the IP address with the `publicIpAddress` value for your VM. - -```bash -ssh <publicIpAddress> -``` - -## Install Oracle ASM - -To install Oracle ASM, complete the following steps. - -For more information about installing Oracle ASM, see [Oracle ASMLib Downloads for Oracle Linux 6](http://www.oracle.com/technetwork/server-storage/linux/asmlib/ol6-1709075.html). - -1. Run `yum list`: - - ```bash - $ sudo su - - # yum list - ``` - It might take several minutes for `yum list` to load the first time you run it. - -2. Run these additional commands: - - ```bash - # yum list | grep oracleasm - # yum -y install kmod-oracleasm.x86_64 - # yum -y install oracleasm-support.x86_64 - # wget http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el6.x86_64.rpm - # yum -y install oracleasmlib-2.0.12-1.el6.x86_64.rpm - # rm -f oracleasmlib-2.0.12-1.el6.x86_64.rpm - ``` - -3. Verify that Oracle ASM is installed: - - ```bash - # rpm -qa |grep oracleasm - oracleasm-support-2.1.10-4.el6.x86_64 - kmod-oracleasm-2.0.8-15.el6_9.x86_64 - oracleasmlib-2.0.12-1.el6.x86_64 - ``` - -4. Add users and groups: - - ```bash - # groupadd -g 54345 asmadmin - # groupadd -g 54346 asmdba - # groupadd -g 54347 asmoper - # useradd -u 3000 -g oinstall -G dba,asmadmin,asmdba,asmoper grid - # usermod -g oinstall -G dba,asmdba,asmadmin oracle - ``` - -5. Verify users and groups: - - ```bash - # id grid - uid=3000(grid) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54345(asmadmin),54346(asmdba),54347(asmoper) - ``` - -6. Create a folder and change owner: - - ```bash - # mkdir /u01/app/grid - # chown grid:oinstall /u01/app/grid - ``` - -## Set up Oracle ASM - -For this tutorial, the default user is *grid* and the default group is *asmadmin*. Ensure that the *oracle* user is part of the asmadmin group. To set up your Oracle ASM installation, complete the following steps: - -1. Set the Oracle ASM library driver: - - ```bash - # /usr/sbin/oracleasm configure -i - - Configuring the Oracle ASM library driver. - - This will configure the on-boot properties of the Oracle ASM library - driver. The following questions will determine whether the driver is - loaded on boot and what permissions it will have. The current values - will be shown in brackets ('[]'). Hitting <ENTER> without typing an - answer will keep that current value. Ctrl-C will abort. - - Default user to own the driver interface []: grid - Default group to own the driver interface []: asmadmin - Start Oracle ASM library driver on boot (y/n) [n]: y - Scan for Oracle ASM disks on boot (y/n) [y]: y - Writing Oracle ASM library driver configuration: done - ``` - -2. View the disk configuration: - ```bash - # cat /proc/partitions - ``` - -3. Format the disk: - - ```bash - # fdisk /dev/sdc - Device contains not a valid DOS partition table, or Sun, SGI or OSF disklabel - Building a new DOS disklabel with disk identifier 0xf865c6ca. - Changes will remain in memory only, until you decide to write them. - After that, of course, the previous content won't be recoverable. - - Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) - - The device presents a logical sector size that is smaller than - the physical sector size. Aligning to a physical sector (or optimal - I/O) size boundary is recommended, or performance may be impacted. - - WARNING: DOS-compatible mode is deprecated. It's strongly recommended to - switch off the mode (command 'c') and change display units to - sectors (command 'u'). - - Command (m for help): n - Command action - e extended - p primary partition (1-4) - p - Partition number (1-4): 1 - First cylinder (1-6527, default 1): - Using default value 1 - Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): - Using default value 6527 - - Command (m for help): w - The partition table has been altered! - - Calling ioctl() to re-read partition table. - Syncing disks. - ``` - -4. Repeat the preceding step for /dev/sdd, /dev/sde, and /dev/sdf. - -5. Check the disk configuration: - - ```bash - # cat /proc/partitions - major minor #blocks name - - 8 16 14680064 sdb - 8 17 14678976 sdb1 - 8 32 52428800 sdc - 8 33 52428096 sdc1 - 8 48 52428800 sdd - 8 49 52428096 sdd1 - 8 64 52428800 sde - 8 65 52428096 sde1 - 8 80 52428800 sdf - 8 81 52428096 sdf1 - 8 0 52428800 sda - 8 1 512000 sda1 - 8 2 51915776 sda2 - 11 0 1048575 sr0 - ``` - -6. Check the Oracle ASM service status: - - ```bash - # service oracleasm status - Checking if ASM is loaded: no - Checking if /dev/oracleasm is mounted: no - ``` - -7. Start the Oracle ASM service: - - ```bash - # service oracleasm start - Initializing the Oracle ASMLib driver: [ OK ] - Scanning the system for Oracle ASMLib disks: [ OK ] - ``` - -8. Create Oracle ASM disks: - - ```bash - # service oracleasm createdisk ASMSP /dev/sdc1 - Marking disk "ASMSP" as an ASM disk: [ OK ] - - # service oracleasm createdisk DATA /dev/sdd1 - Marking disk "DATA" as an ASM disk: [ OK ] - - # service oracleasm createdisk DATA1 /dev/sde1 - Marking disk "DATA1" as an ASM disk: [ OK ] - - [root@myVM ~]# service oracleasm createdisk FRA /dev/sdf1 - Marking disk "FRA" as an ASM disk: [ OK ] - ``` - -9. List Oracle ASM disks: - - ```bash - # service oracleasm listdisks - ASMSP - DATA - DATA1 - FRA - ``` - -10. Change the passwords for the root, oracle, and grid users (you use the passwords later, during installation): - - ```bash - # passwd oracle - # passwd grid - # passwd root - ``` - -11. Change the folder permission: - - ```bash - # chmod -R 775 /opt - # chown grid:oinstall /opt - # chown oracle:oinstall /dev/sdc1 - # chown oracle:oinstall /dev/sdd1 - # chown oracle:oinstall /dev/sde1 - # chown oracle:oinstall /dev/sdf1 - # chmod 600 /dev/sdc1 - # chmod 600 /dev/sdd1 - # chmod 600 /dev/sde1 - # chmod 600 /dev/sdf1 - ``` - -## Download and prepare Oracle Grid Infrastructure - -To download and prepare the Oracle Grid Infrastructure software, complete the following steps: - -1. Download Oracle Grid Infrastructure from the [Oracle ASM download page](http://www.oracle.com/technetwork/database/enterprise-edition/downloads/database12c-linux-download-2240591.html). - - Under the download title **Oracle Database 12c Release 1 Grid Infrastructure (12.1.0.2.0) for Linux x86-64**, there should be two .zip files to download. - -2. After you download the .zip files to your client computer, you can use Secure Copy Protocol (SCP) to copy the files to your VM. - - ```bash - scp *.zip <publicIpAddress>:<folder> - ``` - -3. Move the .zip files to the /opt folder. Then, change the owner of the files: - - ```bash - # mv <folder>/*.zip /opt - # cd /opt - # chown grid:oinstall linuxamd64_12102_grid_1of2.zip - # chown grid:oinstall linuxamd64_12102_grid_2of2.zip - ``` - -4. Unzip the files (install the Linux unzip utility if it's not already installed): - - ```bash - # yum install unzip - # unzip linuxamd64_12102_grid_1of2.zip - # unzip linuxamd64_12102_grid_2of2.zip - ``` - -5. Change permission: - - ```bash - # chown -R grid:oinstall /opt/grid - ``` - -6. Turn off the firewall: - - ```bash - # service iptables status - # service iptables stop - ``` - -7. Check available swap space. You need at least 6 GB of swap space to install Oracle Grid Infrastructure: - - ```bash - # swapon -s - ``` - - If you have less than 6 GB of swap space, you can add more swap space by running the following commands: - - ```bash - # dd if=/dev/zero of=/extraswap bs=1M count=6144 - 6144+0 records in - 6144+0 records out - 6442450944 bytes (6.4 GB) copied, 141.245 s, 45.6 MB/s - - # mkswap /mnt/resource/extraswap - mkswap: /mnt/resource/extraswap: warning: don't erase bootbits sectors - on whole disk. Use -f to force. - Setting up swapspace version 1, size = 6291452 KiB - no label, UUID=80bd7816-b3a2-4eec-a824-733209644fc5 - # swapon /mnt/resource/extraswap - - ``` - -## Prepare the client and VM to run X11 (for Windows clients only) - -To prepare the client and VM to run X11, complete the following steps: - -1. Sign in as root, and then edit the /etc/ssh/ssh_config file. Change the setting for Forwardx11 to `yes`: - - ``` - # ForwardX11 no - ForwardX11 yes - - ``` - -2. Download PuTTY and Xming to your Windows computer: - - * [Download PuTTY](http://www.putty.org/) - * [Download Xming](https://xming.en.softonic.com/) - -3. After you install PuTTY, in the PuTTY folder (for example, C:\Program Files\PuTTY), run puttygen.exe (PuTTY Key Generator). - -4. In PuTTY Key Generator: - - 1. To generate a key, select the **Generate** button. - 2. Copy the contents of the key (Ctrl+C). - 3. Select the **Save private key** button. - 4. Ignore the warning that appears, and then select **OK**. - - ![Screenshot of the PuTTY key generator page](./media/asm-configuration/puttykeygen.png) - -5. In your VM, run these commands: - - ```bash - # sudo su - grid - $ mkdir .ssh (if not already created) - $ cd .ssh - ``` - -6. Create a file named authorized_keys. Paste the contents of the key in this file, and then save the file. - - > [!NOTE] - > The key must contain the string `ssh-rsa`. Also, the contents of the key must be a single line of text. - > - -7. Start PuTTY. In the **Category** pane, go to **Connection** > **SSH** > **Auth**. In the **Private key file for authentication** box, browse to the key that you generated earlier. - - ![Screenshot of the Set Private Key page](./media/asm-configuration/setprivatekey.png) - -9. In the **Category** pane, go to **Connection** > **SSH** > **X11**. Select the **Enable X11 forwarding** box. - - ![Screenshot of the Enable X11 page](./media/asm-configuration/enablex11.png) - -10. In the **Category** pane, go to **Session**. Enter the host information, and then select **Open**. - - ![Screenshot of the Session page](./media/asm-configuration/puttysession.png) - -## Install Oracle Grid Infrastructure - -To install Oracle Grid Infrastructure, complete the following steps: - -1. Sign in as grid. (You should be able to sign in without being prompted for a password.) - - > [!NOTE] - > Make sure that Xming is running before you begin the installation. - - ```bash - $ cd /opt/grid - $ ./runInstaller - ``` - - Oracle Grid Infrastructure 12c Release 1 Installer opens. (It might take a few minutes for the installer to start.) - -2. On the **Select Installation Option** page, select **Install and Configure Oracle Grid Infrastructure for a Standalone Server**. - - ![Screenshot of the installer Select Installation Option page](./media/asm-configuration/install01.png) - -3. On the **Select Product Languages** page, select **English** or the language that you want. - - ![Screenshot of the installer Select Product Languages page](./media/asm-configuration/install02.png) - -4. On the **Create ASM Disk Group** page: - 1. Enter a name for the disk group. - 2. Under **Redundancy**, select **External**. - 3. Under **Allocation Unit Size**, select **4**. - 4. Under **Add Disks**, select **ORCLASMSP**. - - ![Screenshot of the installer Create ASM Disk Group page](./media/asm-configuration/install03.png) - -5. On the **Specify ASM Password** page, select the **Use same passwords for these accounts** option, and enter a password. - - ![Screenshot of the installer Specify ASM Password page](./media/asm-configuration/install04.png) - -6. (Optional) On the **Specify Management Options** page, select the **Register with Enterprise Manager (EM) Cloud Control** box. - - ![Screenshot of the installer Specify Management Options page](./media/asm-configuration/install05.png) - -7. On the **Privileged Operating System Groups** page, use the default settings. - - ![Screenshot of the installer Privileged Operating System Groups page](./media/asm-configuration/install06.png) - -8. On the **Specify Installation Location** page, use the default settings. - - ![Screenshot of the installer Specify Installation Location page](./media/asm-configuration/install07.png) - -9. On the **Create Inventory** page, enter or browse to the folder location. - - ![Screenshot of the installer Create Inventory page](./media/asm-configuration/install08.png) - -10. On the **Root script execution configuration** page, select the **Automatically run configuration scripts** box. Then, select the **Use "root" user credential** option, and enter the root user password. - - ![Screenshot of the installer Root script execution configuration page](./media/asm-configuration/install09.png) - -11. On the **Perform Prerequisite Checks** page, select **Fix & Check Again**. - - ![Screenshot of the installer Perform Prerequisite Checks page](./media/asm-configuration/install10.png) - -12. On the **Fixup Script** page, select **OK**. - - ![Screenshot of the installer Fixup Script page](./media/asm-configuration/install11.png) - -13. On the **Summary** page, review your settings selections, and then select **Install**. - - ![Screenshot of the installer Summary page](./media/asm-configuration/install12.png) - -14. A warning dialog box appears. Select **Yes** to continue. - - ![Screenshot of warning dialog box](./media/asm-configuration/install14.png) - -15. On the **Finish** page, select **Close** to finish the installation. - - ![Screenshot of the installer Finish page](./media/asm-configuration/install16.png) - -## Set up your Oracle ASM installation - -To set up your Oracle ASM installation, complete the following steps: - -1. Sign in as grid, from your X11 session: - - ```bash - $ cd /u01/app/grid/product/12.1.0/grid/bin - $ ./asmca - ``` - - Oracle ASM Configuration Assistant opens. - -2. On the **Configure ASM: Disk Groups** page, select the **Create** button, and then select **Show Advanced Options**. - - ![Screenshot of the Configure ASM: Disk Groups page](./media/asm-configuration/asm01.png) - -3. On the **Create Disk Group** page: - - 1. Enter the disk group name. - 2. Under **Select Member Disks**, select **ORCL_DATA** and **ORCL_DATA1**. - 3. Under **Allocation Unit Size**, select **4**. - - ![Screenshot of the Create Disk Group page](./media/asm-configuration/asm02.png) - -4. On the **Configure ASM: Disk Groups** page, select the **Create** button, and then select **Show Advanced Options**. - - ![Screenshot of the Configure ASM: Disk Groups page](./media/asm-configuration/asm03.png) - -5. On the **Create Disk Group** page: - - 1. Enter the disk group name. - 2. Under **Redundancy**, select **External**. - 3. Under **Select Member Disks**, select **ORCL_FRA**. - 4. Under **Allocation Unit Size**, select **4**. - - ![Screenshot of the Create Disk Group page](./media/asm-configuration/asm04.png) - -6. Select **Exit** to close ASM Configuration Assistant. - - ![Screenshot of the Configure ASM: Disk Groups page with Exit button](./media/asm-configuration/asm05.png) - -## Create the database - -The Oracle software is already installed on the Azure Marketplace image. To install the database, complete the following steps: - -1. Switch users to the oracle superuser, and then initialize the listener for logging: - - ```bash - $ su - oracle - Password: - $ cd /u01/app/oracle/product/12.1.0/dbhome_1/bin - $ ./dbca - ``` - Database Configuration Assistant opens. - -2. On the **Database Operation** page, select **Create Database**. - - ![Screenshot of the Database Operation page](./media/asm-configuration/createdb01.png) - -3. On the **Creation Mode** page: - - 1. Enter a name for the database. - 2. For **Storage Type**, select **Automatic Storage Management (ASM)**. - 3. For **Database Files Location**, browse to the folder you want to use. - 4. For **Fast Recovery Area**, browse to the folder you want to use. - - ![Screenshot of the Creation Mode page](./media/asm-configuration/createdb02.png) - -4. On the **Summary** page, review your settings selections, and then select **Finish** to create the database. - - ![Screenshot of the Summary page](./media/asm-configuration/createdb03.png) - -5. (Optional) On the **Finish** page, to change the passwords, select **Password Management**. - - ![Screenshot of the Finish page](./media/asm-configuration/createdb04.png) - - -## Delete the VM - -When you no longer need the VM, you can use the following command to remove the resource group, VM, and all related resources: - -```azurecli -az group delete --name myResourceGroup -``` - -## Next steps - -[Tutorial: Create highly available virtual machines](../../linux/create-cli-complete.md) - -[Explore VM deployment Azure CLI samples](../../linux/cli-samples.md) diff --git a/articles/virtual-machines/workloads/oracle/configure-oracle-asm.md b/articles/virtual-machines/workloads/oracle/configure-oracle-asm.md new file mode 100644 index 0000000000000..a1775d9ca0963 --- /dev/null +++ b/articles/virtual-machines/workloads/oracle/configure-oracle-asm.md @@ -0,0 +1,559 @@ +--- +title: Set up Oracle ASM on an Azure Linux virtual machine | Microsoft Docs +description: Quickly get Oracle ASM up and running in your Azure environment. +services: virtual-machines-linux +documentationcenter: virtual-machines +author: v-shiuma +manager: timlt +editor: +tags: azure-resource-manager + +ms.assetid: +ms.service: virtual-machines-linux +ms.devlang: na +ms.topic: article +ms.tgt_pltfrm: vm-linux +ms.workload: infrastructure +ms.date: 05/2/2017 +ms.author: v-shiuma +--- + +# Set up Oracle ASM on an Azure Linux virtual machine + +In this article, learn how to install and set up Oracle Automatic Storage Management (Oracle ASM) on an Oracle Linux virtual machine (VM) in Azure. + +Before you begin, make sure that Azure CLI is installed. For more information, see [the Azure CLI installation guide](https://docs.microsoft.com/cli/azure/install-azure-cli). + +## Prepare the environment + +### Sign in to Azure + +In Azure CLI, to sign in to your Azure subscription, use the [az login](/cli/azure/#login) command. Then, follow the on-screen instructions. + +```azurecli +az login +``` + +### Create a resource group + +To create a resource group, use the [az group create](/cli/azure/group#create) command. An Azure resource group is a logical container into which Azure resources are deployed and managed. + +The following example creates a resource group named myResourceGroup in the westus location. + +```azurecli +az group create --name myResourceGroup --location westus +``` + +### Create a VM + +To create a VM to use with Oracle ASM, complete the following steps: + +#### 1. To create a virtual machine, use the [az vm create](/cli/azure/vm#create) command. + + The following example creates a VM named myVM. It also creates SSH keys, if they do not already exist in a default key location. To use a specific set of keys, use the `--ssh-key-value` option. + + ```azurecli + az vm create --resource-group myResourceGroup --name myVM --image Oracle:Oracle-Database-Ee:12.1.0.2:latest --size Standard_DS2_v2 --generate-ssh-keys + ``` + + After you create the VM, Azure CLI displays information similar to the following example. Note the value for `publicIpAddress`. You use this address to access the VM. + + ```azurecli + { + "fqdns": "", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM", + "location": "westus", + "macAddress": "00-0D-3A-36-2F-56", + "powerState": "VM running", + "privateIpAddress": "10.0.0.4", + "publicIpAddress": "13.64.104.241", + "resourceGroup": "myResourceGroup" + } + ``` + +#### 2. Add disks to use for your Oracle ASM configuration: + + ```azurecli + az vm disk attach -g myResourceGroup --vm-name myVM --disk myDataDisk --new --size-gb 50 + az vm disk attach -g myResourceGroup --vm-name myVM --disk myDataDisk2 --new --size-gb 50 + az vm disk attach -g myResourceGroup --vm-name myVM --disk myDataDisk3 --new --size-gb 50 + az vm disk attach -g myResourceGroup --vm-name myVM --disk myDataDisk4 --new --size-gb 50 + ``` + +### Connect to the VM + +To create an SSH session with the VM, use the following command. Replace the IP address with the `publicIpAddress` value for your VM. + +```bash +ssh <publicIpAddress> +``` + +## Install Oracle ASM + +To install Oracle ASM, complete the following steps. + +For more information about installing Oracle ASM, see [Oracle ASMLib Downloads for Oracle Linux 6](http://www.oracle.com/technetwork/server-storage/linux/asmlib/ol6-1709075.html). + +### 1. Run `yum list`: + + ```bash + $ sudo su - + # yum list + ``` + It might take several minutes for `yum list` to load the first time you run it. + +### 2. Run these additional commands: + + ```bash + # yum list | grep oracleasm + # yum -y install kmod-oracleasm.x86_64 + # yum -y install oracleasm-support.x86_64 + # wget http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el6.x86_64.rpm + # yum -y install oracleasmlib-2.0.12-1.el6.x86_64.rpm + # rm -f oracleasmlib-2.0.12-1.el6.x86_64.rpm + ``` + +### 3. Verify that Oracle ASM is installed: + + ```bash + # rpm -qa |grep oracleasm + oracleasm-support-2.1.10-4.el6.x86_64 + kmod-oracleasm-2.0.8-15.el6_9.x86_64 + oracleasmlib-2.0.12-1.el6.x86_64 + ``` + +### 4. Add users and groups: + + ```bash + # groupadd -g 54345 asmadmin + # groupadd -g 54346 asmdba + # groupadd -g 54347 asmoper + # useradd -u 3000 -g oinstall -G dba,asmadmin,asmdba,asmoper grid + # usermod -g oinstall -G dba,asmdba,asmadmin oracle + ``` + +### 5. Verify users and groups: + + ```bash + # id grid + uid=3000(grid) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54345(asmadmin),54346(asmdba),54347(asmoper) + ``` + +### 6. Create a folder and change owner: + + ```bash + # mkdir /u01/app/grid + # chown grid:oinstall /u01/app/grid + ``` + +## Set up Oracle ASM + +For this tutorial, the default user is *grid* and the default group is *asmadmin*. Ensure that the *oracle* user is part of the asmadmin group. To set up your Oracle ASM installation, complete the following steps: + +### 1. Set the Oracle ASM library driver: + + ```bash + # /usr/sbin/oracleasm configure -i + + Configuring the Oracle ASM library driver. + + This will configure the on-boot properties of the Oracle ASM library + driver. The following questions will determine whether the driver is + loaded on boot and what permissions it will have. The current values + will be shown in brackets ('[]'). Hitting <ENTER> without typing an + answer will keep that current value. Ctrl-C will abort. + + Default user to own the driver interface []: grid + Default group to own the driver interface []: asmadmin + Start Oracle ASM library driver on boot (y/n) [n]: y + Scan for Oracle ASM disks on boot (y/n) [y]: y + Writing Oracle ASM library driver configuration: done + ``` + +### 2. View the disk configuration: + ```bash + # cat /proc/partitions + ``` + +### 3. Format the disk: + + ```bash + # fdisk /dev/sdc + Device contains not a valid DOS partition table, or Sun, SGI or OSF disklabel + Building a new DOS disklabel with disk identifier 0xf865c6ca. + Changes will remain in memory only, until you decide to write them. + After that, of course, the previous content won't be recoverable. + + Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) + + The device presents a logical sector size that is smaller than + the physical sector size. Aligning to a physical sector (or optimal + I/O) size boundary is recommended, or performance may be impacted. + + WARNING: DOS-compatible mode is deprecated. It's strongly recommended to + switch off the mode (command 'c') and change display units to + sectors (command 'u'). + + Command (m for help): n + Command action + e extended + p primary partition (1-4) + p + Partition number (1-4): 1 + First cylinder (1-6527, default 1): + Using default value 1 + Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): + Using default value 6527 + + Command (m for help): w + The partition table has been altered! + + Calling ioctl() to re-read partition table. + Syncing disks. + ``` + +### 4. Repeat the preceding step for /dev/sdd, /dev/sde, and /dev/sdf. + +### 5. Check the disk configuration: + +```bash +# cat /proc/partitions +major minor #blocks name + + 8 16 14680064 sdb + 8 17 14678976 sdb1 + 8 32 52428800 sdc + 8 33 52428096 sdc1 + 8 48 52428800 sdd + 8 49 52428096 sdd1 + 8 64 52428800 sde + 8 65 52428096 sde1 + 8 80 52428800 sdf + 8 81 52428096 sdf1 + 8 0 52428800 sda + 8 1 512000 sda1 + 8 2 51915776 sda2 + 11 0 1048575 sr0 +``` + +### 6. Check the Oracle ASM service status: + +```bash +# service oracleasm status +Checking if ASM is loaded: no +Checking if /dev/oracleasm is mounted: no +``` + +### 7. Start the Oracle ASM service: + +```bash +# service oracleasm start +Initializing the Oracle ASMLib driver: [ OK ] +Scanning the system for Oracle ASMLib disks: [ OK ] +``` + +### 8. Create Oracle ASM disks: + +```bash +# service oracleasm createdisk ASMSP /dev/sdc1 +Marking disk "ASMSP" as an ASM disk: [ OK ] + +# service oracleasm createdisk DATA /dev/sdd1 +Marking disk "DATA" as an ASM disk: [ OK ] + +# service oracleasm createdisk DATA1 /dev/sde1 +Marking disk "DATA1" as an ASM disk: [ OK ] + +# service oracleasm createdisk FRA /dev/sdf1 +Marking disk "FRA" as an ASM disk: [ OK ] +``` + +### 9. List Oracle ASM disks: + +```bash +# service oracleasm listdisks +ASMSP +DATA +DATA1 +FRA +``` + +### 10. Change the passwords for the root, oracle, and grid users (you use the passwords later, during installation): + +```bash +# passwd oracle +# passwd grid +# passwd root +``` + +### 11. Change the folder permission: + +```bash +# chmod -R 775 /opt +# chown grid:oinstall /opt +# chown oracle:oinstall /dev/sdc1 +# chown oracle:oinstall /dev/sdd1 +# chown oracle:oinstall /dev/sde1 +# chown oracle:oinstall /dev/sdf1 +# chmod 600 /dev/sdc1 +# chmod 600 /dev/sdd1 +# chmod 600 /dev/sde1 +# chmod 600 /dev/sdf1 +``` + +## Download and prepare Oracle Grid Infrastructure + +To download and prepare the Oracle Grid Infrastructure software, complete the following steps: + +### 1. Download Oracle Grid Infrastructure from the [Oracle ASM download page](http://www.oracle.com/technetwork/database/enterprise-edition/downloads/database12c-linux-download-2240591.html). + + Under the download title **Oracle Database 12c Release 1 Grid Infrastructure (12.1.0.2.0) for Linux x86-64**, there should be two .zip files to download. + +### 2. After you download the .zip files to your client computer, you can use Secure Copy Protocol (SCP) to copy the files to your VM. + +```bash +scp *.zip <publicIpAddress>:<folder> +``` + +### 3. Move the .zip files to the /opt folder. Then, change the owner of the files: + +```bash +# mv <folder>/*.zip /opt +# cd /opt +# chown grid:oinstall linuxamd64_12102_grid_1of2.zip +# chown grid:oinstall linuxamd64_12102_grid_2of2.zip +``` +### 4. Unzip the files (install the Linux unzip utility if it's not already installed): +```bash +# yum install unzip +# unzip linuxamd64_12102_grid_1of2.zip +# unzip linuxamd64_12102_grid_2of2.zip +``` +### 5. Change permission: +```bash +# chown -R grid:oinstall /opt/grid +``` +### 6. Turn off the firewall: +```bash +# service iptables status +# service iptables stop +``` + +### 7. Check available swap space, you need at lease 6.8 GB of swap space to install Grid, by default Linux Azure VMs will not have swap enabled and configured by default. + +It is highly recommended that you use the waagent to configure swap space so it is always created within the ephemeral disk (temporary disk), for more information about the steps, please check the link below: + +* [How to add a swap file in Linux Azure virtual machines](https://support.microsoft.com/en-us/help/4010058/how-to-add-a-swap-file-in-linux-azure-virtual-machines) + +## Prepare the client and VM to run x11 (for Windows clients only) +This is an optional step, You can skip this step if you are using a Linux client or already have x11 setup. + +### 1. Download PuTTY and Xming to your Windows computer: + + * [Download PuTTY](http://www.putty.org/) + * [Download Xming](https://xming.en.softonic.com/) + +### 2. After you install PuTTY, in the PuTTY folder (for example, C:\Program Files\PuTTY), run puttygen.exe (PuTTY Key Generator). + +### 3. In PuTTY Key Generator: + +- To generate a key, select the **Generate** button. +- Copy the contents of the key (Ctrl+C). +- Select the **Save private key** button. +- Ignore the warning that appears, and then select **OK**. + + ![Screenshot of the PuTTY key generator page](./media/oracle-asm/puttykeygen.png) + +### 4. In your VM, run these commands: + +```bash +# sudo su - grid +$ mkdir .ssh (if not already created) +$ cd .ssh +``` + +### 5. Create a file named authorized_keys. Paste the contents of the key in this file, and then save the file. + +> [!NOTE] +> The key must contain the string `ssh-rsa`. Also, the contents of the key must be a single line of text. +> + +### 6. Start PuTTY. In the **Category** pane, go to **Connection** > **SSH** > **Auth**. In the **Private key file for authentication** box, browse to the key that you generated earlier. + + ![Screenshot of the Set Private Key page](./media/oracle-asm/setprivatekey.png) + +### 7. In the **Category** pane, go to **Connection** > **SSH** > **X11**. Select the **Enable X11 forwarding** box. + + ![Screenshot of the Enable X11 page](./media/oracle-asm/enablex11.png) + +### 8. In the **Category** pane, go to **Session**. Enter the host information, and then select **Open**. + + ![Screenshot of the Session page](./media/oracle-asm/puttysession.png) + +## Install Oracle Grid Infrastructure + +To install Oracle Grid Infrastructure, complete the following steps: + +### 1. Sign in as grid. (You should be able to sign in without being prompted for a password.) + +> [!NOTE] +> Make sure that Xming is running before you begin the installation. + +```bash +$ cd /opt/grid +$ ./runInstaller +``` + + Oracle Grid Infrastructure 12c Release 1 Installer opens. (It might take a few minutes for the installer to start.) + +### 2. On the **Select Installation Option** page, select **Install and Configure Oracle Grid Infrastructure for a Standalone Server**. + + ![Screenshot of the installer Select Installation Option page](./media/oracle-asm/install01.png) + +### 3. On the **Select Product Languages** page, select **English** or the language that you want. + + ![Screenshot of the installer Select Product Languages page](./media/oracle-asm/install02.png) + +### 4. On the **Create ASM Disk Group** page: +- Enter a name for the disk group. +- Under **Redundancy**, select **External**. +- Under **Allocation Unit Size**, select **4**. +- Under **Add Disks**, select **ORCLASMSP**. + + ![Screenshot of the installer Create ASM Disk Group page](./media/oracle-asm/install03.png) + +### 5. On the **Specify ASM Password** page, select the **Use same passwords for these accounts** option, and enter a password. + + ![Screenshot of the installer Specify ASM Password page](./media/oracle-asm/install04.png) + +### 6. (Optional) On the **Specify Management Options** page, select the **Register with Enterprise Manager (EM) Cloud Control** box. + + ![Screenshot of the installer Specify Management Options page](./media/oracle-asm/install05.png) + +### 7. On the **Privileged Operating System Groups** page, use the default settings. + + ![Screenshot of the installer Privileged Operating System Groups page](./media/oracle-asm/install06.png) + +### 8. On the **Specify Installation Location** page, use default settings. + + ![Screenshot of the installer Specify Installation Location page](./media/oracle-asm/install07.png) + +### 9. On the **Create Inventory** page, enter or browse to the folder location. + + ![Screenshot of the installer Create Inventory page](./media/oracle-asm/install08.png) + +### 10. On the **Root script execution configuration** page, select the **Automatically run configuration scripts** box. Then, select the **Use "root" user credential** option, and enter the root user password. + + ![Screenshot of the installer Root script execution configuration page](./media/oracle-asm/install09.png) + +### 11. On the **Perform Prerequisite Checks** page, select **Fix & Check Again**. + + ![Screenshot of the installer Perform Prerequisite Checks page](./media/oracle-asm/install10.png) + +### 12. On the **Fixup Script** page, select **OK**. + + ![Screenshot of the installer Fixup Script page](./media/oracle-asm/install11.png) + +### 13. On the **Summary** page, review your settings selections, and then select **Install**. + + ![Screenshot of the installer Summary page](./media/oracle-asm/install12.png) + +### 14. A warning dialog box appears. Select **Yes** to continue. + + ![Screenshot of warning dialog box](./media/oracle-asm/install14.png) + +### 15. On the **Finish** page, select **Close** to finish the installation. + + ![Screenshot of the installer Finish page](./media/oracle-asm/install16.png) + +## Set up your Oracle ASM installation + +To set up your Oracle ASM installation, complete the following steps: + +### 1. Sign in as grid, from your X11 session: + + ```bash + $ cd /u01/app/grid/product/12.1.0/grid/bin + $ ./asmca + ``` + + Oracle ASM Configuration Assistant opens. + +### 2. On the **Configure ASM: Disk Groups** page, select the **Create** button, and then select **Show Advanced Options**. + + ![Screenshot of the Configure ASM: Disk Groups page](./media/oracle-asm/asm01.png) + +### 3. On the **Create Disk Group** page: + +- Enter the disk group name. +- Under **Select Member Disks**, select **ORCL_DATA** and **ORCL_DATA1**. +- Under **Allocation Unit Size**, select **4**. + + ![Screenshot of the Create Disk Group page](./media/oracle-asm/asm02.png) + +### 4. On the **Configure ASM: Disk Groups** page, select the **Create** button, and then select **Show Advanced Options**. + + ![Screenshot of the Configure ASM: Disk Groups page](./media/oracle-asm/asm03.png) + +### 5. On the **Create Disk Group** page: + +- Enter the disk group name. +- Under **Redundancy**, select **External**. +- Under **Select Member Disks**, select **ORCL_FRA**. +- Under **Allocation Unit Size**, select **4**. + + ![Screenshot of the Create Disk Group page](./media/oracle-asm/asm04.png) + +### 6. Select **Exit** to close ASM Configuration Assistant. + + ![Screenshot of the Configure ASM: Disk Groups page with Exit button](./media/oracle-asm/asm05.png) + +## Create the database + +The Oracle software is already installed on the Azure Marketplace image. To install the database, complete the following steps: + +### 1. Switch users to the oracle superuser, and then initialize the listener for logging: + + ```bash + $ su - oracle + Password: + $ cd /u01/app/oracle/product/12.1.0/dbhome_1/bin + $ ./dbca + ``` + Database Configuration Assistant opens. + +### 2. On the **Database Operation** page, select **Create Database**. + + ![Screenshot of the Database Operation page](./media/oracle-asm/createdb01.png) + +### 3. On the **Creation Mode** page: + +- Enter a name for the database. +- For **Storage Type**, select **Automatic Storage Management (ASM)**. +- For **Database Files Location**, browse to the folder you want to use. +- For **Fast Recovery Area**, browse to the folder you want to use. + + ![Screenshot of the Creation Mode page](./media/oracle-asm/createdb02.png) + +### 4. On the **Summary** page, review your settings selections, and then select **Finish** to create the database. + + ![Screenshot of the Summary page](./media/oracle-asm/createdb03.png) + +### 5. (Optional) On the **Finish** page, to change the passwords, select **Password Management**. + + ![Screenshot of the Finish page](./media/oracle-asm/createdb04.png) + + +## Delete the VM + +When you no longer need the VM, you can use the following command to remove the resource group, VM, and all related resources: + +```azurecli +az group delete --name myResourceGroup +``` + +## Next steps + +[Tutorial: Create highly available virtual machines](../../linux/create-cli-complete.md) + +[Explore VM deployment Azure CLI samples](../../linux/cli-samples.md) diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/asm04.png b/articles/virtual-machines/workloads/oracle/media/asm-configuration/asm04.png deleted file mode 100644 index d2f4681791e67..0000000000000 Binary files a/articles/virtual-machines/workloads/oracle/media/asm-configuration/asm04.png and /dev/null differ diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/enablex11.png b/articles/virtual-machines/workloads/oracle/media/asm-configuration/enablex11.png deleted file mode 100644 index c47782728daf7..0000000000000 Binary files a/articles/virtual-machines/workloads/oracle/media/asm-configuration/enablex11.png and /dev/null differ diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install03.png b/articles/virtual-machines/workloads/oracle/media/asm-configuration/install03.png deleted file mode 100644 index 996b2b5ebb8ce..0000000000000 Binary files a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install03.png and /dev/null differ diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install10.png b/articles/virtual-machines/workloads/oracle/media/asm-configuration/install10.png deleted file mode 100644 index f0bd3375dad68..0000000000000 Binary files a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install10.png and /dev/null differ diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/puttykeygen.png b/articles/virtual-machines/workloads/oracle/media/asm-configuration/puttykeygen.png deleted file mode 100644 index deb362d3abe7c..0000000000000 Binary files a/articles/virtual-machines/workloads/oracle/media/asm-configuration/puttykeygen.png and /dev/null differ diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/puttysession.png b/articles/virtual-machines/workloads/oracle/media/asm-configuration/puttysession.png deleted file mode 100644 index e4d345fa395fc..0000000000000 Binary files a/articles/virtual-machines/workloads/oracle/media/asm-configuration/puttysession.png and /dev/null differ diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/setprivatekey.png b/articles/virtual-machines/workloads/oracle/media/asm-configuration/setprivatekey.png deleted file mode 100644 index 30f7a6e9eaf6b..0000000000000 Binary files a/articles/virtual-machines/workloads/oracle/media/asm-configuration/setprivatekey.png and /dev/null differ diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/asm01.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/asm01.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/asm01.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/asm01.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/asm02.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/asm02.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/asm02.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/asm02.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/asm03.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/asm03.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/asm03.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/asm03.png diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-asm/asm04.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/asm04.png new file mode 100644 index 0000000000000..02d036d360f6e Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-asm/asm04.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/asm05.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/asm05.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/asm05.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/asm05.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/createdb01.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/createdb01.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/createdb01.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/createdb01.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/createdb02.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/createdb02.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/createdb02.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/createdb02.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/createdb03.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/createdb03.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/createdb03.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/createdb03.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/createdb04.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/createdb04.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/createdb04.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/createdb04.png diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-asm/enablex11.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/enablex11.png new file mode 100644 index 0000000000000..e8d30c9cb5b81 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-asm/enablex11.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install01.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install01.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install01.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install01.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install02.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install02.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install02.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install02.png diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-asm/install03.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install03.png new file mode 100644 index 0000000000000..88a1192427070 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install03.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install04.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install04.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install04.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install04.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install05.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install05.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install05.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install05.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install06.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install06.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install06.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install06.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install07.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install07.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install07.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install07.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install08.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install08.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install08.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install08.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install09.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install09.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install09.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install09.png diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-asm/install10.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install10.png new file mode 100644 index 0000000000000..e3f2ca2606457 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install10.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install11.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install11.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install11.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install11.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install12.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install12.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install12.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install12.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install13.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install13.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install13.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install13.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install14.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install14.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install14.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install14.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install15.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install15.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install15.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install15.png diff --git a/articles/virtual-machines/workloads/oracle/media/asm-configuration/install16.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/install16.png similarity index 100% rename from articles/virtual-machines/workloads/oracle/media/asm-configuration/install16.png rename to articles/virtual-machines/workloads/oracle/media/oracle-asm/install16.png diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-asm/puttykeygen.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/puttykeygen.png new file mode 100644 index 0000000000000..7e64b3c135029 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-asm/puttykeygen.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-asm/puttysession.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/puttysession.png new file mode 100644 index 0000000000000..2b18a59b1d349 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-asm/puttysession.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-asm/setprivatekey.png b/articles/virtual-machines/workloads/oracle/media/oracle-asm/setprivatekey.png new file mode 100644 index 0000000000000..37280b56bf811 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-asm/setprivatekey.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_00.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_00.png new file mode 100644 index 0000000000000..62d3ed1c3d576 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_00.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_01.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_01.png new file mode 100644 index 0000000000000..a9a155ba9a56d Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_01.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_02.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_02.png new file mode 100644 index 0000000000000..95b6b8c3cce1b Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_02.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_03.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_03.png new file mode 100644 index 0000000000000..25d8ae3c221ef Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_03.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_04.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_04.png new file mode 100644 index 0000000000000..f0e378e1911d7 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/create_ip_04.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_01.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_01.png new file mode 100644 index 0000000000000..6506d7cbb947a Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_01.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_02.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_02.png new file mode 100644 index 0000000000000..d0cb73c4d6bc4 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_02.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_03.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_03.png new file mode 100644 index 0000000000000..8cee92ac277a4 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_03.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_04.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_04.png new file mode 100644 index 0000000000000..a10ca8cca3b0d Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_04.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_05.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_05.png new file mode 100644 index 0000000000000..6c08db3270973 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_05.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_06.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_06.png new file mode 100644 index 0000000000000..245518531e463 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_06.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_07.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_07.png new file mode 100644 index 0000000000000..ebf3c1a8291ac Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_07.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_08.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_08.png new file mode 100644 index 0000000000000..5bb2556f5e003 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_08.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_09.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_09.png new file mode 100644 index 0000000000000..a0b4667922192 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recover_vm_09.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_01.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_01.png new file mode 100644 index 0000000000000..11c1bad640d28 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_01.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_02.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_02.png new file mode 100644 index 0000000000000..f507e6a1d6bad Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_02.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_03.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_03.png new file mode 100644 index 0000000000000..67c2687e2e137 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_03.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_04.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_04.png new file mode 100644 index 0000000000000..a10b9499b72e3 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_04.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_05.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_05.png new file mode 100644 index 0000000000000..8ab3c5d05ce02 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_05.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_06.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_06.png new file mode 100644 index 0000000000000..8a817101f9108 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_06.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_07.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_07.png new file mode 100644 index 0000000000000..393abbfa6851b Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_07.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_08.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_08.png new file mode 100644 index 0000000000000..d03a38a7b57fa Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_08.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_09.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_09.png new file mode 100644 index 0000000000000..c1534929968de Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_09.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_10.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_10.png new file mode 100644 index 0000000000000..f17302bf4eca6 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_10.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_11.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_11.png new file mode 100644 index 0000000000000..43f5eeb868f4b Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_11.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_12.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_12.png new file mode 100644 index 0000000000000..9905be0aab27f Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_12.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_13.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_13.png new file mode 100644 index 0000000000000..b6519824a0bc1 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_13.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_14.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_14.png new file mode 100644 index 0000000000000..bc19f85de71ac Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_14.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_15.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_15.png new file mode 100644 index 0000000000000..da0dfefb17fa9 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_15.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_16.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_16.png new file mode 100644 index 0000000000000..e240eb0abadb7 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_16.png differ diff --git a/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_17.png b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_17.png new file mode 100644 index 0000000000000..87fe3395b0730 Binary files /dev/null and b/articles/virtual-machines/workloads/oracle/media/oracle-backup-recovery/recovery_service_17.png differ diff --git a/articles/virtual-machines/workloads/oracle/oracle-backup-recovery.md b/articles/virtual-machines/workloads/oracle/oracle-backup-recovery.md new file mode 100644 index 0000000000000..a4e65ee440363 --- /dev/null +++ b/articles/virtual-machines/workloads/oracle/oracle-backup-recovery.md @@ -0,0 +1,395 @@ +--- +title: Backup and recovery of Oracle 12c database on an Azure Linux virtual machine | Microsoft Docs +description: A quick start guide for backup and recovery of Oracle Database 12c in your Azure environment. +services: virtual-machines-linux +documentationcenter: virtual-machines +author: v-shiuma +manager: timlt +editor: +tags: azure-resource-manager + +ms.assetid: +ms.service: virtual-machines-linux +ms.devlang: na +ms.topic: article +ms.tgt_pltfrm: vm-linux +ms.workload: infrastructure +ms.date: 5/17/2017 +ms.author: rclaus +--- + +# Backup and Recovery of Oracle 12c database on an Azure Linux virtual machine + +You can use Azure CLI to create and manage Azure resources at a command prompt or in scripts. In this article, we use scripts in Azure CLI to deploy an Oracle Database 12c database from an Azure Marketplace gallery image. + +Before you begin, make sure that Azure CLI is installed. For more information, see [the Azure CLI installation guide](https://docs.microsoft.com/cli/azure/install-azure-cli). + +## Prepare the environment +### 1. Assumptions + +To perform the backup and recovery, you need to create a Linux VM with Oracle 12c installed. The Marketplace image you use to create the VMs is "Oracle:Oracle-Database-Ee:12.1.0.2:latest". + +For instructions of how to create an Oracle database, see [Oracle database quick create guide](https://docs.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-quick-create). + + +### 2. Connect to the VM + +To create an SSH session with the VM, use the following command: Replace the IP address/hostname with the `publicIpAddress` value for your VM. + +```bash +ssh <publicIpAddress> +``` + +### 3. Preparing database + +This step assuming you have an Oracle instance (cdb1) running on a virtual machine called myVM. + +Run the *oracle* superuser, and then initialize the listener: + + ```bash + $ sudo su - oracle + $ lsnrctl start + Copyright (c) 1991, 2014, Oracle. All rights reserved. + + Starting /u01/app/oracle/product/12.1.0/dbhome_1/bin/tnslsnr: please wait... + + TNSLSNR for Linux: Version 12.1.0.2.0 - Production + Log messages written to /u01/app/oracle/diag/tnslsnr/myVM/listener/alert/log.xml + Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myVM.twltkue3xvsujaz1bvlrhfuiwf.dx.internal.cloudapp.net)(PORT=1521))) + + Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) + STATUS of the LISTENER + ------------------------ + Alias LISTENER + Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production + Start Date 23-MAR-2017 15:32:08 + Uptime 0 days 0 hr. 0 min. 0 sec + Trace Level off + Security ON: Local OS Authentication + SNMP OFF + Listener Log File /u01/app/oracle/diag/tnslsnr/myVM/listener/alert/log.xml + Listening Endpoints Summary... + (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myVM.twltkue3xvsujaz1bvlrhfuiwf.dx.internal.cloudapp.net)(PORT=1521))) + The listener supports no services + The command completed successfully + ``` + +Make sure the database is in archive log mode (Optional step) + + ```bash + $ sqlplus / as sysdba + SQL> SELECT log_mode FROM v$database; + + LOG_MODE + ------------ + NOARCHIVELOG + + SQL> SHUTDOWN IMMEDIATE; + SQL> STARTUP MOUNT; + SQL> ALTER DATABASE ARCHIVELOG; + SQL> ALTER DATABASE OPEN; + SQL> ALTER SYSTEM SWITCH LOGFILE; + ``` +Create a table for testing (Optional step) + + ```bash + SQL> alter session set "_ORACLE_SCRIPT"=true ; + Session altered. + SQL> create user scott identified by tiger; + User created. + SQL> grant create session to scott; + Grant succeeded. + SQL> grant create table to scott; + Grant succeeded. + SQL> alter user scott quota 100M on users; + User altered. + SQL> connect scott/tiger + SQL> create table scott_table(col1 number, col2 varchar2(50)); + Table created. + SQL> insert into scott_Table VALUES(1,'Line 1'); + 1 row created. + SQL> commit; + Commit complete. + ``` +Verify or change backup file location and size + + ```bash + SQL> show parameter db_recovery + NAME TYPE VALUE + ------------------------------------ ----------- ------------------------------ + db_recovery_file_dest string /u01/app/oracle/fast_recovery_area + db_recovery_file_dest_size big integer 4560M + ``` +Backup database using RMAN + + ```bash + $ rman target / + RMAN> backup database plus archivelog; + ``` + +### 4. Backup VM using Azure Recovery Service Vault + +> [!NOTE] +> A new feature call [Application consistent backup for Linux VMs](https://azure.microsoft.com/en-us/blog/announcing-application-consistent-backup-for-linux-vms-using-azure-backup/) is just become available. +> + +Log on to Azure portal and search for Recovery Service Vaults. +![Screenshot of the Recovery Service Vaults page](./media/oracle-backup-recovery/recovery_service_01.png) + +Click the Add button to add new vault. +![Screenshot of the Recovery Service Vaults Add page](./media/oracle-backup-recovery/recovery_service_02.png) + +Click myVault to continue, and you should see a page similar to following +![Screenshot of the Recovery Service Vaults Detail page](./media/oracle-backup-recovery/recovery_service_03.png) + +Click Backup button. +![Screenshot of the Recovery Service Vaults backup page](./media/oracle-backup-recovery/recovery_service_04.png) + +Enter the Backup goal, policy, and items to back up. + +Use default Azure and Virtual Machine. Click OK button to continue. +![Screenshot of the Recovery Service Vaults Detail page](./media/oracle-backup-recovery/recovery_service_05.png) + +Use default or Create New policy. Click OK button to continue. +![Screenshot of the Recovery Service Vaults Detail page](./media/oracle-backup-recovery/recovery_service_06.png) + +Check the box for myVM. Click OK button to continue. +![Screenshot of the Recovery Service Vaults Detail page](./media/oracle-backup-recovery/recovery_service_07.png) + +The final step is click the 'Enable Backup' button. However, backup would not be started until the scheduled time is up. So next step is performed a manual backup. + +Click the Backup items, then click the number under the Backup item count. + +![Screenshot of the Recovery Service Vaults Detail page](./media/oracle-backup-recovery/recovery_service_08.png) + +Click the three dots on the right-hand side and select Backup now. + +![Screenshot of the Recovery Service Vaults Detail page](./media/oracle-backup-recovery/recovery_service_09.png) + +Click the backup button and Wait for the backup to complete before move to the next section. +You can view the status of the backup job from the job screen. +![Screenshot of the Recovery Service Vaults job page](./media/oracle-backup-recovery/recovery_service_10.png) + +This screen show the status of the backup job + +![Screenshot of the Recovery Service Vaults job page](./media/oracle-backup-recovery/recovery_service_11.png) + +### 5. Remove database files (for testing recovery at later section) + +Remove tablespace and backup files +```bash +$ sudo su - oracle +$ cd /u01/app/oracle/oradata/cdb1 +$ rm -f *.dbf +$ cd /u01/app/oracle/fast_recovery_area/CDB1/backupset +$ rm -rf * +``` +Shutdown Oracle (optional step) + +```bash +$ sqlplus / as sysdba +SQL> shutdown immediate +ORA-01116: error in opening database file 1 +ORA-01110: data file 1: '/u01/app/oracle/oradata/cdb1/system01.dbf' +ORA-27041: unable to open file +Linux-x86_64 Error: 2: No such file or directory +Additional information: 3 +``` + +## Restore deleted files from Recovery Service Vaults + +### 1. Log on to Azure portal and search for Recovery Service Vaults 'myVault'. click the number under the Backup items. +![Screenshot of the Recovery Service Vaults page](./media/oracle-backup-recovery/recovery_service_12.png) + +### 2. Click the number under the Backup item count +![Screenshot of the Recovery Service Vaults page](./media/oracle-backup-recovery/recovery_service_13.png) + +### 3. Click the 'File Recovery (Preview)' +![Screenshot of the Recovery Service Vaults page](./media/oracle-backup-recovery/recovery_service_14.png) + +### 4. Click 'Download Script' button, Save the download file (.sh) to a folder on your client machine +![Screenshot of the Recovery Service Vaults page](./media/oracle-backup-recovery/recovery_service_15.png) + +### 5. Copy the .sh file to the VM + +You can either scp the file to the VM or create a file on the VM by simply copy and paste the content to a new file. + +Change the public IP address and folder name to the folder you like to copy to. + +```bash +$ scp Linux_myvm1_xx-xx-2017 xx-xx-xx PM.sh <publicIpAddress>:/<folder> +``` +### 6. The next step is changed the file to be own by root, change permission, and +execute the script +```bash +$ ssh <publicIpAddress> +$ sudo su - +# chown root:root /<folder>/Linux_myvm1_xx-xx-2017 xx-xx-xx PM.sh +# chmod 755 /<folder>/Linux_myvm1_xx-xx-2017 xx-xx-xx PM.sh +# /<folder>/Linux_myvm1_xx-xx-2017 xx-xx-xx PM.sh +``` +You should get similar outputs as following, enter 'Y' when it asked you to continue. + +```bash +Microsoft Azure VM Backup - File Recovery +______________________________________________ +The script requires 'open-iscsi' and 'lshw' to run. +Do you want us to install 'open-iscsi' and 'lshw' on this machine? +Please press 'Y' to continue with installation, 'N' to abort the operation. : Y +Installing 'open-iscsi'.... +Installing 'lshw'.... + +Connecting to recovery point using ISCSI service... + +Connection succeeded! + +Please wait while we attach volumes of the recovery point to this machine... + +************ Volumes of the recovery point and their mount paths on this machine ************ + +Sr.No. | Disk | Volume | MountPath + +1) | /dev/sde | /dev/sde1 | /root/myVM-20170517093913/Volume1 + +2) | /dev/sde | /dev/sde2 | /root/myVM-20170517093913/Volume2 + +************ Open File Explorer to browse for files. ************ + +After recovery, to remove the disks and close the connection to the recovery point, please click 'Unmount Disks' in step 3 of the portal. + +Please enter 'q/Q' to exit... +``` + +### 7. Access to the mounted volumes + +Enter q to exit, then find the mounted volumes. Run df -k command to list the added volumes + +![Screenshot of the Recovery Service Vaults page](./media/oracle-backup-recovery/recovery_service_16.png) + +### 8. Copy the missing files back to the folders + +```bash +# cd /root/myVM-2017XXXXXXX/Volume2/u01/app/oracle/fast_recovery_area/CDB1/backupset/2017_xx_xx +# cp *.bkp /u01/app/oracle/fast_recovery_area/CDB1/backupset/2017_xx_xx +# cd /u01/app/oracle/fast_recovery_area/CDB1/backupset/2017_xx_xx +# chown oracle:oinstall *.bkp +# cd /root/myVM-2017XXXXXXX/Volume2/u01/app/oracle/oradata/cdb1 +# cp *.dbf /u01/app/oracle/oradata/cdb1 +# cd /u01/app/oracle/oradata/cdb1 +# chown oracle:oinstall *.dbf +``` +### 9. Recover database using RMAN +```bash +# sudo su - oracle +$ rman target / +RMAN> startup mount; +RMAN> restore database; +RMAN> recover database; +RMAN> alter database open resetlogs; +RMAN> SELECT * FROM scott.scott_table; +``` +### 10. Unmount disk + +Back to the Azure portal, click the Unmount Disks button +![Screenshot of the Recovery Service Vaults page](./media/oracle-backup-recovery/recovery_service_17.png) + +## Restore the entire VM + +Alternative, you can restore the entire VM instead of recovery the missing or corrupted files. + +### 1. Drop the myVM + +Log in to Azure portal, locate myVM and select 'Delete' button + +![Screenshot of the Recovery VM page](./media/oracle-backup-recovery/recover_vm_01.png) + +### 2. Recover VM + +Locate the Recovery Services Vaults, select myVault +![Screenshot of the Recovery VM page](./media/oracle-backup-recovery/recover_vm_02.png) + +Click the number under the 'Backup items' +![Screenshot of the Recovery VM page](./media/oracle-backup-recovery/recover_vm_03.png) + +Click the number under the 'Backup item count' +![Screenshot of the Recovery VM page](./media/oracle-backup-recovery/recover_vm_04.png) + +Click the three dots on the right side and select 'Restore VM' +![Screenshot of the Recovery VM page](./media/oracle-backup-recovery/recover_vm_05.png) + +Select the item on the right that you want to restore and click 'OK' +![Screenshot of the Recovery VM page](./media/oracle-backup-recovery/recover_vm_06.png) + +Enter the Virtual machine name and select the Resource Group and click 'OK' +![Screenshot of the Recovery VM page](./media/oracle-backup-recovery/recover_vm_07.png) + +Click the 'Restore' button to begin restoring the VM + +You can check the status of the restore by viewing the job status +![Screenshot of the Recovery VM page](./media/oracle-backup-recovery/recover_vm_08.png) + +A restore is 'In Progress' status + +![Screenshot of the Recovery VM page](./media/oracle-backup-recovery/recover_vm_09.png) + +### 3. Set public IP address +Once the VM is restored, the next step is setup the public IP address. + +Search for 'Public IP addresses' in search menu. + +![Screenshot of the create ip page](./media/oracle-backup-recovery/create_ip_00.png) + +Click Add button, enter the public ip name and select the existing resource group, click Create button. + +![Screenshot of the create ip page](./media/oracle-backup-recovery/create_ip_01.png) + +The next step is associate the Public IP address to the NIC interface of the VM +Located the myVMip, then click Associate button + +![Screenshot of the create ip page](./media/oracle-backup-recovery/create_ip_02.png) + +Change the Resource Type to 'Network Interface' and choose the NIC, which is being used by the myVM. Click OK to continue + +![Screenshot of the create ip page](./media/oracle-backup-recovery/create_ip_03.png) + +Locate the myVM from Portal, you should now see there is an IP address associate with the VM + +![Screenshot of the create ip page](./media/oracle-backup-recovery/create_ip_04.png) + +### 4. Connect to VM +```bash +ssh <publicIpAddress> +``` +### 5. Test database is accessible +```bash +$ sudo su - oracle +$ sqlplus / as sysdba +SQL> startup +``` +If you get error message when trying to start the database. Follow the next step to recover the database. + +### 6. Recover database using RMAN (Optional step) +```bash +# sudo su - oracle +$ rman target / +RMAN> startup mount; +RMAN> restore database; +RMAN> recover database; +RMAN> alter database open resetlogs; +RMAN> SELECT * FROM scott.scott_table; +``` + +This completed the backup and recovery of Oracle database in Azure linux VM. +## Delete the VM + +When you no longer need the VM, you can use the following command to remove the resource group, VM, and all related resources: + +```azurecli +az group delete --name myResourceGroup +``` + +## Next steps + +[Tutorial: Create highly available VMs](../../linux/create-cli-complete.md) + +[Explore VM deployment Azure CLI samples](../../linux/cli-samples.md) diff --git a/articles/vpn-gateway/vpn-gateway-about-vpn-gateway-settings.md b/articles/vpn-gateway/vpn-gateway-about-vpn-gateway-settings.md index 52089c1c529c9..b4c3c2ac14a6c 100644 --- a/articles/vpn-gateway/vpn-gateway-about-vpn-gateway-settings.md +++ b/articles/vpn-gateway/vpn-gateway-about-vpn-gateway-settings.md @@ -14,7 +14,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: infrastructure-services -ms.date: 02/13/2017 +ms.date: 06/02/2017 ms.author: cherylmc --- @@ -38,10 +38,10 @@ Example: New-AzureRmVirtualNetworkGateway -Name vnetgw1 -ResourceGroupName testrg ` -Location 'West US' -IpConfigurations $gwipconfig -GatewayType Vpn ` -VpnType RouteBased - - + ## <a name="gwsku"></a>Gateway SKUs -[!INCLUDE [vpn-gateway-gwsku-include](../../includes/vpn-gateway-gwsku-include.md)] + +[!INCLUDE [vpn-gateway-gwsku-include](../../includes/vpn-gateway-gwsku-original-include.md)] ### Configuring the gateway SKU ####Specifying the gateway SKU in the Azure portal diff --git a/articles/vpn-gateway/vpn-gateway-about-vpngateways.md b/articles/vpn-gateway/vpn-gateway-about-vpngateways.md index 22108dace0243..bb11b277d7173 100644 --- a/articles/vpn-gateway/vpn-gateway-about-vpngateways.md +++ b/articles/vpn-gateway/vpn-gateway-about-vpngateways.md @@ -14,19 +14,20 @@ ms.devlang: na ms.topic: get-started-article ms.tgt_pltfrm: na ms.workload: infrastructure-services -ms.date: 04/04/2017 +ms.date: 06/02/2017 ms.author: cherylmc --- # About VPN Gateway -To send network traffic between your Azure virtual network and your on-premises site, you must create a virtual network gateway for your virtual network. A VPN gateway is a type of virtual network gateway that sends encrypted traffic across a public connection. You can also use VPN gateways to send traffic between Azure virtual networks over the Microsoft network. +A VPN gateway is a type of virtual network gateway that sends encrypted traffic across a public connection to an on-premises location. You can also use VPN gateways to send encrypted traffic between Azure virtual networks over the Microsoft network. To send encrypted network traffic between your Azure virtual network and your on-premises site, you must create a VPN gateway for your virtual network. -There are two types of virtual network gateways: 'ExpressRoute' and 'Vpn'. When you create a virtual network gateway, you specify the gateway type that you want to create. A VPN gateway is a virtual network gateway that uses the gateway type 'Vpn'. +Each virtual network can have only one VPN gateway, however, you can create multiple connections to the same VPN gateway. An example of this is a Multi-Site connection configuration. When you create multiple connections to the same VPN gateway, all VPN tunnels, including Point-to-Site VPNs, share the bandwidth that is available for the gateway. -Each virtual network can have two virtual network gateways, but only one of each type. Depending on the settings that you choose, you can create multiple connections to a single VPN gateway. An example of this is a Multi-Site connection configuration. When you create multiple connections to the same VPN gateway, all VPN tunnels, including Point-to-Site VPNs, share the bandwidth that is available for the gateway. +### What is a virtual network gateway? -## Gateway SKUs -[!INCLUDE [vpn-gateway-gwsku-include](../../includes/vpn-gateway-gwsku-include.md)] +A virtual network gateway is composed of two or more virtual machines that are deployed to a specific subnet called the GatewaySubnet. The VMs that are located in the GatewaySubnet are created when you create the virtual network gateway. Virtual network gateway VMs are configured to contain routing tables and gateway services specific to the gateway. You can't directly configure the VMs that are part of the virtual network gateway and you should never deploy additional resources to the GatewaySubnet. + +When you create a virtual network gateway using the gateway type 'Vpn', it creates a specific type of virtual network gateway that encrypts traffic; a VPN gateway. The Gateway SKU that you select when you create your virtual network gateway determines the VMs that are created and configured in the GatewaySubnet. ## Configuring a VPN Gateway A VPN gateway connection relies on multiple resources that are configured with specific settings. Most of the resources can be configured separately, although they must be configured in a certain order in some cases. diff --git a/articles/vpn-gateway/vpn-gateway-howto-vnet-vnet-cli.md b/articles/vpn-gateway/vpn-gateway-howto-vnet-vnet-cli.md index 70ea3c2b132a1..3a0c7193e271c 100644 --- a/articles/vpn-gateway/vpn-gateway-howto-vnet-vnet-cli.md +++ b/articles/vpn-gateway/vpn-gateway-howto-vnet-vnet-cli.md @@ -316,7 +316,7 @@ This step must be done in the context of the new subscription, Subscription 5. T az network vnet-gateway create -n VNet5GW -l japaneast --public-ip-address VNet5GWIP -g TestRG5 --vnet TestVNet5 --gateway-type Vpn --sku Standard --vpn-type RouteBased --no-wait ``` -### Step 6 - Create the connections +### Step 8 - Create the connections We split this step into two CLI sessions marked as **[Subscription 1]**, and **[Subscription 5]** because the gateways are in the different subscriptions. To switch between subscriptions use 'az account list --all' to list the subscriptions available to your account, then use 'az account set --subscription <subscriptionID>' to switch to the subscription that you want to use. @@ -365,4 +365,4 @@ We split this step into two CLI sessions marked as **[Subscription 1]**, and **[ ## Next steps * Once your connection is complete, you can add virtual machines to your virtual networks. For more information, see the [Virtual Machines documentation](https://docs.microsoft.com/azure/#pivot=services&panel=Compute). -* For information about BGP, see the [BGP Overview](vpn-gateway-bgp-overview.md) and [How to configure BGP](vpn-gateway-bgp-resource-manager-ps.md). \ No newline at end of file +* For information about BGP, see the [BGP Overview](vpn-gateway-bgp-overview.md) and [How to configure BGP](vpn-gateway-bgp-resource-manager-ps.md). diff --git a/articles/vpn-gateway/vpn-gateway-plan-design.md b/articles/vpn-gateway/vpn-gateway-plan-design.md index 52d50547d10ae..9d5efa4327d4a 100644 --- a/articles/vpn-gateway/vpn-gateway-plan-design.md +++ b/articles/vpn-gateway/vpn-gateway-plan-design.md @@ -14,7 +14,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: infrastructure-services -ms.date: 04/05/2017 +ms.date: 06/02/2017 ms.author: cherylmc --- @@ -37,11 +37,6 @@ The following table can help you decide the best connectivity option for your so [!INCLUDE [vpn-gateway-cross-premises](../../includes/vpn-gateway-cross-premises-include.md)] -### <a name="gwrequire"></a>Gateway requirements by VPN type and SKU -[!INCLUDE [vpn-gateway-gwsku](../../includes/vpn-gateway-gwsku-include.md)] - -For more information about gateway SKUs, see [VPN Gateway settings](vpn-gateway-about-vpn-gateway-settings.md#gwsku). - #### Aggregate throughput by SKU and VPN type [!INCLUDE [vpn-gateway-table-gwtype-aggtput](../../includes/vpn-gateway-table-gwtype-aggtput-include.md)] diff --git a/includes/app-service-plan.md b/includes/app-service-plan.md index 765598c935fc7..f74c24388a211 100644 --- a/includes/app-service-plan.md +++ b/includes/app-service-plan.md @@ -1,4 +1,4 @@ -An App Service plan specifies the location, size, and features of the web server farm that hosts your app. You can save money when hosting multiple apps by configuring the web apps to share a single App Service plan. +An [App Service plan](../articles/app-service/azure-web-sites-web-hosting-plans-in-depth-overview.md) specifies the location, size, and features of the web server farm that hosts your app. You can save money when hosting multiple apps by configuring the web apps to share a single App Service plan. App Service plans define: diff --git a/includes/app-service-web-configure-local-git.md b/includes/app-service-web-configure-local-git.md new file mode 100644 index 0000000000000..7e25e397c2afc --- /dev/null +++ b/includes/app-service-web-configure-local-git.md @@ -0,0 +1,21 @@ +## Configure local Git deployment + +Configure local Git deployment to the web app with the [az appservice web source-control config-local-git](/cli/azure/appservice/web/source-control#config-local-git) command. + +App Service supports several ways to deploy content to a web app, such as FTP, local Git, GitHub, Visual Studio Team Services, and Bitbucket. For this quickstart, you deploy by using local Git. That means you deploy by using a Git command to push from a local repository to a repository in Azure. + +In the following command, replace *\<app_name>* with your web app's name. + +```azurecli +az appservice web source-control config-local-git --name <app_name> --resource-group myResourceGroup --query url --output tsv +``` + +The output has the following format: + +``` +https://<username>@<app_name>.scm.azurewebsites.net:443/<app_name>.git +``` + +The `<username>` is the [deployment user](#configure-a-deployment-user) that you created in a previous step. + +Save the URI shown; you'll use it in the next step. diff --git a/includes/app-service-web-create-app-service-plan.md b/includes/app-service-web-create-app-service-plan.md new file mode 100644 index 0000000000000..6647699e23d15 --- /dev/null +++ b/includes/app-service-web-create-app-service-plan.md @@ -0,0 +1,31 @@ +## Create an Azure App Service plan + +Create an App Service plan with the [az appservice plan create](/cli/azure/appservice/plan#create) command. + +[!INCLUDE [app-service-plan](app-service-plan.md)] + +The following example creates an App Service plan named `myAppServicePlan` in the **Free** pricing tier: + +```azurecli +az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE +``` + +When the App Service plan has been created, the Azure CLI shows information similar to the following example: + +```json +{ + "adminSiteName": null, + "appServicePlanName": "myAppServicePlan", + "geoRegion": "West Europe", + "hostingEnvironmentProfile": null, + "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan", + "kind": "app", + "location": "West Europe", + "maximumNumberOfWorkers": 1, + "name": "myAppServicePlan", + < JSON data removed for brevity. > + "targetWorkerSizeId": 0, + "type": "Microsoft.Web/serverfarms", + "workerTierName": null +} +``` \ No newline at end of file diff --git a/includes/app-service-web-create-resource-group.md b/includes/app-service-web-create-resource-group.md new file mode 100644 index 0000000000000..080d36eae02ac --- /dev/null +++ b/includes/app-service-web-create-resource-group.md @@ -0,0 +1,13 @@ +## Create a resource group + +Create a resource group with the [az group create](/cli/azure/group#create) command. + +[!INCLUDE [resource group intro text](resource-group.md)] + +The following example creates a resource group named *myResourceGroup* in the *westeurope* location. + +```azurecli +az group create --name myResourceGroup --location westeurope +``` + +To see the available locations, run the `az appservice list-locations` command. You generally create resources in a region near you. diff --git a/includes/app-service-web-create-web-app.md b/includes/app-service-web-create-web-app.md new file mode 100644 index 0000000000000..8fe1ffa571aba --- /dev/null +++ b/includes/app-service-web-create-web-app.md @@ -0,0 +1,47 @@ +## Create a web app + +Create a [web app](../articles/app-service-web/app-service-web-overview.md) in the `myAppServicePlan` App Service plan with the [az appservice web create](/cli/azure/appservice/web#create) command. + +The web app provides a hosting space for your code and provides a URL to view the deployed app. + +In the following command, replace *\<app_name>* with a unique name. If `<app_name>` is not unique, you get the error message "Website with given name <app_name> already exists." The default URL of the web app is `https://<app_name>.azurewebsites.net`. + +```azurecli +az appservice web create --name <app_name> --resource-group myResourceGroup --plan myAppServicePlan +``` + +When the web app has been created, the Azure CLI shows information similar to the following example: + +```json +{ + "availabilityState": "Normal", + "clientAffinityEnabled": true, + "clientCertEnabled": false, + "cloningInfo": null, + "containerSize": 0, + "dailyMemoryTimeQuota": 0, + "defaultHostName": "<app_name>.azurewebsites.net", + "enabled": true, + "enabledHostNames": [ + "<app_name>.azurewebsites.net", + "<app_name>.scm.azurewebsites.net" + ], + "gatewaySiteName": null, + "hostNameSslStates": [ + { + "hostType": "Standard", + "name": "<app_name>.azurewebsites.net", + "sslState": "Disabled", + "thumbprint": null, + "toUpdate": null, + "virtualIp": null + } + < JSON data removed for brevity. > +} +``` + +Browse to the site to see your newly created web app. + +```bash +http://<app_name>.azurewebsites.net +``` diff --git a/includes/app-service-web-git-push-to-azure.md b/includes/app-service-web-git-push-to-azure.md new file mode 100644 index 0000000000000..b98277222f500 --- /dev/null +++ b/includes/app-service-web-git-push-to-azure.md @@ -0,0 +1,15 @@ +## Push to Azure from Git + +Add an Azure remote to your local Git repository. + +```bash +git remote add azure <URI from previous step> +``` + +Push to the Azure remote to deploy your app. You are prompted for the password you created earlier when you created the deployment user. Make sure that you enter the password you created in [Configure a deployment user](#configure-a-deployment-user), not the password you use to log in to the Azure portal. + +```azurecli +git push azure master +``` + +The preceding command displays information similar to the following example: diff --git a/includes/app-service-web-quickstart1.md b/includes/app-service-web-quickstart1.md deleted file mode 100644 index 1334bf63301f0..0000000000000 --- a/includes/app-service-web-quickstart1.md +++ /dev/null @@ -1,45 +0,0 @@ -## Create a resource group - - An [Azure resource group](https://docs.microsoft.com/azure/azure-resource-manager/resource-group-overview#resource-groups) is a logical container in which resources such as web apps and databases are managed. You deploy, update, and delete the resources in a resource group. - -Create a resource group with the [az group create](/cli/azure/group#create) command. - -```azurecli -az group create --name myResourceGroup --location westeurope -``` - -To see the available locations, use the `az appservice list-locations` command. You generally create resources in a region near you. - -## Create an Azure App Service plan - -Create a "FREE" [App Service plan](../articles/app-service/azure-web-sites-web-hosting-plans-in-depth-overview.md) with the [az appservice plan create](/cli/azure/appservice/plan#create) command. - -[!INCLUDE [app-service-plan](app-service-plan.md)] - -The following command creates an App Service plan named `quickStartPlan` using the **Free** pricing tier. - -```azurecli -az appservice plan create --name quickStartPlan --resource-group myResourceGroup --sku FREE -``` - -When the App Service plan has been created, the Azure CLI shows information similar to the following example: - -```json -{ - "adminSiteName": null, - "appServicePlanName": "quickStartPlan", - "geoRegion": "West Europe", - "hostingEnvironmentProfile": null, - "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/quickStartPlan", - "kind": "app", - "location": "West Europe", - "maximumNumberOfWorkers": 1, - "name": "quickStartPlan", - < JSON data removed for brevity. > - "targetWorkerSizeId": 0, - "type": "Microsoft.Web/serverfarms", - "workerTierName": null -} -``` - -## Create a Web App \ No newline at end of file diff --git a/includes/app-service-web-quickstart2.md b/includes/app-service-web-quickstart2.md deleted file mode 100644 index 7727e3c761a5d..0000000000000 --- a/includes/app-service-web-quickstart2.md +++ /dev/null @@ -1,112 +0,0 @@ -Use the [az appservice web create](/cli/azure/appservice/web#create) command to create the Web App. In the following command, substitute a unique app name where you see the `<app_name>` placeholder. The `<app_name>` is used in the default DNS site for the web app. If `<app_name>` is not unique, you get the friendly error message "Website with given name <app_name> already exists." - -```azurecli -az appservice web create --name <app_name> --resource-group myResourceGroup --plan quickStartPlan -``` - -When the Web App has been created, the Azure CLI shows information similar to the following example: - -```json -{ - "availabilityState": "Normal", - "clientAffinityEnabled": true, - "clientCertEnabled": false, - "cloningInfo": null, - "containerSize": 0, - "dailyMemoryTimeQuota": 0, - "defaultHostName": "<app_name>.azurewebsites.net", - "enabled": true, - "enabledHostNames": [ - "<app_name>.azurewebsites.net", - "<app_name>.scm.azurewebsites.net" - ], - "gatewaySiteName": null, - "hostNameSslStates": [ - { - "hostType": "Standard", - "name": "<app_name>.azurewebsites.net", - "sslState": "Disabled", - "thumbprint": null, - "toUpdate": null, - "virtualIp": null - } - < JSON data removed for brevity. > -} -``` - -Browse to the site (`http://<app_name>.azurewebsites.net`) to see your newly created web app. - -![app-service-web-service-created](../articles/app-service-web/media/app-service-web-get-started-nodejs-poc/app-service-web-service-created.png) - - -## Configure local Git deployment - -App Service supports several ways to deploy content to a web app, such as FTP, local Git, GitHub, Visual Studio Team Services, and Bitbucket. - -For this quickstart, you deploy by using local Git. That means you deploy by using a Git command to push from a local repository to a repository in Azure. - -Use the [az appservice web source-control config-local-git](/cli/azure/appservice/web/source-control#config-local-git) command to configure local Git access to the web app. - -```azurecli -az appservice web source-control config-local-git --name <app_name> --resource-group myResourceGroup --query url --output tsv -``` - -The output has the following format: - -``` -https://<username>@<app_name>.scm.azurewebsites.net:443/<app_name>.git -``` - -Save the URI shown. You'll use it in the next step. The `<username>` is the [deployment user](#configure-a-deployment-user) that you created in a previous step. - -## Push to Azure from git - -Add an Azure remote to your local Git repository. - -```bash -git remote add azure <URI from previous step> -``` - -Push to the Azure remote to deploy your app. You are prompted for the password you created earlier when you created the deployment user. Make sure that you enter the password you created in [Configure a deployment user](#configure-a-deployment-user), not the password you use to log in to the Azure portal. - -```azurecli -git push azure master -``` - -The preceding command displays information similar to the following example: - -```bash -Counting objects: 13, done. -Delta compression using up to 4 threads. -Compressing objects: 100% (11/11), done. -Writing objects: 100% (13/13), 2.07 KiB | 0 bytes/s, done. -Total 13 (delta 2), reused 0 (delta 0) -remote: Updating branch 'master'. -remote: Updating submodules. -remote: Preparing deployment for commit id 'cc39b1e4cb'. -remote: Generating deployment script. -remote: Generating deployment script for Web Site -remote: Generated deployment script files -remote: Running deployment command... -remote: Handling Basic Web Site deployment. -remote: KuduSync.NET from: 'D:\home\site\repository' to: 'D:\home\site\wwwroot' -remote: Deleting file: 'hostingstart.html' -remote: Copying file: '.gitignore' -remote: Copying file: 'LICENSE' -remote: Copying file: 'README.md' -remote: Finished successfully. -remote: Running post deployment command(s)... -remote: Deployment successful. -To https://<app_name>.scm.azurewebsites.net/<app_name>.git - * [new branch] master -> master -``` - -### Browse to the app - - -Browse to the deployed app: - -``` -http://<app_name>.azurewebsites.net -``` - diff --git a/includes/cloud-shell-try-it.md b/includes/cloud-shell-try-it.md index 7753ced524c2e..d13c093e5fa90 100644 --- a/includes/cloud-shell-try-it.md +++ b/includes/cloud-shell-try-it.md @@ -1,7 +1,5 @@ -The [Azure Cloud Shell](../articles/cloud-shell/quickstart.md) (in public preview) is a web based shell that is preconfigured to simplify using Azure tools. With Cloud Shell, you always have the most up-to-date version of the tools available and you don’t have to install, update or separately log-in. Just click the **Try It** button at the top right of a code block within this article to launch the Cloud Shell. - -![Cloud Shell](./media/cloud-shell-try-it/cli-try-it.png) +The [Azure Cloud Shell](../articles/cloud-shell/quickstart.md) (in public preview) is a web-based shell that is preconfigured to simplify using Azure tools. With Cloud Shell, you always have the most up-to-date version of the tools available and you don’t have to install, update or separately log in. Click the **Try It** button at the top right of a code block to launch the Cloud Shell. Then, use the **Copy** button to copy and paste the sample code into the Cloud Shell. You can also open the Cloud Shell from the Azure portal by clicking the ![Cloud Shell](./media/cloud-shell-try-it/cs-button.png) button on the top navigation. diff --git a/includes/configure-deployment-user.md b/includes/configure-deployment-user.md index b7e475b69e915..2d91923f9b20e 100644 --- a/includes/configure-deployment-user.md +++ b/includes/configure-deployment-user.md @@ -1,20 +1,17 @@ ## Configure a deployment user -For FTP and local Git, you must have a deployment user configured on the server to authenticate your deployment. +Create deployment credentials with the [az appservice web deployment user set](/cli/azure/appservice/web/deployment/user#set) command. -> [!NOTE] -> A deployment user is required for FTP and Local Git deployment to a Web App. -> The `username` and `password` are account-level. They are different from your Azure Subscription credentials. -> +A deployment user is required for FTP and local Git deployment to a web app. The user name and password are account level. They are different from your Azure subscription credentials. -Run the [az appservice web deployment user set](/cli/azure/appservice/web/deployment/user#set) command to create your deployment credentials. +In the following command, replace *\<user-name>* and *\<password>* with a new user name and password. ```azurecli az appservice web deployment user set --user-name <username> --password <password> ``` -The username must be unique and the password must be strong. If you get a ` 'Conflict'. Details: 409` error, change the username. If you get a ` 'Bad Request'. Details: 400` error, use a stronger password. +The user name must be unique. The password must be at least eight characters long, with two of the following three elements: letters, numbers, symbols. If you get a ` 'Conflict'. Details: 409` error, change the username. If you get a ` 'Bad Request'. Details: 400` error, use a stronger password. You only need to create this deployment user once; you can use it for all your Azure deployments. -Record the username and password, as they are used later in a later step when you deploy the app. \ No newline at end of file +Record the user name and password for use in later steps when you deploy the app. \ No newline at end of file diff --git a/includes/cosmos-db-create-dbaccount-graph.md b/includes/cosmos-db-create-dbaccount-graph.md index dc6e57f925680..88f7d61cd1af8 100644 --- a/includes/cosmos-db-create-dbaccount-graph.md +++ b/includes/cosmos-db-create-dbaccount-graph.md @@ -1,22 +1,22 @@ 1. In a new window, sign in to the [Azure portal](https://portal.azure.com/). -2. In the left menu, click **New**, click **Databases**, and then click **Azure Cosmos DB**. +2. In the left pane, click **New**, click **Databases**, and then click **Azure Cosmos DB**. - ![Screen shot of the Azure portal, highlighting More Services, and Azure Cosmos DB](./media/cosmos-db-create-dbaccount-graph/create-nosql-db-databases-json-tutorial-1.png) + ![Azure portal Databases pane](./media/cosmos-db-create-dbaccount-graph/create-nosql-db-databases-json-tutorial-1.png) 3. In the **New account** blade, specify the desired configuration for the Azure Cosmos DB account. With Azure Cosmos DB, you can choose one of four programming models: Gremlin (graph), MongoDB, SQL (DocumentDB), and Table (key-value). - In this quick start we'll be programming against the Graph API so you'll choose **Gremlin (graph)** as you fill out the form. But if you have document data from a catalog app, key/value (table) data, or data migrated from a MongoDB app, realize that Azure Cosmos DB can provide a highly available, globally-distributed database service platform for all your mission-critical applications. + In this quick-start article, we program against the Graph API, so choose **Gremlin (graph)** as you fill out the form. If you have document data from a catalog app, key/value (table) data, or data that's migrated from a MongoDB app, realize that Azure Cosmos DB can provide a highly available, globally distributed database service platform for all your mission-critical applications. - Fill out the New account blade using the information in the screenshot as a guide. You will choose unique values as you set up your account so your values will not match the screenshot exactly. + On the **New account** blade, complete the fields with the information in the following screenshot as a guide only. Because your own values will not match those in the screenshot, be sure to choose unique values as you set up your account. - ![Screen shot of the New Azure Cosmos DB blade](./media/cosmos-db-create-dbaccount-graph/create-nosql-db-databases-json-tutorial-2.png) + ![The Azure Cosmos DB blade](./media/cosmos-db-create-dbaccount-graph/create-nosql-db-databases-json-tutorial-2.png) Setting|Suggested value|Description ---|---|--- - ID|*Unique value*|A unique name you choose to identify the Azure Cosmos DB account. *documents.azure.com* is appended to the ID you provide to create your URI, so use a unique but identifiable ID. The ID may contain only lowercase letters, numbers, and the '-' character, and must be between 3 and 50 characters. - API|Gremlin (graph)|We'll be programming against the [Graph API](../articles/cosmos-db/graph-introduction.md) later in this article.| + ID|*Unique value*|A unique name that you choose to identify the Azure Cosmos DB account. Because *documents.azure.com* is appended to the ID that you provide to create your URI, use a unique but identifiable ID. The ID must contain only lowercase letters, numbers, and the hyphen (-) character, and it must contain from 3 to 50 characters. + API|Gremlin (graph)|We program against the [Graph API](../articles/cosmos-db/graph-introduction.md) later in this article.| Subscription|*Your subscription*|The Azure subscription that you want to use for the Azure Cosmos DB account. Resource Group|*The same value as ID*|The new resource group name for your account. For simplicity, you can use the same name as your ID. Location|*The region closest to your users*|The geographic location in which to host your Azure Cosmos DB account. Choose the location closest to your users to give them the fastest access to the data. @@ -26,6 +26,6 @@ ![Deployment started notification](./media/cosmos-db-create-dbaccount-graph/azure-documentdb-nosql-notification.png) -6. When the deployment is complete, open the new account from the All Resources tile. +6. When the deployment is complete, open the new account from the **All Resources** tile. ![DocumentDB account on the All Resources tile](./media/cosmos-db-create-dbaccount-graph/azure-documentdb-all-resources.png) \ No newline at end of file diff --git a/includes/cosmos-db-tutorial-review-slas.md b/includes/cosmos-db-tutorial-review-slas.md index c364e027a774c..8cf4fda58f3c6 100644 --- a/includes/cosmos-db-tutorial-review-slas.md +++ b/includes/cosmos-db-tutorial-review-slas.md @@ -1,5 +1,7 @@ -Now that your app is up and running, you'll want to ensure ensure business continuity, and watch user access to ensure high-availability to your users. You can use the Azure portal to review the availability, latency, throughput, and consistency of your collection. Each graph that's associated with the [Azure Cosmos DB Service Level Agreements (SLAs)](https://azure.microsoft.com/support/legal/sla/documentdb/) provides a line showing the quota required to meet the SLA and your actual usage, providing you transparency into the performance of your database. Additional metrics such as storage usage, number of requests per minute are also included in the portal +Now that your app is up and running, you'll want to ensure business continuity and watch user access to ensure high availability. You can use the Azure portal to review the availability, latency, throughput, and consistency of your collection. -* In the Azure portal, in the left menu, under **Monitoring**, click **Metrics**. +Each graph that's associated with the [Azure Cosmos DB Service Level Agreements (SLAs)](https://azure.microsoft.com/support/legal/sla/documentdb/) provides a line that shows the quota required to meet the SLA and your actual usage, giving you a clear view into your database performance. Additional metrics, such as storage usage and number of requests per minute, are also included in the portal. + +* In the Azure portal, in the left pane, under **Monitoring**, click **Metrics**. ![Todo app with sample data](./media/cosmos-db-tutorial-review-slas/azure-cosmosdb-portal-metrics-slas.png) \ No newline at end of file diff --git a/includes/manage-azure-web-app.md b/includes/manage-azure-web-app.md deleted file mode 100644 index b3c06d05ea6d8..0000000000000 --- a/includes/manage-azure-web-app.md +++ /dev/null @@ -1,23 +0,0 @@ -## Manage your new Azure web app - -Go to the Azure portal to review the Azure resources you created. - -To do this, sign in to [https://portal.azure.com](https://portal.azure.com). - -From the left menu, select **App Services**, and then select the name of your Azure web app. - -![Portal navigation to Azure web app](media/manage-azure-web-app/portal1.png) - -You have landed in your web app's _blade_ (a portal page that opens horizontally). - -By default, your web app's blade shows the **Overview** page. This page gives you a view of how your app is doing. Here, you can perform basic management tasks like browse, stop, start, restart, and delete. The tabs on the left side of the blade show the different configuration pages you can open. - -![App Service blade in Azure portal](media/manage-azure-web-app/portal2.png) - -These tabs in the blade show the many features you can add to your web app. The following list is a few of the possibilities: - -* Map a custom DNS name -* Bind a custom SSL certificate -* Configure continuous deployment -* Scale up and out -* Add user authentication \ No newline at end of file diff --git a/includes/resource-group.md b/includes/resource-group.md index 3ed543b5160cb..3e1fd99e678ec 100644 --- a/includes/resource-group.md +++ b/includes/resource-group.md @@ -1 +1 @@ -A [resource group](../articles/azure-resource-manager/resource-group-overview#terminology) is a logical container into which Azure resources like web apps, databases, and storage accounts are deployed and managed. \ No newline at end of file +A [resource group](../articles/azure-resource-manager/resource-group-overview.md#terminology) is a logical container into which Azure resources like web apps, databases, and storage accounts are deployed and managed. diff --git a/includes/vpn-gateway-configure-vpn-device-rm-include.md b/includes/vpn-gateway-configure-vpn-device-rm-include.md index 08bc8a34040b6..2a48ab652d878 100644 --- a/includes/vpn-gateway-configure-vpn-device-rm-include.md +++ b/includes/vpn-gateway-configure-vpn-device-rm-include.md @@ -1,7 +1,9 @@ -See the following links for VPN device configuration information: +See the following links for configuration information: -- For information about compatible VPN devices, see [VPN Devices](../articles/vpn-gateway/vpn-gateway-about-vpn-devices.md). +- For information about compatible VPN devices, see [VPN Devices](../articles/vpn-gateway/vpn-gateway-about-vpn-devices.md). +- Before configuring your VPN device, check for any [Known device compatibility issues](../articles/vpn-gateway/vpn-gateway-about-vpn-devices.md#known) for the VPN device that you want to use. - For links to device configuration settings, see [Validated VPN Devices](../articles/vpn-gateway/vpn-gateway-about-vpn-devices.md#devicetable). The device configuration links are provided on a best-effort basis. It's always best to check with your device manufacturer for the latest configuration information. - For information about editing device configuration samples, see [Editing samples](../articles/vpn-gateway/vpn-gateway-about-vpn-devices.md#editing). -- For IPsec/IKE parameters, see [Parameters](../articles/vpn-gateway/vpn-gateway-about-vpn-devices.md#ipsec). -- Before configuring your VPN device, check for any [Known device compatibility issues](../articles/vpn-gateway/vpn-gateway-about-vpn-devices.md#known) for the VPN device that you want to use. \ No newline at end of file +- For cryptographic requirements, see [About cryptographic requirements and Azure VPN gateways](../articles/vpn-gateway/vpn-gateway-about-compliance-crypto.md). +- For information about IPsec/IKE parameters, see [About VPN devices and IPsec/IKE parameters for Site-to-Site VPN gateway connections](../articles/vpn-gateway/vpn-gateway-about-vpn-devices.md#ipsec). +- For IPsec/IKE policy configuration steps, see [Configure IPsec/IKE policy for S2S VPN or VNet-to-VNet connections](../articles/vpn-gateway/vpn-gateway-ipsecikepolicy-rm-powershell.md). \ No newline at end of file diff --git a/includes/vpn-gateway-gwsku-original-include.md b/includes/vpn-gateway-gwsku-original-include.md new file mode 100644 index 0000000000000..97fcd0d1d0f57 --- /dev/null +++ b/includes/vpn-gateway-gwsku-original-include.md @@ -0,0 +1,17 @@ +When you create a virtual network gateway, you need to specify the gateway SKU that you want to use. When you select a higher gateway SKU, more CPUs and network bandwidth are allocated to the gateway, and as a result, the gateway can support higher network throughput to the virtual network. + +VPN Gateway can use the following SKUs: + +* Basic +* Standard +* HighPerformance + +VPN Gateway does not use the UltraPerformance gateway SKU. For information about the UltraPerformance SKU, see the [ExpressRoute](../articles/expressroute/expressroute-about-virtual-network-gateways.md) documentation. + +When selecting a SKU, consider the following: + +* If you want to use a PolicyBased VPN type, you must use the Basic SKU. PolicyBased VPNs (previously called Static Routing) are not supported on any other SKU. +* BGP is not supported on the Basic SKU. +* ExpressRoute-VPN Gateway coexist configurations are not supported on the Basic SKU. +* Active-active S2S VPN Gateway connections can be configured on the HighPerformance SKU only. +