Create Resource Group If Not Exists (AZ Module)

Octopus.AzurePowerShell exported 2020-04-13 by octobob belongs to ‘Azure’ category.

This step uses the new az modules to create a resource group if it doesn’t exist.

Requires Octopus Deploy 2020.1 or later. Requires a worker with the az module installed on it. That module is not bundled with Octopus Deploy.

Parameters

When steps based on the template are included in a project’s deployment process, the parameters below can be set.

Azure Account

CreateResourceGroup.Azure.Account =

The Azure Account with the necessary permissions to create resource groups.

Resource Group Name

CreateResourceGroup.ResourceGroup.Name =

The name of the resource group to create.

The Resource Group Abbreviated Location

CreateResourceGroup.ResourceGroup.Location.Abbr =

The abbreviated resource group location, for example: centralus

Script body

Steps based on this template will execute the following PowerShell script.

$resourceGroupName = $OctopusParameters["CreateResourceGroup.ResourceGroup.Name"]
$resourceGroupLocationAbbr = $OctopusParameters["CreateResourceGroup.ResourceGroup.Location.Abbr"]

$existingResourceGroups = (az group list --query "[?location=='$resourceGroupLocationAbbr']") | ConvertFrom-JSON

$createResourceGroup = $true
foreach ($resourceGroupFound in $existingResourceGroups)
{	
	Write-Host "Checking if current resource group $($resourceGroupFound.name) matches $resourceGroupName"
    if ($resourceGroupFound.name -eq $resourceGroupName)
    {
    	$createResourceGroup = $false
    	Write-Highlight "Resource group already exists, skipping creation"
    	break
    }
}

if ($createResourceGroup)
{
	Write-Host "Creating the $resourceGroupName because it was not found in $resourceGroupLocationAbbr"
	az group create -l $resourceGroupLocationAbbr -n $resourceGroupName
}

Provided under the Apache License version 2.0.

Report an issue

To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.

