Category Archives : IT Pro/DevOps



Changes coming to PowerShell (preview) in Azure Cloud Shell

Azure Cloud Shell provides browser-based authenticated shell access to Azure from virtually anywhere. Cloud Shell gives the users a rich environment with common tools that is updated and maintained by Microsoft.

Currently, Azure Cloud Shell provides two environments that can be launched from Azure Portal, dedicated URL, Azure documentation, Visual Studio Code via the Azure Account extension, and Azure App:

Bash in Cloud Shell that runs Bash shell on Ubuntu Linux, which was made generally available in November 2017

PowerShell in Cloud Shell that runs Windows PowerShell 5.1 on Windows Server Core and has been in preview since September 2017

In this post, we are listing the key upcoming changes to the PowerShell experience in Azure Cloud Shell, namely:

Faster startup time PowerShell Core 6 as the default experience Running on a Linux container Persistent Tool Settings Faster Startup Time

We are well-aware that the startup time of PowerShell in Azure Cloud Shell is well below the user’s expectation. For past couple of months, the team has been working hard to make significant improvements in this area. We expect to deliver multi-fold improvements in the startup time for PowerShell experience (and also make Bash experience faster).



Help improve our Azure docs!
Help improve our Azure docs!

On a weekly basis, more than 5 million people find help using Microsoft online help and documentation. Despite having more than 380,000 pages of articles, references, and tutorials, we each have our own stories of painful gaps.

Today, we’re introducing a new project to help, code-named Aladdin.

What is Aladdin? Aladdin is an AI assistant that connects you to relevant Azure documentation and helps you accomplish your work more efficiently. Just like any assistant, the more you work with Aladdin, the better it’ll be able to work for you. And as Aladdin helps you, it will be helping us identify gaps and areas for improvement in our docs and products.

After installing the Aladdin extension, “Related Questions” prompts will appear on Microsoft Docs article pages:

Each prompt recommends contextually-relevant articles:

Click on a card for more information, and “go to original article’” to navigate to the source page in a new tab:

Ask Aladdin if you have questions – Aladdin surfaces expert responses to questions from real customers:

Install Aladdin

Install the Aladdin extension for your Chrome browser. Aladdin will now be there to assist you on Azure documentation pages. Edge support is coming soon!

How does it work?



AzCopy on Linux now generally available

Today we are announcing the general availability release of AzCopy on Linux. AzCopy is a command line data transfer utility designed to move large amounts of data to and from Azure Storage with optimal performance. It is designed to handle transient failures with automatic retries, as well as to provide a resume option for failed transfers. This general availability release includes new and enhanced features, as well as performance improvements thanks to the feedback we received during the Preview.

You can get started with the latest AzCopy release following the documentation.

What’s new? Throughput improvements up to 3X

Investments in performance improvements and leveraging .Net Core 2.1 have boosted the AzCopy throughput significantly. In our tests, we have seen up to three times the improvement in throughput for large, multiple files as well as up to two times the throughput improvement in scenarios where millions of small files are transferred.

Easy installation

AzCopy now packages .NET Core 2.1 thereby eliminating the need to manually install .NET Core as a pre-requisite. You can now extract the AzCopy package, and start using. You might however need to install the .NET Core dependencies in some Linux distributions. Please consult the documentation for the



What’s brewing in Visual Studio Team Services: April 2018 Digest

This post series provides the latest updates and news for Visual Studio Team Services and is a great way for Azure users to keep up-to-date with new features being released every three weeks. Visual Studio Team Services offers the best DevOps tooling to create an efficient continuous integration and release pipeline to Azure. With the rapidly expanding list of features in Team Services, teams can start to leverage it more efficiently for all areas of their Azure workflow, for apps written in any language and deployed to any OS.

Chain related builds together using build completion triggers

Large products have several components that are dependent on each other. These components are often independently built. When an upstream component (a library, for example) changes, the downstream dependencies have to be rebuilt and revalidated. Teams typically manage these dependencies manually.

Now you can trigger a build upon the successful completion of another build. Artifacts produced by an upstream build can be downloaded and used in the later build, and you can also get data from these variables: Build.TriggeredBy.BuildId, Build.TriggeredBy.BuildDefinitionId, Build.TriggeredBy.BuildDefinitionName. See the build triggers documentation for more information.

This feature was prioritized based on what is currently the second-highest voted suggestion with



Preview: programmatically create Azure enterprise subscriptions using ARM APIs

In the past, Azure customers on Enterprise Agreement (EA) have subscriptions that are centrally controlled by the company’s cloud operations or IT team. When a team or employee in the company wants to start using Azure, they need to get access to the EA enrollment so that it gets billed to the company EA. To do that, the employee or team makes a request to the central cloud operations team, go through approval, and have an Azure subscription provisioned as prescribed by the company’s cloud governance policies. During this process, an EA subscription must be manually created using the Azure Account Center. As these company’s Azure adoption increases, the manual step in creating subscriptions becomes a bottleneck in scalability in their cloud management.

To unblock these customers, we’ve created an API and a suite of SDK for Azure EA subscription creation.

Get started with Azure EA subscription creation API

To get started, see documentation at Programmatically create Azure enterprise subscriptions (preview) and our sample code. In this release, you can

