Site icon 4bes.nl

Create an Azure DevOps service connection to Azure with PowerShell

One of the benefits of the Azure DevOps pipeline is it’s direct connection to Azure. This helps with quick deployment and management of an Azure subscription through the Azure DevOps pipeline. If your Azure subscription is in the same tenant as your Azure DevOps account, you can create an Azure DevOps Service connection to Azure in no time, as long as your account has the correct permissions. You just sign in at the service connection page and you’re done. But another option you have is to create a connection manually. This gives more flexibility. In this post, I will show a script that can help you create a Azure DevOps service connection to Azure with PowerShell.

I have written a post about this previously. It shows the step-by-step process to set up the manually connection. If you are new to that process, I recommend to look into that post first, as it helps to learn the process. But I found myself getting lazy and constantly using the same (test) projects as I couldn’t be bothered to create a new connection. So I decided to automate the whole thing.

But why?

There are a few use cases for manually creating a service connection:

What does the script do?

The process of creating a manual connection will be completely automated by using the script. It takes care of the Service principal in Azure. After that a service connection will be created in an Azure DevOps project. You are then able to use the connection to connect to Azure from a pipeline, for example to deploy ARM templates or for Azure PowerShell. I have written about some pipeline options in this post.

To know a little bit more about the Azure DevOps REST API that is used, you could read this post.

Prerequisites

To use this script, there are a few things you need to take care of:

Get the script

There are two ways for you to get the script.

Install from the PowerShell Gallery

I have added the script as a module to the PowerShell gallery for easy access. To download it, use the following commands

Install-Module -Name NewAzDoServiceConnection
Import-Module -Name NewAzDoServiceConnection

Download from GitHub

If you can’t or don’t want to install a module, you can collect the script from the GitHub repository.
To do this, you can clone it, fork it or download it as a zip.

You can find the repo here

Use the script

To use the script, you need to define quite some parameters. I will quickly walk through them:

AzServicePrincipalName

The name the Service Principal in Azure. The script creates this principal. This name has to be unique in your tenant.

AzSubscriptionName

The name of the subscription that the service connection will connect to.
If no Azresourcegroupscope is added, the service principal will get permissions to this subscription.

AzResourceGroupScope

You can optionally define a resource group that the service principal will get permissions for. This way the connection will not get permissions to the complete subscription.

AzRole

The AzRoleDefinition that the Service principal will use, like contributor or owner. If not defined, this will default to Contributor.

AzDoOrganizationName

The organization name in Azure DevOps, so the part that comes directly after https://dev.azure.com/

AzDoProjectName

The project name in Azure DevOps

AzDoConnectionName

The name you choose for your Azure DevOps Connection. This will be how you call the connection in a pipeline.
If left empty, it defaults to the name of the subscription without spaces.

AzDoUserName

The username to use to connect to Azure DevOps

AzDoToken

The PAT token to use to connect to Azure DevOps

Run the cmdlet

So with that information, the complete cmdlet would look like something like this:

Note: This cmdlet can take some time to run, depending on your connections and if you have already imported the AZ module. If you want to be kept up to date on the progress, use the -verbose parameter.

This will create the following:

  • In Azure: a service principal called example with owner permissions to the resourcegroup RG01
  • In Azure DevOps: a connection in the Azure DevOps organization AzDoCompany for project AzureDeployment.

Conclusion

So this is how you can setup a Azure DevOps service connection to Azure with PowerShell. I hope this works well for you. If you have any issues, let me know in the comments or in the GitHub issues.

Exit mobile version