{
  "Id": "c2b850f7-2d9a-4cda-ab3c-ff3d229eca8e",
  "Name": "Create Resource Group If Not Exists (AZ Module)",
  "Description": "This step uses the new `az` modules to create a resource group if it doesn't exist.  \n\nRequires `Octopus Deploy 2020.1` or later.  Requires a worker with the `az` module installed on it.  That module is not bundled with Octopus Deploy.",
  "Version": 1,
  "ExportedAt": "2020-04-13T15:37:29.866Z",
  "ActionType": "Octopus.AzurePowerShell",
  "Author": "octobob",
  "Packages": [],
  "Parameters": [
    {
      "Id": "b854aba4-4acb-428d-b981-79d1f2f50537",
      "Name": "CreateResourceGroup.Azure.Account",
      "Label": "Azure Account",
      "HelpText": "The Azure Account with the necessary permissions to create resource groups.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "AzureAccount"
      }
    },
    {
      "Id": "c7e43d70-f9ac-43cb-95a8-6a0e75ad40c6",
      "Name": "CreateResourceGroup.ResourceGroup.Name",
      "Label": "Resource Group Name",
      "HelpText": "The name of the resource group to create.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "e1bd7e57-5ad0-445b-9d11-6642acc55b88",
      "Name": "CreateResourceGroup.ResourceGroup.Location.Abbr",
      "Label": "The Resource Group Abbreviated Location",
      "HelpText": "The abbreviated resource group location, for example: centralus",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "Select",
        "Octopus.SelectOptions": "centralus|Americas - Central US\neastus|Americas - East US\neastus2|Americas - East US 2\nnorthcentralus|Americas - North Central US\nsouthcentralus|Americas - South Central US\nwestus|Americas - West US\nwestus2|Americas - West US 2\nwestcentralus|Americas - West Central US\ncanadacentral|Americas - Canada Central\ncanadaeast|Americas - Canada East\nbrazilsouth|Americas - Brazil South\neastasia|Asia Pacific - East Asia\nsoutheastasia|Asia Pacific - Southeast Asia\naustraliacentral|Asia Pacific - Australia Central\naustraliacentral2|Asia Pacific - Australia Central 2\naustraliaeast|Asia Pacific - Australia East\naustraliasoutheast|Asia Pacific - Australia Southeast\nchinaeast|Asia Pacific - China East\nchinaeast2|Asia Pacific - China East 2\nchinanorth|Asia Pacific - China North\nchinanorth2|Asia Pacific - China North 2\ncentralindia|Asia Pacific - Central India\nsouthindia|Asia Pacific - South India\nwestindia|Asia Pacific - West India\njapaneast|Asia Pacific - Japan East\njapanwest|Asia Pacific - Japan West\nkoreacentral|Asia Pacific - Korea Central\nkoreasouth|Asia Pacific - Korea South\nnortheurope|Europe - North Europe\nwesteurope|Europe - West Europe\nfrancecentral|Europe - France Central\nfrancesouth|Europe - France South\ngermanynorth|Europe - Germany North\ngermanywestcentral|Europe - Germany West Central\nnorwayeast|Europe - Norway East\nnorwaywest|Europe - Norway West\nspaincentral|Europe - Spain Central\nswitzerlandnorth|Europe - Switzerland North\nswitzerlandwest|Europe - Switzerland West\nuksouth|Europe - UK South\nukwest|Europe - UK West\nsouthafricanorth|Middle East and Africa - South Africa North\nsouthafricawest|Middle East and Africa - South Africa West\nuaecentral|Middle East and Africa - UAE Central\nuaenorth|Middle East and Africa - UAE North"
      }
    }
  ],
  "Properties": {
    "Octopus.Action.Script.ScriptSource": "Inline",
    "Octopus.Action.Script.Syntax": "PowerShell",
    "OctopusUseBundledTooling": "False",
    "Octopus.Action.Azure.AccountId": "#{CreateResourceGroup.Azure.Account}",
    "Octopus.Action.Script.ScriptBody": "$resourceGroupName = $OctopusParameters[\"CreateResourceGroup.ResourceGroup.Name\"]\n$resourceGroupLocationAbbr = $OctopusParameters[\"CreateResourceGroup.ResourceGroup.Location.Abbr\"]\n\n$existingResourceGroups = (az group list --query \"[?location=='$resourceGroupLocationAbbr']\") | ConvertFrom-JSON\n\n$createResourceGroup = $true\nforeach ($resourceGroupFound in $existingResourceGroups)\n{\t\n\tWrite-Host \"Checking if current resource group $($resourceGroupFound.name) matches $resourceGroupName\"\n    if ($resourceGroupFound.name -eq $resourceGroupName)\n    {\n    \t$createResourceGroup = $false\n    \tWrite-Highlight \"Resource group already exists, skipping creation\"\n    \tbreak\n    }\n}\n\nif ($createResourceGroup)\n{\n\tWrite-Host \"Creating the $resourceGroupName because it was not found in $resourceGroupLocationAbbr\"\n\taz group create -l $resourceGroupLocationAbbr -n $resourceGroupName\n}"
  },
  "Category": "Azure",
  "HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/azure-create-resource-group-az-module.json",
  "Website": "/step-templates/c2b850f7-2d9a-4cda-ab3c-ff3d229eca8e",
  "Logo": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNQTFRF////AHjXf7vrv931QJrh7/f8EIDaIIncMJHfYKvmz+b3n8zw3+76j8Ttr9XycLPpUKLkkKvYFAAABGZJREFUeNrsnNmCqjoQRc1MEiD8/9cer7Yt2KBJZQC8ez07sKlKTQlcLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzoUSnt8YxXlFuGHSbIaxvj+fip4btkLn1blkWLaF5v03yLhLOYlVuGYfMOMZzNGxCOzhjTJqFkXnjq3Dr1yyvPI3hGl3Ih3zzHHNKudRstRhX5O58vIcShY67Gq6EPIESlzUWvazaGAOGbvU7ArDu/g8M4o8opDZWvbvPzlL/MMBE8jT9T9W7PbAJlHPTBFRf9yVTEcs63msXz2UHLSgf650G/d5t+wjbxxB2UCMqGrk8/LFSD7uJMeNt5bcJCyQZyAe5Fo9KYfWS2flQrr4b4tpuzaeWjYs49rt9LHf9uZD7+VbyVi9EBNrjYjuq2sxQOrl+p+HuBVu45qvqfq691ttYFQ5KyKbyJgaIY/NGxrlWZwlwGvmvu1oY3PuAv0niTq6tZ78jk//9uc1r1r4lQki7y7sp2Tu4V1y2iLoqFTqi1lIGcpFiebrZNZ1dOkF0cCIlO8jQ47nCkam9Lilz9GhDF1I6XGLzfnhwDIIZVfI7+8SSgfHsijqXENOGJF5QorG4EcW0OrScqX/dDrXpr70Ut/BII+1OfECPuYz/NWxYmgrCsUskxPvyhgmrw+WGZ6lGTuOlIyCYWTFyWjpM5KIZRUIOwjRNYRQ6tZF9BXtk8hWAHPtLNJ727Fq0JSkC1FDRRF0Jalj0d5qVh2KEpM2TuSsCYTCT6ZkdmFYI9LrYp5QayWbo6NXlZwcRD/61pth5Fq5EX423QQxNjhqWvvklkljOLkYjrmphXPZOJOk6Pg7HKMsrtQKcowzZoK3rx1ZUelGMdQA/HaKkjAt2RgqpZeYqbNbH7Hp2ct4nqfSPOfe0ftiSTZJydOV6rG5bQbyLK+nRuCC0343PzDgiOXyQA5c14BTZi98uR/5KJ1SnatLdoO50WWBQZPTq0VgsklU3h932actuo17ayrHrb/3ykiegd3KbqF2wbV6RrlsJ07yLcpsWFTul9RyK6ZScr+tk7oNrFj0o7HQUlj4EiEvJ6rPLKSmlMZCrksl1OnLaRkxc+/HB1naMhNtT/6yM2bDs6azCRHrM3aVPN7aW8irD/10B8njpAMcsl8okXcdKrl4sPsLmQVy/Sj90ucPRc/d/Bxxj+dXSpCayen32D+hLi16MsIV8gfCXrYp6ySsiJKRUF0XXiLpVbFU+fNv4r7mOwhFsX4ZdwpSi1DYs2jb6ebZ9788cblTzMrYhu7sf/17IFdtuviJ2ioHA6pMHkoH4CLUeMBU7iGkxuM/YgcdderF9ibRdc7O982F1HpYhjfWUe+x5a6pjop9iNLfoePvlsdZdTSMwfxSmTY20Q0eHnUNzga1edeNmmqbg18aMVR1L9vwSXHF9TfIWBxpKLs2hj3eQeBC0USvp2HHF3eIkRdhFOd6ER8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/I/4J8AAo/80BciBec4AAAAASUVORK5CYII=",
  "$Meta": {
    "Type": "ActionTemplate"
  }
}

History

Page updated on Monday, April 13, 2020