Create an Azure EA subscription (regular or dev/test) as an Account Owner. Use Azure RBAC to give another user or service principal to create subscriptions on behalf of an Account



How to configure Azure SQL Database Geo-DR with Azure Key Vault

Azure SQL Database and Data Warehouse offer encryption-at-rest by providing Transparent Data Encryption (TDE) for all data written to disk, including databases, log files and backups. This protects data in case of unauthorized access to hardware. TDE provides a TDE Protector that is used to encrypt the Database Encryption Key (DEK), which in turn is used to encrypt the data. With the TDE and Bring Your Own Key (BYOK) offering currently in preview, customers can take control of the TDE Protector in Azure Key Vault.

Taking advantage of TDE with BYOK for databases that are geo-replicated to maintain high availability requires to configure and test the scenario carefully. This post will go over the most common configuration options.

To avoid creating a single point of failure in active geo-replicated instances or SQL failover groups, it is required to configure redundant Azure Key Vaults. Each geo-replicated server requires a separate key vault, that must be co-located with the server in the same Azure region. Should a primary database become inaccessible due to an outage in one region and a failover is triggered, the secondary database is able to take over using the secondary key vault.

For Geo-Replicated Azure SQL databases, the



Support for tags in cost management APIs is now available

The Cloud Cost Management (CCM) APIs provides a rich set of APIs to get detailed reporting on your Azure usage and charges. We continue to make the APIs more relevant and with the growing adoption of tags in Azure, we’re announcing the support for tags in both the Usage Details API and the Budgets API. Our support for tags will continue to improve across all the APIs where a group or filter by tags is applicable. This release only supports tags for subscriptions in Enterprise Agreements (EA), in future releases we plan to support other subscription types as well.

Tags in usage details

The usage details API today supports filters for the following dimensions, date range, resource groups and instances. With the most recent release we will now support tags as well. The support for tags is not retroactive and will only apply to usage reported after the tag was applied to the resource. Tag based filtering and aggregation is supported by the $filter and $apply parameters respectively. We will continue to add additional dimensions that can be used to filter and aggregate costs over time.

Tags in budgets

Budgets can be created at the subscription or a resource group



Announcing Terraform availability in the Azure Marketplace

In addition to Terraform already being integrated to the Azure Cloud Shell, I’m pleased to announce the availability of the new Terraform solution in the Azure Marketplace. This solution will enable teams to use shared identity, using Managed Service Identity (MSI), and shared state using Azure Storage. These features will allow you to use a consistent hosted instance of Terraform for DevOps Automation and production scenarios.

The Terraform solution configures Terraform to use Azure Storage instead of the local file system for Terraform state. This remote state implementation will lock state when one user is changing it, to allow multiple users to consistently change the state of shared environments, such as production.

The template also configures a Managed Service Identity and provides a Role Based Access Control (RBAC) script that will allow this identity to provision resources in the Azure subscription using Terraform. This eliminates the need for managing Service Principal secrets for Terraform separately in automation scenarios such as continuous deployment with Jenkins.

Azure Terraform Provider updates

Development on the Terraform Azure Provider also continues at a furious pace, we passed the 1.0 milestone last December, and version 1.3 has already shipped. As we near complete coverage of



Deploying WordPress Application using Visual Studio Team Services and Azure – Part two

This post is the second part of two blog posts describing how to setup a CI/CD pipeline using Visual Studio Team Services (VSTS) for deploying a Dockerized custom WordPress website working with Azure WebApp for Containers and Azure Database for MySQL. In Deploying WordPress application using Visual Studio Team Services and Azure – part 1 we described how to build a Continuous Integration (CI) process using VSTS, while in this part we are going to focus on the Continuous Delivery (CD) part by using the VSTS Release management.

Prerequisites for this part MySQL client installed on Azure Virtual Machine (apt-get install mysql-client-5.7). Allow the connectivity between the Azure VM machine to Azure Databases for MySQL Installing this VSTS Route Traffic extension Visual Studio Team Services – Release phase

I recommend on saving after completing each of the following steps:

First, we need to create a new empty release definition, go to releases, click on the + icon and choose create release definition, select empty process as the template.

Let’s start by adding artifacts to our pipeline. Click on add in the Artifacts section (step 1), a right blade will be presented, choose the following:

Source type – Build Project



Modernize index maintenance with Resumable Online Index Rebuild

As we know, the index is one of the most powerful tools for optimizing database performance. As you insert, update, and delete rows, indexes become more fragmented and less effective. Because of this, DBAs regularly do index rebuild operations.

With the growing sizes of databases, index rebuilds can take a very long time. Combine that with the business needs for your applications to be always available and performant and this can be an issue. Big OLTP environments with busy workloads often have very short maintenance windows with some too short to execute large index rebuild operations.  

Fit rebuild operations into limited maintenance windows

With ROIR (Resumable Online Index Rebuild), you can configure a rebuild to execute only during a maintenance window of defined length. Previously, if an index operation ran longer than the maintenance window the DBA would have to abort the index operation and run it again from the start later. If an index operation regularly took longer than the desired maintenance window there was no way to work around this. With ROIR, the user can simply define a max duration for the rebuild according to the maintenance window.

ALTER INDEX [ix_CustomerIDs] ON [ContosoSales].[ConstosoTransactionData] REBUILD WITH (ONLINE =