From 4f0acdf47bca92fd3af697f7d948d7f8c386dff9 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 10:17:38 +0100 Subject: [PATCH 01/36] First commit --- .../routeTables/.parameters/parameters.json | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/arm/Microsoft.Network/routeTables/.parameters/parameters.json b/arm/Microsoft.Network/routeTables/.parameters/parameters.json index edd5dba921..b4e4f25185 100644 --- a/arm/Microsoft.Network/routeTables/.parameters/parameters.json +++ b/arm/Microsoft.Network/routeTables/.parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "<>-az-udr-x-001" + "value": "sxx-az-udr-x-001" }, "routes": { "value": [ @@ -16,16 +16,6 @@ } } ] - }, - "roleAssignments": { - "value": [ - { - "roleDefinitionIdOrName": "Reader", - "principalIds": [ - "<>" - ] - } - ] } } } From 6574b0b0222fd6592aab16521eed4b5dfa4e2b58 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 10:29:11 +0100 Subject: [PATCH 02/36] Updated interface --- utilities/tools/Test-ModuleLocally.ps1 | 46 +++++++++++++++----------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 80f4ab52a0..891645c4ca 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -1,35 +1,38 @@  <# .SYNOPSIS -This Function Helps with Testing A Module Locally +This function helps with testing a module locally .DESCRIPTION -This Function Helps with Testing A Module Locally. Use this Function To perform Pester Testing for a Module and then attempting to deploy it. It Also allows you to use your own -subscription Id, Principal Id, tenant ID and other parameters that need to be tokenized. +This function helps with testing a module locally. Use this function To perform Pester testing for a module and then attempting to deploy it. It also allows you to use your own +subscription Id, principal Id, tenant ID and other parameters that need to be tokenized. .PARAMETER templateFilePath Mandatory. Path to the Bicep/ARM module that is being tested +.PARAMETER parameterFilePath +Optional. Path to the template file/folder that is to be tested with the template file. Mandatory if the DeploymentTest/ValidationTest switches are set. + .PARAMETER PesterTest -Optional. A Switch Parameter that triggers a Pester Test for the Module +Optional. A switch parameter that triggers a Pester test for the module .PARAMETER ValidateOrDeployParameters -An Object consisting of the components that are required when using the Validate Test or DeploymentTest Switch parameter. See example: +Mandatory. An object consisting of the components that are required when using the Validate test or DeploymentTest switch parameter. See example: .PARAMETER DeploymentTest -Optional. A Switch Parameter that triggers the Deployment of the Module +Optional. A switch parameter that triggers the deployment of the module .PARAMETER ValidationTest -Optional. A Switch Parameter that triggers the Validation of the Module Only without Deployment +Optional. A switch parameter that triggers the validation of the module only without deployment -.PARAMETER DeployAllModuleParameterFiles -Optional. A Boolean Parameter that enables directory based search for parameter files and deploys all of them. If not true, it will only deploy the 'parameters.json' file. Default is false. +.PARAMETER DeployAllmoduleParameterFiles +Optional. A boolean parameter that enables directory based search for parameter files and deploys all of them. If not true, it will only deploy the 'parameters.json' file. Default is false. .PARAMETER SkipParameterFileTokens -Optional. A Switch Parameter that enables you to skip the search for local custom parameter file tokens. +Optional. A switch parameter that enables you to skip the search for local custom parameter file tokens. .PARAMETER AdditionalTokens -Optional. A Hashtable Parameter that contains custom tokens to be replaced in the paramter files for deployment +Optional. A hashtable parameter that contains custom tokens to be replaced in the paramter files for deployment .EXAMPLE @@ -84,28 +87,31 @@ function Test-ModuleLocally { [CmdletBinding()] param ( [parameter(Mandatory)] - [string]$templateFilePath, + [string] $templateFilePath, + + [parameter(Mandatory = $false)] + [string] $parameterFilePath, [parameter(Mandatory = $false)] - [switch]$PesterTest, + [switch] $PesterTest, [parameter(Mandatory)] - [psobject]$ValidateOrDeployParameters, + [psobject] $ValidateOrDeployParameters, [parameter(Mandatory = $false)] - [switch]$DeploymentTest, + [switch] $DeploymentTest, [parameter(Mandatory = $false)] - [switch]$ValidationTest, + [switch] $ValidationTest, [parameter(Mandatory = $false)] - [bool]$DeployAllModuleParameterFiles = $false, + [bool] $DeployAllModuleParameterFiles = $false, [parameter(Mandatory = $false)] - [switch]$SkipParameterFileTokens, + [switch] $SkipParameterFileTokens, [parameter(Mandatory = $false)] - [psobject]$AdditionalTokens + [psobject] $AdditionalTokens ) begin { @@ -152,7 +158,7 @@ function Test-ModuleLocally { $DefaultParameterFileTokens = @( @{ Name = 'subscriptionId'; Value = "$($ValidateOrDeployParameters.SubscriptionId)" } @{ Name = 'managementGroupId'; Value = "$($ValidateOrDeployParameters.ManagementGroupId)" } - ) | ForEach-Object { [PSCustomObject]$PSItem } + ) | ForEach-Object { [PSCustomObject] $PSItem } # Look for Local Custom Parameter File Tokens (Source Control) if (-not $SkipParameterFileTokens) { From 9fd3f167a24eb11ca17d0b885de0b5bf535315f9 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 11:28:29 +0100 Subject: [PATCH 03/36] Refactored file logic --- utilities/tools/Test-ModuleLocally.ps1 | 154 ++++++++++++++----------- 1 file changed, 87 insertions(+), 67 deletions(-) diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 891645c4ca..31e661a6e0 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -25,9 +25,6 @@ Optional. A switch parameter that triggers the deployment of the module .PARAMETER ValidationTest Optional. A switch parameter that triggers the validation of the module only without deployment -.PARAMETER DeployAllmoduleParameterFiles -Optional. A boolean parameter that enables directory based search for parameter files and deploys all of them. If not true, it will only deploy the 'parameters.json' file. Default is false. - .PARAMETER SkipParameterFileTokens Optional. A switch parameter that enables you to skip the search for local custom parameter file tokens. @@ -68,7 +65,6 @@ $TestModuleLocallyInput = @{ SubscriptionId = '12345678-1234-1234-1234-123456789123' ManagementGroupId = 'mg-contoso' } - DeployAllModuleParameterFiles = $true GetParameterFileTokens = $true AdditionalTokens = @( @{ Name = 'deploymentSpId'; Value = '12345678-1234-1234-1234-123456789123' } @@ -84,33 +80,28 @@ Test-ModuleLocally @TestModuleLocallyInput -Verbose #> function Test-ModuleLocally { - [CmdletBinding()] + + [CmdletBinding(SupportsShouldProcess)] param ( - [parameter(Mandatory)] + [Parameter(Mandatory)] [string] $templateFilePath, - [parameter(Mandatory = $false)] - [string] $parameterFilePath, + [Parameter(Mandatory = $false)] + [string] $parameterFilePath = (Join-Path (Split-Path $templateFilePath -Parent) '.parameters'), - [parameter(Mandatory = $false)] - [switch] $PesterTest, + [Parameter(Mandatory)] + [Psobject] $ValidateOrDeployParameters, - [parameter(Mandatory)] - [psobject] $ValidateOrDeployParameters, + [Parameter(Mandatory = $false)] + [switch] $PesterTest, - [parameter(Mandatory = $false)] + [Parameter(Mandatory = $false)] [switch] $DeploymentTest, - [parameter(Mandatory = $false)] + [Parameter(Mandatory = $false)] [switch] $ValidationTest, - [parameter(Mandatory = $false)] - [bool] $DeployAllModuleParameterFiles = $false, - - [parameter(Mandatory = $false)] - [switch] $SkipParameterFileTokens, - - [parameter(Mandatory = $false)] + [Parameter(Mandatory = $false)] [psobject] $AdditionalTokens ) @@ -124,7 +115,10 @@ function Test-ModuleLocally { . (Join-Path $PSScriptRoot '../pipelines/resourceValidation/Test-TemplateWithParameterFile.ps1') } process { - # Test Module + + ################ + # PESTER Tests # + ################ if ($PesterTest) { Write-Verbose "Pester Testing Module: $ModuleName" try { @@ -150,80 +144,106 @@ function Test-ModuleLocally { $PSItem.Exception.Message } } - # Deploy Module + + ################################# + # Validation & Deployment tests # + ################################# if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters) { + # Find Test Parameter Files - $ModuleParameterFiles = Get-ChildItem -Path (Join-Path (Split-Path $templateFilePath -Parent) '.parameters') -Recurse - # Replace Tokens with Values For Local Testing - $DefaultParameterFileTokens = @( - @{ Name = 'subscriptionId'; Value = "$($ValidateOrDeployParameters.SubscriptionId)" } - @{ Name = 'managementGroupId'; Value = "$($ValidateOrDeployParameters.ManagementGroupId)" } - ) | ForEach-Object { [PSCustomObject] $PSItem } - - # Look for Local Custom Parameter File Tokens (Source Control) - if (-not $SkipParameterFileTokens) { - # Get Settings JSON File - $Settings = Get-Content -Path (Join-Path $PSScriptRoot '../..' 'settings.json') | ConvertFrom-Json - # Get Custom Parameter File Tokens (Local) - $ConvertTokensInputs = @{ - DefaultParameterFileTokens = $DefaultParameterFileTokens + # ------------------------- + if ((Get-Item -Path $parameterFilePath) -is [System.IO.DirectoryInfo]) { + $ModuleParameterFiles = Get-ChildItem -Path $parameterFilePath + } else { + $ModuleParameterFiles = @($templateFilePath) + } + + # Replace parameter file tokens + # ----------------------------- + + # Default Tokens + $ConvertTokensInputs = @{ + DefaultParameterFileTokens = @( + @{ Name = 'subscriptionId'; Value = $ValidateOrDeployParameters.SubscriptionId } + @{ Name = 'managementGroupId'; Value = $ValidateOrDeployParameters.ManagementGroupId } + ) + } + + # Tokens in settings.json + $settingsFilePath = Join-Path $PSScriptRoot '../..' 'settings.json' + if (Test-Path $settingsFilePath) { + $Settings = Get-Content -Path $settingsFilePath -Raw | ConvertFrom-Json + $ConvertTokensInputs += @{ LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } - #Add Other Parameter File Tokens (For Testing) - if ($AdditionalTokens) { - $ConvertTokensInputs += @{ OtherCustomParameterFileTokens = $AdditionalTokens - } + } + + #Add Other Parameter File Tokens (For Testing) + if ($AdditionalTokens) { + $ConvertTokensInputs += @{ + OtherCustomParameterFileTokens = $AdditionalTokens } } + + # Invoke Token Replacement Functionality and Convert Tokens in Parameter Files $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $PSItem.FullName } - # Build Modules Validation and Deployment Inputs + + + # Deployment & Validation Testing + # ------------------------------- $functionInput = @{ templateFilePath = $templateFilePath - parameterFilePath = (Join-Path (Split-Path $templateFilePath -Parent) '.parameters/parameters.json') location = "$($ValidateOrDeployParameters.Location)" resourceGroupName = "$($ValidateOrDeployParameters.ResourceGroupName)" subscriptionId = "$($ValidateOrDeployParameters.SubscriptionId)" managementGroupId = "$($ValidateOrDeployParameters.ManagementGroupId)" + Verbose = $true } try { - # Validate Template + # Validate template + # ----------------- if ($ValidationTest) { - Write-Verbose "Validating Module: $ModuleName" - # Invoke Validation - Test-TemplateWithParameterFile @functionInput -Verbose + # Loop through test parameter files + foreach ($paramFilePath in $moduleParameterFiles) { + Write-Verbose 'Validating module [{0}] with parameter file [{1}]' -f $ModuleName, (Split-Path $paramFilePath -Leaf) + Test-TemplateWithParameterFile @functionInput -TemplateParameterFile $parameterFilePath + } } - # Deploy Template + + + # Deploy template + # --------------- if ($DeploymentTest) { - Write-Verbose "Deploying Module: $ModuleName" - # Set the ParameterFilePath to Directory instead of the default 'parameters.json' - if ($DeployAllModuleParameterFiles) { - $functionInput.parameterFilePath = (Join-Path (Split-Path $templateFilePath -Parent) $ModuleName '.parameters') - } - # Append to Function Input the required parameters for Deployment - $functionInput += @{ - retryLimit = 1 + $functionInput['retryLimit'] = 1 # Overwrite default of 3 + # Loop through test parameter files + foreach ($paramFilePath in $moduleParameterFiles) { + Write-Verbose 'Deploy module [{0}] with parameter file [{1}]' -f $ModuleName, (Split-Path $paramFilePath -Leaf) + if ($PSCmdlet.ShouldProcess(('Module [{0}] with parameter file [{1}]' -f $ModuleName, (Split-Path $paramFilePath -Leaf)), 'Deploy')) { + New-ModuleDeployment @functionInput -TemplateParameterFile $parameterFilePath + } } - # Invoke Deployment - New-ModuleDeployment @functionInput -Verbose } } catch { Write-Error $PSItem.Exception # Replace Values with Tokens For Repo Updates and Set Restore Flag to True to Prevent Running Restore Twice - $RestoreAlreadyTriggered = $true - Write-Verbose 'Restoring Tokens' - $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $PSItem.FullName -SwapValueWithName $true } + # $RestoreAlreadyTriggered = $true + # Write-Verbose 'Restoring Tokens' + # $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $PSItem.FullName -SwapValueWithName $true } + } finally { + + # Restore parameter files + # ----------------------- + if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters -and !($RestoreAlreadyTriggered)) { + # Replace Values with Tokens For Repo Updates + Write-Verbose 'Restoring Tokens' + $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $PSItem.FullName -SwapValueWithName $true } + } } } } end { - # Restore Parameter Files - if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters -and !($RestoreAlreadyTriggered)) { - # Replace Values with Tokens For Repo Updates - Write-Verbose 'Restoring Tokens' - $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $PSItem.FullName -SwapValueWithName $true } - } } } From e02f58a3526bdafcb0721d4fcb237f4d9247f04b Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 12:25:21 +0100 Subject: [PATCH 04/36] Further refactoring --- settings.json | 6 +-- .../Convert-TokensInParameterFile.ps1 | 44 +++++++------------ utilities/tools/Test-ModuleLocally.ps1 | 37 ++++++++-------- 3 files changed, 35 insertions(+), 52 deletions(-) diff --git a/settings.json b/settings.json index 6f05750ecd..ece16b5dda 100644 --- a/settings.json +++ b/settings.json @@ -5,11 +5,7 @@ "localTokens": { "tokens": [ { - "name": "namePrefix", - "value": "sxx", - "metadata": { - "description": "A 3-5 character length string, included in the resources names" - } + "namePrefix": "sxx" // A 3-5 character length string, included in the resources names } ] } diff --git a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 index 83399d51e5..ab4ac57c27 100644 --- a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 +++ b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 @@ -43,56 +43,44 @@ function Convert-TokensInParameterFile { [CmdletBinding()] param ( [parameter(Mandatory = $true)] - [string]$ParameterFilePath, + [string] $ParameterFilePath, [parameter(Mandatory = $false)] - [psobject]$DefaultParameterFileTokens, - - [parameter(Mandatory = $false)] - [psobject]$LocalCustomParameterFileTokens, + [hashtable] $ParameterFileTokens = @(), [parameter(Mandatory = $true)] - [string]$TokenPrefix, + [string] $TokenPrefix, [parameter(Mandatory = $true)] - [string]$TokenSuffix, - - [parameter(Mandatory = $false)] - [psobject]$OtherCustomParameterFileTokens, + [string] $TokenSuffix, [parameter(Mandatory = $false)] - [bool]$SwapValueWithName = $false, + [bool] $SwapValueWithName = $false, [parameter(Mandatory = $false)] - [string]$OutputDirectory + [string] $OutputDirectory ) begin { # Load used funtions . (Join-Path $PSScriptRoot './helper/Convert-TokenInFile.ps1') - $AllCustomParameterFileTokens = @() } process { - Write-Verbose "Default Tokens Count: ($($DefaultParameterFileTokens.Count)) Tokens (From Input Parameter)" - ## Get Local Custom Parameter File Tokens (Should not Contain Sensitive Information) - Write-Verbose "Local Custom Tokens Count: ($($LocalCustomParameterFileTokens.Count)) Tokens (From Settings File)" - $AllCustomParameterFileTokens += ($LocalCustomParameterFileTokens | Select-Object -Property Name, Value) + Write-Verbose ('Using [{0}] tokens' -f $ParameterFileTokens) + # Combine All Input Token Types, Remove Duplicates and Only Select Name, Value if they contain other unrequired properties - $AllCustomParameterFileTokens = $DefaultParameterFileTokens + $LocalCustomParameterFileTokens | - ForEach-Object { [PSCustomObject]$PSItem } | + $ParameterFileTokens = $ParameterFileTokens | + ForEach-Object { [PSCustomObject] $PSItem } | Sort-Object Name -Unique | Select-Object -Property Name, Value | - Where-Object { $null -ne $PSitem.Name -and $null -ne $PSitem.Value } + Where-Object { $null -ne $PSitem.Name -and $null -ne $PSitem.Value + } - # Other Custom Parameter File Tokens (Can be used for testing) - if ($OtherCustomParameterFileTokens) { - $AllCustomParameterFileTokens += $OtherCustomParameterFileTokens | ForEach-Object { [PSCustomObject]$PSItem } - } - Write-Verbose ("All Parameter File Tokens Count: ($($AllCustomParameterFileTokens.Count))") + Write-Verbose ("All Parameter File Tokens Count: ($($ParameterFileTokens.Count))") # Apply Prefix and Suffix to Tokens and Prepare Object for Conversion Write-Verbose ("Applying Token Prefix '$TokenPrefix' and Token Suffix '$TokenSuffix'") - foreach ($ParameterFileToken in $AllCustomParameterFileTokens) { + foreach ($ParameterFileToken in $ParameterFileTokens) { $ParameterFileToken.Name = -join ($TokenPrefix, $ParameterFileToken.Name, $TokenSuffix) } # Convert Tokens in Parameter Files @@ -100,7 +88,7 @@ function Convert-TokensInParameterFile { # Prepare Input to Token Converter Function $ConvertTokenListFunctionInput = @{ FilePath = $ParameterFilePath - TokenNameValueObject = $AllCustomParameterFileTokens + TokenNameValueObject = $ParameterFileTokens SwapValueWithName = $SwapValueWithName } if ($OutputDirectory) { @@ -116,6 +104,6 @@ function Convert-TokensInParameterFile { } end { Write-Verbose "Token Replacement Status: $ConversionStatus" - return [bool]$ConversionStatus + return [bool] $ConversionStatus } } diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 31e661a6e0..29a744fed2 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -93,16 +93,16 @@ function Test-ModuleLocally { [Psobject] $ValidateOrDeployParameters, [Parameter(Mandatory = $false)] - [switch] $PesterTest, + [hashtable] $AdditionalTokens = @{}, [Parameter(Mandatory = $false)] - [switch] $DeploymentTest, + [switch] $PesterTest, [Parameter(Mandatory = $false)] - [switch] $ValidationTest, + [switch] $DeploymentTest, [Parameter(Mandatory = $false)] - [psobject] $AdditionalTokens + [switch] $ValidationTest ) begin { @@ -163,10 +163,15 @@ function Test-ModuleLocally { # Default Tokens $ConvertTokensInputs = @{ - DefaultParameterFileTokens = @( - @{ Name = 'subscriptionId'; Value = $ValidateOrDeployParameters.SubscriptionId } - @{ Name = 'managementGroupId'; Value = $ValidateOrDeployParameters.ManagementGroupId } - ) + ParameterFileTokens = @{ + subscriptionId = $ValidateOrDeployParameters.SubscriptionId + managementGroupId = $ValidateOrDeployParameters.ManagementGroupId + } + } + + #Add Other Parameter File Tokens (For Testing) + if ($AdditionalTokens) { + $ConvertTokensInputs.ParameterFileTokens += $AdditionalTokens } # Tokens in settings.json @@ -174,23 +179,17 @@ function Test-ModuleLocally { if (Test-Path $settingsFilePath) { $Settings = Get-Content -Path $settingsFilePath -Raw | ConvertFrom-Json $ConvertTokensInputs += @{ - LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } - } - #Add Other Parameter File Tokens (For Testing) - if ($AdditionalTokens) { - $ConvertTokensInputs += @{ - OtherCustomParameterFileTokens = $AdditionalTokens + if ($settings.localTokens) { + $ConvertTokensInputs.ParameterFileTokens += $settings.localTokens } } - # Invoke Token Replacement Functionality and Convert Tokens in Parameter Files - $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $PSItem.FullName } - + $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $_.FullName } # Deployment & Validation Testing # ------------------------------- From b1c39551337ffe1b657ab8ea1c3f2e6b4e1f719e Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 12:54:57 +0100 Subject: [PATCH 05/36] Continued iteration --- .../Convert-TokensInParameterFile.ps1 | 22 +++++++++---------- utilities/tools/Test-ModuleLocally.ps1 | 18 +++++++-------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 index ab4ac57c27..9af9cdf778 100644 --- a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 +++ b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 @@ -67,21 +67,21 @@ function Convert-TokensInParameterFile { } process { - Write-Verbose ('Using [{0}] tokens' -f $ParameterFileTokens) - - # Combine All Input Token Types, Remove Duplicates and Only Select Name, Value if they contain other unrequired properties - $ParameterFileTokens = $ParameterFileTokens | - ForEach-Object { [PSCustomObject] $PSItem } | - Sort-Object Name -Unique | - Select-Object -Property Name, Value | - Where-Object { $null -ne $PSitem.Name -and $null -ne $PSitem.Value + # Combine All Input Token Types, Remove Duplicates and Only Select entries with on empty values + $ParameterFileTokens = $ParameterFileTokens | Sort-Object -Unique + @($ParameterFileTokens.Keys) | ForEach-Object { + if ([String]::IsNullOrEmpty($ParameterFileTokens[$_])) { + $ParameterFileTokens.Remove($_) } + } + Write-Verbose ('Using [{0}] tokens' -f $ParameterFileTokens) - Write-Verbose ("All Parameter File Tokens Count: ($($ParameterFileTokens.Count))") # Apply Prefix and Suffix to Tokens and Prepare Object for Conversion Write-Verbose ("Applying Token Prefix '$TokenPrefix' and Token Suffix '$TokenSuffix'") - foreach ($ParameterFileToken in $ParameterFileTokens) { - $ParameterFileToken.Name = -join ($TokenPrefix, $ParameterFileToken.Name, $TokenSuffix) + foreach ($ParameterFileTokenName in @($ParameterFileTokens.Keys)) { + $newKey = -join ($TokenPrefix, $ParameterFileTokenName, $TokenSuffix) + $ParameterFileTokens[$newKey] = $ParameterFileTokens[$ParameterFileTokenName] # Add formatted entry + $ParameterFileTokens.Remove($ParameterFileTokenName) # Replace original } # Convert Tokens in Parameter Files try { diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 29a744fed2..5f05ca4060 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -153,7 +153,7 @@ function Test-ModuleLocally { # Find Test Parameter Files # ------------------------- if ((Get-Item -Path $parameterFilePath) -is [System.IO.DirectoryInfo]) { - $ModuleParameterFiles = Get-ChildItem -Path $parameterFilePath + $ModuleParameterFiles = (Get-ChildItem -Path $parameterFilePath).FullName } else { $ModuleParameterFiles = @($templateFilePath) } @@ -189,16 +189,16 @@ function Test-ModuleLocally { } # Invoke Token Replacement Functionality and Convert Tokens in Parameter Files - $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $_.FullName } + $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $_ } # Deployment & Validation Testing # ------------------------------- $functionInput = @{ templateFilePath = $templateFilePath - location = "$($ValidateOrDeployParameters.Location)" - resourceGroupName = "$($ValidateOrDeployParameters.ResourceGroupName)" - subscriptionId = "$($ValidateOrDeployParameters.SubscriptionId)" - managementGroupId = "$($ValidateOrDeployParameters.ManagementGroupId)" + location = $ValidateOrDeployParameters.Location + resourceGroupName = $ValidateOrDeployParameters.ResourceGroupName + subscriptionId = $ValidateOrDeployParameters.SubscriptionId + managementGroupId = $ValidateOrDeployParameters.ManagementGroupId Verbose = $true } try { @@ -230,15 +230,15 @@ function Test-ModuleLocally { # Replace Values with Tokens For Repo Updates and Set Restore Flag to True to Prevent Running Restore Twice # $RestoreAlreadyTriggered = $true # Write-Verbose 'Restoring Tokens' - # $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $PSItem.FullName -SwapValueWithName $true } + # $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $_ -SwapValueWithName $true } } finally { # Restore parameter files # ----------------------- - if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters -and !($RestoreAlreadyTriggered)) { + if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters -and -not $RestoreAlreadyTriggered) { # Replace Values with Tokens For Repo Updates Write-Verbose 'Restoring Tokens' - $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $PSItem.FullName -SwapValueWithName $true } + $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $_ -SwapValueWithName $true } } } } From c6115e8c97569e2e7f4fedc6ddfe1a269dae24c9 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 12:59:40 +0100 Subject: [PATCH 06/36] Update to latest --- .../helper/Convert-TokenInFile.ps1 | 22 +++++++++---------- utilities/tools/Test-ModuleLocally.ps1 | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/utilities/pipelines/tokensReplacement/helper/Convert-TokenInFile.ps1 b/utilities/pipelines/tokensReplacement/helper/Convert-TokenInFile.ps1 index 53689d407d..5fe1e313bc 100644 --- a/utilities/pipelines/tokensReplacement/helper/Convert-TokenInFile.ps1 +++ b/utilities/pipelines/tokensReplacement/helper/Convert-TokenInFile.ps1 @@ -53,10 +53,11 @@ function Convert-TokenInFile { # Swap Value with Name instead if ($SwapValueWithName) { Write-Verbose "Swapping 'Value' with 'Name'" - $TokenNameValueObject | ForEach-Object { - $Name = $PSitem.Value - $Value = $PSItem.Name - $PSitem.Name = $Name; $PSitem.Value = $Value + @($TokenNameValueObject.Keys) | ForEach-Object { + $newKey = $TokenNameValueObject[$_] + $TokenNameValueObject[$newKey] = $_ # Add swapped entry + $TokenNameValueObject.Remove($_) # Remove original + } } # Begin the Replace Function @@ -71,14 +72,13 @@ function Convert-TokenInFile { } Write-Verbose "Processing Tokens for file: $FileName" # Perform the Replace of Tokens in the File - $TokenNameValueObject | - ForEach-Object { - # If type is secure string - if (($PSItem.Value | Get-Member -MemberType Property | Select-Object -ExpandProperty 'TypeName') -eq 'System.Security.SecureString') { - $PSItem.Value = $PSItem.Value | ConvertFrom-SecureString -AsPlainText - } - $File = $File -replace $PSItem.Name, $PSItem.Value + $TokenNameValueObject.Keys | ForEach-Object { + # If type is secure string + if ($TokenNameValueObject[$_] -is [System.Security.SecureString]) { + $TokenNameValueObject[$_] = $TokenNameValueObject[$_] | ConvertFrom-SecureString -AsPlainText } + $File = $File -replace $_, $TokenNameValueObject[$_] + } # Set Content if ($OutputDirectory -and (Test-Path -Path $OutputDirectory -PathType Container)) { # If Specific Output Directory Provided diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 5f05ca4060..e0e7c109c5 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -155,7 +155,7 @@ function Test-ModuleLocally { if ((Get-Item -Path $parameterFilePath) -is [System.IO.DirectoryInfo]) { $ModuleParameterFiles = (Get-ChildItem -Path $parameterFilePath).FullName } else { - $ModuleParameterFiles = @($templateFilePath) + $ModuleParameterFiles = @($parameterFilePath) } # Replace parameter file tokens From bf8d64321b8209d946d60cbc6128acba36cb39a0 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 14:32:57 +0100 Subject: [PATCH 07/36] Futher updated structure --- .../routeTables/.parameters/parameters.json | 2 +- settings.json | 6 +----- .../Convert-TokensInParameterFile.ps1 | 18 +++++++++--------- .../helper/Convert-TokenInFile.ps1 | 1 - utilities/tools/Test-ModuleLocally.ps1 | 14 +++++++------- 5 files changed, 18 insertions(+), 23 deletions(-) diff --git a/arm/Microsoft.Network/routeTables/.parameters/parameters.json b/arm/Microsoft.Network/routeTables/.parameters/parameters.json index b4e4f25185..1a794ed96c 100644 --- a/arm/Microsoft.Network/routeTables/.parameters/parameters.json +++ b/arm/Microsoft.Network/routeTables/.parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "sxx-az-udr-x-001" + "value": "<>-az-udr-x-001" }, "routes": { "value": [ diff --git a/settings.json b/settings.json index ece16b5dda..c02181681c 100644 --- a/settings.json +++ b/settings.json @@ -3,11 +3,7 @@ "tokenPrefix": "<<", "tokenSuffix": ">>", "localTokens": { - "tokens": [ - { - "namePrefix": "sxx" // A 3-5 character length string, included in the resources names - } - ] + "namePrefix": "sxx" // A 3-5 character length string, included in the resources names } } } diff --git a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 index 9af9cdf778..73cae2dd02 100644 --- a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 +++ b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 @@ -68,27 +68,27 @@ function Convert-TokensInParameterFile { process { # Combine All Input Token Types, Remove Duplicates and Only Select entries with on empty values - $ParameterFileTokens = $ParameterFileTokens | Sort-Object -Unique - @($ParameterFileTokens.Keys) | ForEach-Object { - if ([String]::IsNullOrEmpty($ParameterFileTokens[$_])) { - $ParameterFileTokens.Remove($_) + $FilteredParameterFileTokens = ($ParameterFileTokens | Sort-Object -Unique).Clone() + @($FilteredParameterFileTokens.Keys) | ForEach-Object { + if ([String]::IsNullOrEmpty($FilteredParameterFileTokens[$_])) { + $FilteredParameterFileTokens.Remove($_) } } - Write-Verbose ('Using [{0}] tokens' -f $ParameterFileTokens) + Write-Verbose ('Using [{0}] tokens' -f $FilteredParameterFileTokens.Keys.Count) # Apply Prefix and Suffix to Tokens and Prepare Object for Conversion Write-Verbose ("Applying Token Prefix '$TokenPrefix' and Token Suffix '$TokenSuffix'") - foreach ($ParameterFileTokenName in @($ParameterFileTokens.Keys)) { + foreach ($ParameterFileTokenName in @($FilteredParameterFileTokens.Keys)) { $newKey = -join ($TokenPrefix, $ParameterFileTokenName, $TokenSuffix) - $ParameterFileTokens[$newKey] = $ParameterFileTokens[$ParameterFileTokenName] # Add formatted entry - $ParameterFileTokens.Remove($ParameterFileTokenName) # Replace original + $FilteredParameterFileTokens[$newKey] = $FilteredParameterFileTokens[$ParameterFileTokenName] # Add formatted entry + $FilteredParameterFileTokens.Remove($ParameterFileTokenName) # Replace original } # Convert Tokens in Parameter Files try { # Prepare Input to Token Converter Function $ConvertTokenListFunctionInput = @{ FilePath = $ParameterFilePath - TokenNameValueObject = $ParameterFileTokens + TokenNameValueObject = $FilteredParameterFileTokens SwapValueWithName = $SwapValueWithName } if ($OutputDirectory) { diff --git a/utilities/pipelines/tokensReplacement/helper/Convert-TokenInFile.ps1 b/utilities/pipelines/tokensReplacement/helper/Convert-TokenInFile.ps1 index 5fe1e313bc..bb7be0eb72 100644 --- a/utilities/pipelines/tokensReplacement/helper/Convert-TokenInFile.ps1 +++ b/utilities/pipelines/tokensReplacement/helper/Convert-TokenInFile.ps1 @@ -57,7 +57,6 @@ function Convert-TokenInFile { $newKey = $TokenNameValueObject[$_] $TokenNameValueObject[$newKey] = $_ # Add swapped entry $TokenNameValueObject.Remove($_) # Remove original - } } # Begin the Replace Function diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index e0e7c109c5..91b94bd4f7 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -177,14 +177,14 @@ function Test-ModuleLocally { # Tokens in settings.json $settingsFilePath = Join-Path $PSScriptRoot '../..' 'settings.json' if (Test-Path $settingsFilePath) { - $Settings = Get-Content -Path $settingsFilePath -Raw | ConvertFrom-Json + $Settings = Get-Content -Path $settingsFilePath -Raw | ConvertFrom-Json -AsHashtable $ConvertTokensInputs += @{ TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } - if ($settings.localTokens) { - $ConvertTokensInputs.ParameterFileTokens += $settings.localTokens + if ( $Settings.parameterFileTokens.localTokens) { + $ConvertTokensInputs.ParameterFileTokens += $Settings.parameterFileTokens.localTokens } } @@ -207,8 +207,8 @@ function Test-ModuleLocally { if ($ValidationTest) { # Loop through test parameter files foreach ($paramFilePath in $moduleParameterFiles) { - Write-Verbose 'Validating module [{0}] with parameter file [{1}]' -f $ModuleName, (Split-Path $paramFilePath -Leaf) - Test-TemplateWithParameterFile @functionInput -TemplateParameterFile $parameterFilePath + Write-Verbose ('Validating module [{0}] with parameter file [{1}]' -f $ModuleName, (Split-Path $paramFilePath -Leaf)) -Verbose + Test-TemplateWithParameterFile @functionInput -ParameterFilePath $parameterFilePath } } @@ -219,9 +219,9 @@ function Test-ModuleLocally { $functionInput['retryLimit'] = 1 # Overwrite default of 3 # Loop through test parameter files foreach ($paramFilePath in $moduleParameterFiles) { - Write-Verbose 'Deploy module [{0}] with parameter file [{1}]' -f $ModuleName, (Split-Path $paramFilePath -Leaf) + Write-Verbose ('Deploy module [{0}] with parameter file [{1}]' -f $ModuleName, (Split-Path $paramFilePath -Leaf)) -Verbose if ($PSCmdlet.ShouldProcess(('Module [{0}] with parameter file [{1}]' -f $ModuleName, (Split-Path $paramFilePath -Leaf)), 'Deploy')) { - New-ModuleDeployment @functionInput -TemplateParameterFile $parameterFilePath + New-ModuleDeployment @functionInput -ParameterFilePath $parameterFilePath } } } From 8393dbda74b44df818c54a439a26a21f839e7a34 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 15:13:14 +0100 Subject: [PATCH 08/36] Updated pipelines --- .../jobs.validateModuleDeployment.yml | 41 ++++++++++--------- .../validateModuleDeployment/action.yml | 40 ++++++++++-------- utilities/tools/Test-ModuleLocally.ps1 | 2 +- 3 files changed, 45 insertions(+), 38 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 66901fb038..607002896f 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -167,28 +167,31 @@ jobs: # Load Settings File $Settings = Get-Content -Path (Join-Path '$(moduleRepoRoot)' 'settings.json') | ConvertFrom-Json - # Initialize Default Parameter File Tokens - $DefaultParameterFileTokens = @( - @{ Name = 'resourceGroupName'; Value = '${{ parameters.resourceGroupName }}' } - @{ Name = 'subscriptionId'; Value = '${{ parameters.subscriptionId }}' } - @{ Name = 'managementGroupId'; Value = '${{ parameters.managementGroupId }}' } - @{ Name = "tenantId"; Value = '$(ARM_TENANT_ID)' } - @{ Name = "deploymentSpId"; Value = '$(DEPLOYMENT_SP_ID)' } - ) | ForEach-Object { [PSCustomObject]$PSItem } - - # Get additional Custom Parameter File Tokens from input - Write-Verbose 'Additional Custom Parameter File Tokens: ${{ deploymentBlock.customParameterFileTokens }}' -Verbose - $OtherCustomParameterFileTokens = '${{ deploymentBlock.customParameterFileTokens }}' | ConvertFrom-Json - # Construct Token Function Input $ConvertTokensInputs = @{ - ParameterFilePath = Join-Path '$(parametersRepoRoot)' '${{ deploymentBlock.path }}' - DefaultParameterFileTokens = $DefaultParameterFileTokens - OtherCustomParameterFileTokens = $OtherCustomParameterFileTokens - LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + ParameterFileTokens = @{ + resourceGroupName = '${{ parameters.resourceGroupName }}' + subscriptionId = '${{ parameters.subscriptionId }}' + managementGroupId = '${{ parameters.managementGroupId }}' + tenantId = '$(ARM_TENANT_ID)' + deploymentSpId = '$(DEPLOYMENT_SP_ID)' + } + ParameterFilePath = Join-Path '$(parametersRepoRoot)' '${{ deploymentBlock.path }}' + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + } + + if ($Settings.parameterFileTokens.localTokens) { + Write-Verbose ('Using local tokens [{0}]' -f ($Settings.parameterFileTokens.localTokens.Keys -join ', ')) -Verbose + $ConvertTokensInputs.ParameterFileTokens += $Settings.parameterFileTokens.localTokens } + + if(-not [String]::IsNullOrEmpty('${{ deploymentBlock.customParameterFileTokens }}')) { + $customTokens = '${{ deploymentBlock.customParameterFileTokens }}' | ConvertFrom-Json + Write-Verbose ('Using custom parameter file tokens [{0}]' -f ($customTokens.Keys -join ', ')) -Verbose + $ConvertTokensInputs.ParameterFileTokens += $customTokens + } + # Invoke Token Replacement Functionality $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 956635b4d9..a71a7c4046 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -80,28 +80,32 @@ runs: # Load Settings File $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json - # Initialize Default Parameter File Tokens - $DefaultParameterFileTokens = @( - @{ Name = 'resourceGroupName'; Value = '${{ inputs.resourceGroupName }}' } - @{ Name = 'subscriptionId'; Value = '${{ inputs.subscriptionId }}' } - @{ Name = 'managementGroupId'; Value = '${{ inputs.managementGroupId }}' } - @{ Name = "tenantId"; Value = '${{ env.ARM_TENANT_ID }}' } - @{ Name = "deploymentSpId"; Value = '${{ env.DEPLOYMENT_SP_ID }}' } - ) | ForEach-Object { [PSCustomObject]$PSItem } - - # Get additional Custom Parameter File Tokens from input - Write-Verbose 'Additional Custom Parameter File Tokens: ${{ inputs.customParameterFileTokens }}' -Verbose - $OtherCustomParameterFileTokens = '${{ inputs.customParameterFileTokens }}' | ConvertFrom-Json # Construct Token Function Input $ConvertTokensInputs = @{ - ParameterFilePath = '${{ inputs.parameterFilePath }}' - DefaultParameterFileTokens = $DefaultParameterFileTokens - OtherCustomParameterFileTokens = $OtherCustomParameterFileTokens - LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + ParameterFileTokens = @{ + resourceGroupName = '${{ inputs.resourceGroupName }}' + subscriptionId = '${{ inputs.subscriptionId }}' + managementGroupId = '${{ inputs.managementGroupId }}' + tenantId = '${{ env.ARM_TENANT_ID }}' + deploymentSpId = '${{ env.DEPLOYMENT_SP_ID }}' + } + ParameterFilePath = '${{ inputs.parameterFilePath }}' + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + + if ($Settings.parameterFileTokens.localTokens) { + Write-Verbose ('Using local tokens [{0}]' -f ($Settings.parameterFileTokens.localTokens.Keys -join ', ')) -Verbose + $ConvertTokensInputs.ParameterFileTokens += $Settings.parameterFileTokens.localTokens + } + + if(-not [String]::IsNullOrEmpty('${{ inputs.customParameterFileTokens }}')) { + $customTokens = '${{ inputs.customParameterFileTokens }}' | ConvertFrom-Json + Write-Verbose ('Using custom parameter file tokens [{0}]' -f ($customTokens.Keys -join ', ')) -Verbose + $ConvertTokensInputs.ParameterFileTokens += $customTokens + } + # Invoke Token Replacement Functionality $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 91b94bd4f7..1050b6ec10 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -183,7 +183,7 @@ function Test-ModuleLocally { TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } - if ( $Settings.parameterFileTokens.localTokens) { + if ($Settings.parameterFileTokens.localTokens) { $ConvertTokensInputs.ParameterFileTokens += $Settings.parameterFileTokens.localTokens } } From c02d00f139bf73567188623ce90ed805d21910a3 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 15:19:34 +0100 Subject: [PATCH 09/36] Added conversion --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 4 ++-- .github/actions/templates/validateModuleDeployment/action.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 607002896f..748f6e79af 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -165,7 +165,7 @@ jobs: . (Join-Path '$(moduleRepoRoot)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') # Load Settings File - $Settings = Get-Content -Path (Join-Path '$(moduleRepoRoot)' 'settings.json') | ConvertFrom-Json + $Settings = Get-Content -Path (Join-Path '$(moduleRepoRoot)' 'settings.json') | ConvertFrom-Json -AsHashTable # Construct Token Function Input $ConvertTokensInputs = @{ @@ -187,7 +187,7 @@ jobs: } if(-not [String]::IsNullOrEmpty('${{ deploymentBlock.customParameterFileTokens }}')) { - $customTokens = '${{ deploymentBlock.customParameterFileTokens }}' | ConvertFrom-Json + $customTokens = '${{ deploymentBlock.customParameterFileTokens }}' | ConvertFrom-Json -AsHashTable Write-Verbose ('Using custom parameter file tokens [{0}]' -f ($customTokens.Keys -join ', ')) -Verbose $ConvertTokensInputs.ParameterFileTokens += $customTokens } diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index a71a7c4046..376c4be127 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -79,7 +79,7 @@ runs: . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') # Load Settings File - $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json + $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable # Construct Token Function Input $ConvertTokensInputs = @{ @@ -101,7 +101,7 @@ runs: } if(-not [String]::IsNullOrEmpty('${{ inputs.customParameterFileTokens }}')) { - $customTokens = '${{ inputs.customParameterFileTokens }}' | ConvertFrom-Json + $customTokens = '${{ inputs.customParameterFileTokens }}' | ConvertFrom-Json -AsHashTable Write-Verbose ('Using custom parameter file tokens [{0}]' -f ($customTokens.Keys -join ', ')) -Verbose $ConvertTokensInputs.ParameterFileTokens += $customTokens } From 339ec0402337961f0f7c1fff547803defd0757d7 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 15:34:11 +0100 Subject: [PATCH 10/36] Fixed dependencyies --- .../helper/Get-DependencyResourceNameList.ps1 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index 9280ac244b..13cc2810cc 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -36,11 +36,11 @@ function Get-DependencyResourceNameList { $Settings = Get-Content -Path (Join-Path $repoRootPath 'settings.json') | ConvertFrom-Json foreach ($parameterFilePath in $parameterFilePaths) { $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix - Verbose = $false + ParameterFilePath = $parameterFilePath + ParameterFileTokens = $Settings.parameterFileTokens.localTokens + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + Verbose = $false } $null = Convert-TokensInParameterFile @ConvertTokensInputs } From 8a008d48a64e7cc8d89bba3c9963806e8bad75a3 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 15:44:00 +0100 Subject: [PATCH 11/36] Small fix --- .../parameters/parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../galleries/parameters/parameters.json | 4 +-- .../parameters/parameters.json | 4 +-- .../parameters/parameters.json | 4 +-- .../hostpools/parameters/parameters.json | 2 +- .../namespaces/parameters/parameters.json | 4 +-- .../actionGroups/parameters/parameters.json | 2 +- .../components/parameters/parameters.json | 4 +-- .../vaults/parameters/parameters.json | 2 +- .../vaults/parameters/pe.parameters.json | 2 +- .../vaults/parameters/sqlmi.parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../parameters/apgw.parameters.json | 2 +- .../parameters/ase.parameters.json | 2 +- .../parameters/bastion.parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../parameters/sqlmi.parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../parameters/apgw.parameters.json | 2 +- .../parameters/bas.parameters.json | 2 +- .../parameters/fw.parameters.json | 2 +- .../parameters/lb.parameters.json | 2 +- .../routeTables/parameters/parameters.json | 2 +- .../parameters/sqlMi.parameters.json | 2 +- .../parameters/1.bastion.parameters.json | 4 +-- .../parameters/2.vnetpeer01.parameters.json | 6 ++-- .../parameters/3.vnetpeer02.parameters.json | 6 ++-- .../parameters/4.azfw.parameters.json | 2 +- .../parameters/5.aks.parameters.json | 8 ++--- .../parameters/6.sqlmi.parameters.json | 8 ++--- .../7.virtualHubConnection.parameters.json | 4 +-- .../parameters/parameters.json | 30 +++++++++---------- .../parameters/appi.parameters.json | 2 +- .../workspaces/parameters/parameters.json | 2 +- .../vaults/parameters/parameters.json | 2 +- .../parameters/fa.parameters.json | 2 +- .../parameters/law.parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../imageTemplates/parameters/parameters.json | 6 ++-- .../helper/Get-DependencyResourceNameList.ps1 | 2 +- 43 files changed, 76 insertions(+), 76 deletions(-) diff --git a/utilities/pipelines/dependencies/Microsoft.Authorization/policyAssignments/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Authorization/policyAssignments/parameters/parameters.json index 5d6b6faadb..786e69ed5e 100644 --- a/utilities/pipelines/dependencies/Microsoft.Authorization/policyAssignments/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Authorization/policyAssignments/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-pass-loc-rg" + "value": "adp-sxx-pass-loc-rg" }, "displayName": { "value": "Audit resource location matches resource group location" diff --git a/utilities/pipelines/dependencies/Microsoft.Automation/automationAccounts/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Automation/automationAccounts/parameters/parameters.json index 2f53ae1738..d8953e364f 100644 --- a/utilities/pipelines/dependencies/Microsoft.Automation/automationAccounts/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Automation/automationAccounts/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-wd-aut-x-001" + "value": "adp-sxx-wd-aut-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Compute/galleries/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Compute/galleries/parameters/parameters.json index 7a24916573..96834d20be 100644 --- a/utilities/pipelines/dependencies/Microsoft.Compute/galleries/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Compute/galleries/parameters/parameters.json @@ -3,12 +3,12 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp<>azsigweux001" + "value": "adpsxxazsigweux001" }, "images": { "value": [ { - "name": "adp-<>-az-imgd-x-001", + "name": "adp-sxx-az-imgd-x-001", "osType": "Windows", "osState": "Generalized", "publisher": "MicrosoftWindowsServer", diff --git a/utilities/pipelines/dependencies/Microsoft.Compute/virtualMachines/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Compute/virtualMachines/parameters/parameters.json index 2a44e5c537..84dc57111a 100644 --- a/utilities/pipelines/dependencies/Microsoft.Compute/virtualMachines/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Compute/virtualMachines/parameters/parameters.json @@ -34,7 +34,7 @@ "adminPassword": { "reference": { "keyVault": { - "id": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.KeyVault/vaults/adp-<>-az-kv-x-001" + "id": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.KeyVault/vaults/adp-sxx-az-kv-x-001" }, "secretName": "adminPassword" } @@ -46,7 +46,7 @@ "ipConfigurations": [ { "name": "ipconfig01", - "subnetId": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.Network/virtualNetworks/adp-<>-az-vnet-x-001/subnets/<>-az-subnet-x-001" + "subnetId": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.Network/virtualNetworks/adp-sxx-az-vnet-x-001/subnets/sxx-az-subnet-x-001" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/applicationgroups/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/applicationgroups/parameters/parameters.json index fcb16ac885..639800b058 100644 --- a/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/applicationgroups/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/applicationgroups/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-avdag-x-001" + "value": "adp-sxx-az-avdag-x-001" }, "location": { "value": "westeurope" @@ -12,7 +12,7 @@ "value": "RemoteApp" }, "hostpoolName": { - "value": "adp-<>-az-avdhp-x-001" + "value": "adp-sxx-az-avdhp-x-001" }, "friendlyName": { "value": "Remote Applications 1" diff --git a/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/hostpools/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/hostpools/parameters/parameters.json index 20b492a84e..d56bed7d7e 100644 --- a/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/hostpools/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/hostpools/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-avdhp-x-001" + "value": "adp-sxx-az-avdhp-x-001" }, "location": { "value": "westeurope" diff --git a/utilities/pipelines/dependencies/Microsoft.EventHub/namespaces/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.EventHub/namespaces/parameters/parameters.json index 35459e7641..67e7f877e5 100644 --- a/utilities/pipelines/dependencies/Microsoft.EventHub/namespaces/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.EventHub/namespaces/parameters/parameters.json @@ -3,12 +3,12 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-evhns-x-001" + "value": "adp-sxx-az-evhns-x-001" }, "eventHubs": { "value": [ { - "name": "adp-<>-az-evh-x-001", + "name": "adp-sxx-az-evh-x-001", "authorizationRules": [ { "name": "RootManageSharedAccessKey", diff --git a/utilities/pipelines/dependencies/Microsoft.Insights/actionGroups/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Insights/actionGroups/parameters/parameters.json index c6584e2af2..834cba3478 100644 --- a/utilities/pipelines/dependencies/Microsoft.Insights/actionGroups/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Insights/actionGroups/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-ag-x-001" + "value": "adp-sxx-az-ag-x-001" }, "groupShortName": { "value": "azagweux001" diff --git a/utilities/pipelines/dependencies/Microsoft.Insights/components/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Insights/components/parameters/parameters.json index ef39323095..fb4bd5d828 100644 --- a/utilities/pipelines/dependencies/Microsoft.Insights/components/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Insights/components/parameters/parameters.json @@ -3,10 +3,10 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-appi-x-001" + "value": "adp-sxx-az-appi-x-001" }, "appInsightsWorkspaceResourceId": { - "value": "/subscriptions/<>/resourcegroups/validation-rg/providers/microsoft.operationalinsights/workspaces/adp-<>-az-law-x-002" + "value": "/subscriptions/<>/resourcegroups/validation-rg/providers/microsoft.operationalinsights/workspaces/adp-sxx-az-law-x-002" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/parameters.json index e863f1a66a..626ac4d03a 100644 --- a/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-kv-x-001" + "value": "adp-sxx-az-kv-x-001" }, "accessPolicies": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/pe.parameters.json b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/pe.parameters.json index b408edb68e..e921e73da9 100644 --- a/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/pe.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/pe.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-kv-x-pe" + "value": "adp-sxx-az-kv-x-pe" }, "accessPolicies": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/sqlmi.parameters.json b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/sqlmi.parameters.json index e5edbf5b57..ead3ca98aa 100644 --- a/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/sqlmi.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/sqlmi.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-kv-x-sqlmi" + "value": "adp-sxx-az-kv-x-sqlmi" }, "accessPolicies": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.ManagedIdentity/userAssignedIdentities/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.ManagedIdentity/userAssignedIdentities/parameters/parameters.json index 8b8ad00f81..1c0d857760 100644 --- a/utilities/pipelines/dependencies/Microsoft.ManagedIdentity/userAssignedIdentities/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.ManagedIdentity/userAssignedIdentities/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-msi-x-001" + "value": "adp-sxx-az-msi-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/applicationSecurityGroups/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/applicationSecurityGroups/parameters/parameters.json index 41195db46f..5e442ae8f9 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/applicationSecurityGroups/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/applicationSecurityGroups/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-asg-x-001" + "value": "adp-sxx-az-asg-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/apgw.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/apgw.parameters.json index 22e2e92b4d..2837d69904 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/apgw.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/apgw.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-nsg-x-apgw" + "value": "adp-sxx-az-nsg-x-apgw" }, "networkSecurityGroupSecurityRules": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/ase.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/ase.parameters.json index 3f21036be1..5551769c72 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/ase.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/ase.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-nsg-x-ase" + "value": "adp-sxx-az-nsg-x-ase" }, "networkSecurityGroupSecurityRules": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/bastion.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/bastion.parameters.json index 78c47cf2ae..dc1af7d86e 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/bastion.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/bastion.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-nsg-x-bastion" + "value": "adp-sxx-az-nsg-x-bastion" }, "networkSecurityGroupSecurityRules": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/parameters.json index 78975c1b66..c131d6a68c 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-nsg-x-001" + "value": "adp-sxx-az-nsg-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/sqlmi.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/sqlmi.parameters.json index 7c64d7b34b..cc2a938972 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/sqlmi.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/sqlmi.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-nsg-x-sqlmi" + "value": "adp-sxx-az-nsg-x-sqlmi" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/networkWatchers/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkWatchers/parameters/parameters.json index 759abd816f..7a0102fc58 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/networkWatchers/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/networkWatchers/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-nw-x-001" + "value": "adp-sxx-az-nw-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/privateDnsZones/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/privateDnsZones/parameters/parameters.json index c3fca02928..c230de4417 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/privateDnsZones/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/privateDnsZones/parameters/parameters.json @@ -8,7 +8,7 @@ "virtualNetworkLinks": { "value": [ { - "virtualNetworkResourceId": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.Network/virtualNetworks/adp-<>-az-vnet-x-001", + "virtualNetworkResourceId": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.Network/virtualNetworks/adp-sxx-az-vnet-x-001", "registrationEnabled": false } ] diff --git a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/apgw.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/apgw.parameters.json index 8704e7a4e0..532e4b385f 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/apgw.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/apgw.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-pip-x-apgw" + "value": "adp-sxx-az-pip-x-apgw" }, "skuName": { "value": "Standard" diff --git a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/bas.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/bas.parameters.json index 5e275463ac..beb1542b3e 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/bas.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/bas.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-pip-x-bas" + "value": "adp-sxx-az-pip-x-bas" }, "skuName": { "value": "Standard" diff --git a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/fw.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/fw.parameters.json index b31c62f69d..33d85a2091 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/fw.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/fw.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-pip-x-fw" + "value": "adp-sxx-az-pip-x-fw" }, "skuName": { "value": "Standard" diff --git a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/lb.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/lb.parameters.json index 2e98864c14..1d684f2ff3 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/lb.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/lb.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-pip-x-lb" + "value": "adp-sxx-az-pip-x-lb" }, "skuName": { "value": "Standard" diff --git a/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/parameters.json index 9ef6675102..6e5ccb81ad 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-udr-x-001" + "value": "adp-sxx-az-udr-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/sqlMi.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/sqlMi.parameters.json index b2219d533c..0c59507939 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/sqlMi.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/sqlMi.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-udr-x-sqlmi" + "value": "adp-sxx-az-udr-x-sqlmi" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/1.bastion.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/1.bastion.parameters.json index abae935c98..bb91ffcc13 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/1.bastion.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/1.bastion.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-vnet-x-002" + "value": "adp-sxx-az-vnet-x-002" }, "addressPrefixes": { "value": [ @@ -15,7 +15,7 @@ { "name": "AzureBastionSubnet", // Bastion subnet "addressPrefix": "10.1.5.0/24", - "networkSecurityGroupName": "adp-<>-az-nsg-x-bastion" + "networkSecurityGroupName": "adp-sxx-az-nsg-x-bastion" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/2.vnetpeer01.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/2.vnetpeer01.parameters.json index d5df6201a5..33368d723d 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/2.vnetpeer01.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/2.vnetpeer01.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-vnet-x-peer01" + "value": "adp-sxx-az-vnet-x-peer01" }, "addressPrefixes": { "value": [ @@ -13,9 +13,9 @@ "subnets": { "value": [ { - "name": "<>-az-subnet-x-001", + "name": "sxx-az-subnet-x-001", "addressPrefix": "10.2.0.0/24", - "networkSecurityGroupName": "adp-<>-az-nsg-x-001" + "networkSecurityGroupName": "adp-sxx-az-nsg-x-001" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/3.vnetpeer02.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/3.vnetpeer02.parameters.json index c7c6b8f2f5..f15c4559bf 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/3.vnetpeer02.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/3.vnetpeer02.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-vnet-x-peer02" + "value": "adp-sxx-az-vnet-x-peer02" }, "addressPrefixes": { "value": [ @@ -13,9 +13,9 @@ "subnets": { "value": [ { - "name": "<>-az-subnet-x-001", + "name": "sxx-az-subnet-x-001", "addressPrefix": "10.3.0.0/24", - "networkSecurityGroupName": "adp-<>-az-nsg-x-001" + "networkSecurityGroupName": "adp-sxx-az-nsg-x-001" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/4.azfw.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/4.azfw.parameters.json index fea560d3f0..40eac46f7f 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/4.azfw.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/4.azfw.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-vnet-x-azfw" + "value": "adp-sxx-az-vnet-x-azfw" }, "addressPrefixes": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/5.aks.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/5.aks.parameters.json index 7235917e7a..b8e80a0ed0 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/5.aks.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/5.aks.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-vnet-x-aks" + "value": "adp-sxx-az-vnet-x-aks" }, "addressPrefixes": { "value": [ @@ -15,17 +15,17 @@ { "name": "Primary", "addressPrefix": "10.5.0.0/18", - "networkSecurityGroupName": "adp-<>-az-nsg-x-001" + "networkSecurityGroupName": "adp-sxx-az-nsg-x-001" }, { "name": "Secondary", "addressPrefix": "10.5.64.0/18", - "networkSecurityGroupName": "adp-<>-az-nsg-x-001" + "networkSecurityGroupName": "adp-sxx-az-nsg-x-001" }, { "name": "Tertiary", "addressPrefix": "10.5.128.0/18", - "networkSecurityGroupName": "adp-<>-az-nsg-x-001" + "networkSecurityGroupName": "adp-sxx-az-nsg-x-001" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/6.sqlmi.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/6.sqlmi.parameters.json index ddb63750ec..9271a7d8b7 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/6.sqlmi.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/6.sqlmi.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-vnet-x-sqlmi" + "value": "adp-sxx-az-vnet-x-sqlmi" }, "addressPrefixes": { "value": [ @@ -13,10 +13,10 @@ "subnets": { "value": [ { - "name": "<>-az-subnet-x-sqlmi", // SQLMi subnet + "name": "sxx-az-subnet-x-sqlmi", // SQLMi subnet "addressPrefix": "10.6.0.0/24", - "networkSecurityGroupName": "adp-<>-az-nsg-x-sqlmi", - "routeTableName": "adp-<>-az-udr-x-sqlmi", + "networkSecurityGroupName": "adp-sxx-az-nsg-x-sqlmi", + "routeTableName": "adp-sxx-az-udr-x-sqlmi", "serviceEndpoints": [], "delegations": [ { diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/7.virtualHubConnection.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/7.virtualHubConnection.parameters.json index ee68e6d7d7..1f7ec5975e 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/7.virtualHubConnection.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/7.virtualHubConnection.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-vnet-x-vhub" + "value": "adp-sxx-az-vnet-x-vhub" }, "addressPrefixes": { "value": [ @@ -15,7 +15,7 @@ { "name": "default", // Hub connection subnet "addressPrefix": "10.7.0.0/24", - "networkSecurityGroupName": "adp-<>-az-nsg-x-001" + "networkSecurityGroupName": "adp-sxx-az-nsg-x-001" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/parameters.json index 30f8c90768..9d21ac6034 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-vnet-x-001" + "value": "adp-sxx-az-vnet-x-001" }, "addressPrefixes": { "value": [ @@ -17,9 +17,9 @@ "addressPrefix": "10.0.255.0/24" }, { - "name": "<>-az-subnet-x-001", // VM subnet + "name": "sxx-az-subnet-x-001", // VM subnet "addressPrefix": "10.0.0.0/24", - "networkSecurityGroupName": "adp-<>-az-nsg-x-001", + "networkSecurityGroupName": "adp-sxx-az-nsg-x-001", "serviceEndpoints": [ "Microsoft.EventHub", "Microsoft.Sql", @@ -28,9 +28,9 @@ ] }, { - "name": "<>-az-subnet-x-002", // VMSS subnet + "name": "sxx-az-subnet-x-002", // VMSS subnet "addressPrefix": "10.0.1.0/24", - "networkSecurityGroupName": "adp-<>-az-nsg-x-001", + "networkSecurityGroupName": "adp-sxx-az-nsg-x-001", "serviceEndpoints": [ "Microsoft.EventHub", "Microsoft.Sql", @@ -39,15 +39,15 @@ ] }, { - "name": "<>-az-subnet-x-003", // ServiceBus subnet + "name": "sxx-az-subnet-x-003", // ServiceBus subnet "addressPrefix": "10.0.2.0/24", - "networkSecurityGroupName": "adp-<>-az-nsg-x-001", + "networkSecurityGroupName": "adp-sxx-az-nsg-x-001", "serviceEndpoints": [ "Microsoft.ServiceBus" ] }, { - "name": "<>-az-subnet-x-004", // ANF subnet + "name": "sxx-az-subnet-x-004", // ANF subnet "addressPrefix": "10.0.3.0/24", "delegations": [ { @@ -61,24 +61,24 @@ { "name": "AzureBastionSubnet", // Bastion subnet "addressPrefix": "10.0.5.0/24", - "networkSecurityGroupName": "adp-<>-az-nsg-x-bastion" + "networkSecurityGroupName": "adp-sxx-az-nsg-x-bastion" }, { - "name": "<>-az-subnet-x-005-privateEndpoints", // PE subnet + "name": "sxx-az-subnet-x-005-privateEndpoints", // PE subnet "addressPrefix": "10.0.6.0/24", - "networkSecurityGroupName": "adp-<>-az-nsg-x-001", + "networkSecurityGroupName": "adp-sxx-az-nsg-x-001", "privateEndpointNetworkPolicies": "Disabled", // This property must be set to disabled for subnets that contain private endpoints. It confirms that NSGs rules will not apply to private endpoints (currently not supported). Default Value when not specified is "Enabled". "privateLinkServiceNetworkPolicies": "Enabled" }, { - "name": "<>-az-subnet-x-006", // ASE subnet + "name": "sxx-az-subnet-x-006", // ASE subnet "addressPrefix": "10.0.7.0/24", - "networkSecurityGroupName": "adp-<>-az-nsg-x-ase" + "networkSecurityGroupName": "adp-sxx-az-nsg-x-ase" }, { - "name": "<>-az-subnet-x-007", // APGW subnet + "name": "sxx-az-subnet-x-007", // APGW subnet "addressPrefix": "10.0.8.0/24", - "networkSecurityGroupName": "adp-<>-az-nsg-x-apgw" + "networkSecurityGroupName": "adp-sxx-az-nsg-x-apgw" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/appi.parameters.json b/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/appi.parameters.json index 5af16c4175..728d2b303f 100644 --- a/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/appi.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/appi.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-law-x-002" + "value": "adp-sxx-az-law-x-002" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/parameters.json index b371f4878a..cd8acb2eef 100644 --- a/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-law-x-001" + "value": "adp-sxx-az-law-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.RecoveryServices/vaults/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.RecoveryServices/vaults/parameters/parameters.json index 6a6c15ed6e..258acb9495 100644 --- a/utilities/pipelines/dependencies/Microsoft.RecoveryServices/vaults/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.RecoveryServices/vaults/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-rsv-x-001" + "value": "adp-sxx-az-rsv-x-001" }, "diagnosticLogsRetentionInDays": { "value": 7 diff --git a/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/fa.parameters.json b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/fa.parameters.json index 386a6f4ff2..101f40d842 100644 --- a/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/fa.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/fa.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp<>azsafa001" + "value": "adpsxxazsafa001" }, "storageAccountKind": { "value": "StorageV2" diff --git a/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/law.parameters.json b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/law.parameters.json index 75347b8412..17b6f21a0e 100644 --- a/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/law.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/law.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp<>azsalaw001" + "value": "adpsxxazsalaw001" }, "storageAccountKind": { "value": "StorageV2" diff --git a/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/parameters.json index c59c5309b4..1dcb375152 100644 --- a/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp<>azsax001" + "value": "adpsxxazsax001" }, "storageAccountKind": { "value": "StorageV2" diff --git a/utilities/pipelines/dependencies/Microsoft.VirtualMachineImages/imageTemplates/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.VirtualMachineImages/imageTemplates/parameters/parameters.json index bcd7851209..12f647476c 100644 --- a/utilities/pipelines/dependencies/Microsoft.VirtualMachineImages/imageTemplates/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.VirtualMachineImages/imageTemplates/parameters/parameters.json @@ -3,10 +3,10 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-<>-az-imgt-x-001" + "value": "adp-sxx-az-imgt-x-001" }, "userMsiName": { - "value": "adp-<>-az-msi-x-001" + "value": "adp-sxx-az-msi-x-001" }, "userMsiResourceGroup": { "value": "validation-rg" @@ -38,7 +38,7 @@ ] }, "unManagedImageName": { - "value": "adp-<>-az-umi-x-001" + "value": "adp-sxx-az-umi-x-001" } } } diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index 13cc2810cc..65d58ba148 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -33,7 +33,7 @@ function Get-DependencyResourceNameList { } # Replace tokens in dependency parameter files - $Settings = Get-Content -Path (Join-Path $repoRootPath 'settings.json') | ConvertFrom-Json + $Settings = Get-Content -Path (Join-Path $repoRootPath 'settings.json') | ConvertFrom-Json -AsHashtable foreach ($parameterFilePath in $parameterFilePaths) { $ConvertTokensInputs = @{ ParameterFilePath = $parameterFilePath From f331ffb6e16a205746101cd5a5688f43bda7a023 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 16:21:48 +0100 Subject: [PATCH 12/36] Updated documentation --- docs/wiki/UtilitiesTestModuleLocally.md | 11 ++-- utilities/tools/Test-ModuleLocally.ps1 | 76 ++++++++++++++----------- 2 files changed, 49 insertions(+), 38 deletions(-) diff --git a/docs/wiki/UtilitiesTestModuleLocally.md b/docs/wiki/UtilitiesTestModuleLocally.md index 7fc200b269..f7db403969 100644 --- a/docs/wiki/UtilitiesTestModuleLocally.md +++ b/docs/wiki/UtilitiesTestModuleLocally.md @@ -20,15 +20,14 @@ You can find the script under `/utilities/tools/Test-ModuleLocally.ps1` If the switch for pester tests (`-PesterTest`) was provided the script will 1. Invoke the global module test for the provided template file path and run all tests for it -If the switch for either the validation test (`-ValidationTest`) or deployment test (`-DeploymentTest`) was provided alongside a hashtable for the token replacement (`-ValidateOrDeployParameters`), the script will -1. Search all parameter files for the given module template -1. Craft a dictionary to replace all tokens in these parameter files with actual values. This dictionary will consist +If the switch for either the validation test (`-ValidationTest`) or deployment test (`-DeploymentTest`) was provided alongside a HashTable for the token replacement (`-ValidateOrDeployParameters`), the script will +1. either fetch all parameter files of the module's parameter folder (default) or use a specify parameter file you can provide via the `parameterFilePath` parameter instead. +1. Create a dictionary to replace all tokens in these parameter files with actual values. This dictionary will consist - of the subscriptionID & managementGroupID of the provided `ValidateOrDeployParameters` object, - add all key-value pairs of the `-AdditionalTokens` object to it, - - and optionally also add all key-value pairs specified in the `settings.json`'s `parameterFileTokens` object if the `-SkipParameterFileTokens` parameter was not set -1. It replaces all tokens in the parameter files as per the object created in the previous step + - and optionally also add all key-value pairs optionally specified in the `settings.json`'s `parameterFileTokens` object 1. If the `-ValidationTest` parameter was set, it runs a deployment validation using the `Test-TemplateWithParameterFile` script -1. If the `-DeploymentTest` parameter was set, it runs a deployment using the `New-ModuleDeployment` script (with no retries). By default it uses the standard `parameters.json` parameter file. However, if the switch `-DeployAllModuleParameterFiles` was set, it runs the deployment for all parameter files in the module's `.parameters` folder +1. If the `-DeploymentTest` parameter was set, it runs a deployment using the `New-ModuleDeployment` script (with no retries). 1. As a final step it rolls the parameter files back to their original state if either the `-ValidationTest` or `-DeploymentTest` parameters were provided. # How to use it diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 1050b6ec10..fe378e5f2d 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -11,13 +11,13 @@ subscription Id, principal Id, tenant ID and other parameters that need to be to Mandatory. Path to the Bicep/ARM module that is being tested .PARAMETER parameterFilePath -Optional. Path to the template file/folder that is to be tested with the template file. Mandatory if the DeploymentTest/ValidationTest switches are set. +Optional. Path to the template file/folder that is to be tested with the template file. Defaults to the module's default '.parameter' folder. Will be used if the DeploymentTest/ValidationTest switches are set. .PARAMETER PesterTest Optional. A switch parameter that triggers a Pester test for the module .PARAMETER ValidateOrDeployParameters -Mandatory. An object consisting of the components that are required when using the Validate test or DeploymentTest switch parameter. See example: +Optional. An object consisting of the components that are required when using the Validate test or DeploymentTest switch parameter. Mandatory if the DeploymentTest/ValidationTest switches are set. .PARAMETER DeploymentTest Optional. A switch parameter that triggers the deployment of the module @@ -34,50 +34,62 @@ Optional. A hashtable parameter that contains custom tokens to be replaced in th .EXAMPLE $TestModuleLocallyInput = @{ - templateFilePath = 'Microsoft.Network\applicationSecurityGroups' - PesterTest = $true - DeploymentTest = $true - ValidationTest = $false - ValidateOrDeployParameters = @{ - Location = 'australiaeast' + templateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' + parameterFilePath = 'C:\Microsoft.Network\routeTables\.parameters\parameters.json' + PesterTest = $false + DeploymentTest = $false + ValidationTest = $true + ValidateOrDeployParameters = @{ + Location = 'westeurope' ResourceGroupName = 'validation-rg' - SubscriptionId = '12345678-1234-1234-1234-123456789123' - ManagementGroupId = 'mg-contoso' + SubscriptionId = '00000000-0000-0000-0000-000000000000' + ManagementGroupId = '00000000-0000-0000-0000-000000000000' + RemoveDeployment = $false + } + AdditionalTokens = @{ + deploymentSpId = '00000000-0000-0000-0000-000000000000' } - AdditionalTokens = @( - @{ Name = 'deploymentSpId'; Value = '12345678-1234-1234-1234-123456789123' } - @{ Name = 'tenantId'; Value = '12345678-1234-1234-1234-123456789123' } - ) } - Test-ModuleLocally @TestModuleLocallyInput -Verbose +Run a Test-Az*Deployment using a specific parameter-template combination with the provided tokens + .EXAMPLE $TestModuleLocallyInput = @{ - templateFilePath = 'Microsoft.Network\applicationSecurityGroups' - PesterTest = $true - DeploymentTest = $true - ValidationTest = $false - ValidateOrDeployParameters = @{ - Location = 'australiaeast' + templateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' + PesterTest = $true + DeploymentTest = $false + ValidationTest = $true + ValidateOrDeployParameters = @{ + Location = 'westeurope' ResourceGroupName = 'validation-rg' - SubscriptionId = '12345678-1234-1234-1234-123456789123' - ManagementGroupId = 'mg-contoso' + SubscriptionId = '00000000-0000-0000-0000-000000000000' + ManagementGroupId = '00000000-0000-0000-0000-000000000000' + RemoveDeployment = $false + } + AdditionalTokens = @{ + deploymentSpId = '00000000-0000-0000-0000-000000000000' } - GetParameterFileTokens = $true - AdditionalTokens = @( - @{ Name = 'deploymentSpId'; Value = '12345678-1234-1234-1234-123456789123' } - @{ Name = 'tenantId'; Value = '12345678-1234-1234-1234-123456789123' } - ) } +Test-ModuleLocally @TestModuleLocallyInput -Verbose + +Run all Pesters test for a given template and a Test-Az*Deployment using each parameter file in the module's parameter folder in combination with the template and the provided tokens +.EXAMPLE + +$TestModuleLocallyInput = @{ + templateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' + parameterFilePath = 'C:\Microsoft.Network\routeTables\.parameters\parameters.json' + PesterTest = $true +} Test-ModuleLocally @TestModuleLocallyInput -Verbose +Run all Pester tests for the given template file + .NOTES - Make sure you provide the right information in the 'ValidateOrDeployParameters' parameter for this function to work. -- Ensure you have the ability to perform the deployment operations using your account - +- Ensure you have the ability to perform the deployment operations using your account (if planning to test deploy) #> function Test-ModuleLocally { @@ -89,8 +101,8 @@ function Test-ModuleLocally { [Parameter(Mandatory = $false)] [string] $parameterFilePath = (Join-Path (Split-Path $templateFilePath -Parent) '.parameters'), - [Parameter(Mandatory)] - [Psobject] $ValidateOrDeployParameters, + [Parameter(Mandatory = $false)] + [Psobject] $ValidateOrDeployParameters = @{}, [Parameter(Mandatory = $false)] [hashtable] $AdditionalTokens = @{}, From 22a3ce9ed1c4dcf60bcec4fdf04171d011e82263 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 16:22:26 +0100 Subject: [PATCH 13/36] Cleanup --- utilities/tools/Test-ModuleLocally.ps1 | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index fe378e5f2d..80fa4541a9 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -238,11 +238,7 @@ function Test-ModuleLocally { } } } catch { - Write-Error $PSItem.Exception - # Replace Values with Tokens For Repo Updates and Set Restore Flag to True to Prevent Running Restore Twice - # $RestoreAlreadyTriggered = $true - # Write-Verbose 'Restoring Tokens' - # $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $_ -SwapValueWithName $true } + Write-Error $_ } finally { # Restore parameter files From 03cd3e6801ccefa8d5a94210460275621270b755 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 16:29:55 +0100 Subject: [PATCH 14/36] Rollback dependency file changes --- .../parameters/parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../galleries/parameters/parameters.json | 4 +-- .../parameters/parameters.json | 4 +-- .../parameters/parameters.json | 4 +-- .../hostpools/parameters/parameters.json | 2 +- .../namespaces/parameters/parameters.json | 4 +-- .../actionGroups/parameters/parameters.json | 2 +- .../components/parameters/parameters.json | 4 +-- .../vaults/parameters/parameters.json | 2 +- .../vaults/parameters/pe.parameters.json | 2 +- .../vaults/parameters/sqlmi.parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../parameters/apgw.parameters.json | 2 +- .../parameters/ase.parameters.json | 2 +- .../parameters/bastion.parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../parameters/sqlmi.parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../parameters/apgw.parameters.json | 2 +- .../parameters/bas.parameters.json | 2 +- .../parameters/fw.parameters.json | 2 +- .../parameters/lb.parameters.json | 2 +- .../routeTables/parameters/parameters.json | 2 +- .../parameters/sqlMi.parameters.json | 2 +- .../parameters/1.bastion.parameters.json | 4 +-- .../parameters/2.vnetpeer01.parameters.json | 6 ++-- .../parameters/3.vnetpeer02.parameters.json | 6 ++-- .../parameters/4.azfw.parameters.json | 2 +- .../parameters/5.aks.parameters.json | 8 ++--- .../parameters/6.sqlmi.parameters.json | 8 ++--- .../7.virtualHubConnection.parameters.json | 4 +-- .../parameters/parameters.json | 30 +++++++++---------- .../parameters/appi.parameters.json | 2 +- .../workspaces/parameters/parameters.json | 2 +- .../vaults/parameters/parameters.json | 2 +- .../parameters/fa.parameters.json | 2 +- .../parameters/law.parameters.json | 2 +- .../parameters/parameters.json | 2 +- .../imageTemplates/parameters/parameters.json | 6 ++-- 42 files changed, 75 insertions(+), 75 deletions(-) diff --git a/utilities/pipelines/dependencies/Microsoft.Authorization/policyAssignments/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Authorization/policyAssignments/parameters/parameters.json index 786e69ed5e..5d6b6faadb 100644 --- a/utilities/pipelines/dependencies/Microsoft.Authorization/policyAssignments/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Authorization/policyAssignments/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-pass-loc-rg" + "value": "adp-<>-pass-loc-rg" }, "displayName": { "value": "Audit resource location matches resource group location" diff --git a/utilities/pipelines/dependencies/Microsoft.Automation/automationAccounts/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Automation/automationAccounts/parameters/parameters.json index d8953e364f..2f53ae1738 100644 --- a/utilities/pipelines/dependencies/Microsoft.Automation/automationAccounts/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Automation/automationAccounts/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-wd-aut-x-001" + "value": "adp-<>-wd-aut-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Compute/galleries/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Compute/galleries/parameters/parameters.json index 96834d20be..7a24916573 100644 --- a/utilities/pipelines/dependencies/Microsoft.Compute/galleries/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Compute/galleries/parameters/parameters.json @@ -3,12 +3,12 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adpsxxazsigweux001" + "value": "adp<>azsigweux001" }, "images": { "value": [ { - "name": "adp-sxx-az-imgd-x-001", + "name": "adp-<>-az-imgd-x-001", "osType": "Windows", "osState": "Generalized", "publisher": "MicrosoftWindowsServer", diff --git a/utilities/pipelines/dependencies/Microsoft.Compute/virtualMachines/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Compute/virtualMachines/parameters/parameters.json index 84dc57111a..2a44e5c537 100644 --- a/utilities/pipelines/dependencies/Microsoft.Compute/virtualMachines/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Compute/virtualMachines/parameters/parameters.json @@ -34,7 +34,7 @@ "adminPassword": { "reference": { "keyVault": { - "id": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.KeyVault/vaults/adp-sxx-az-kv-x-001" + "id": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.KeyVault/vaults/adp-<>-az-kv-x-001" }, "secretName": "adminPassword" } @@ -46,7 +46,7 @@ "ipConfigurations": [ { "name": "ipconfig01", - "subnetId": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.Network/virtualNetworks/adp-sxx-az-vnet-x-001/subnets/sxx-az-subnet-x-001" + "subnetId": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.Network/virtualNetworks/adp-<>-az-vnet-x-001/subnets/<>-az-subnet-x-001" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/applicationgroups/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/applicationgroups/parameters/parameters.json index 639800b058..fcb16ac885 100644 --- a/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/applicationgroups/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/applicationgroups/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-avdag-x-001" + "value": "adp-<>-az-avdag-x-001" }, "location": { "value": "westeurope" @@ -12,7 +12,7 @@ "value": "RemoteApp" }, "hostpoolName": { - "value": "adp-sxx-az-avdhp-x-001" + "value": "adp-<>-az-avdhp-x-001" }, "friendlyName": { "value": "Remote Applications 1" diff --git a/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/hostpools/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/hostpools/parameters/parameters.json index d56bed7d7e..20b492a84e 100644 --- a/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/hostpools/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.DesktopVirtualization/hostpools/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-avdhp-x-001" + "value": "adp-<>-az-avdhp-x-001" }, "location": { "value": "westeurope" diff --git a/utilities/pipelines/dependencies/Microsoft.EventHub/namespaces/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.EventHub/namespaces/parameters/parameters.json index 67e7f877e5..35459e7641 100644 --- a/utilities/pipelines/dependencies/Microsoft.EventHub/namespaces/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.EventHub/namespaces/parameters/parameters.json @@ -3,12 +3,12 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-evhns-x-001" + "value": "adp-<>-az-evhns-x-001" }, "eventHubs": { "value": [ { - "name": "adp-sxx-az-evh-x-001", + "name": "adp-<>-az-evh-x-001", "authorizationRules": [ { "name": "RootManageSharedAccessKey", diff --git a/utilities/pipelines/dependencies/Microsoft.Insights/actionGroups/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Insights/actionGroups/parameters/parameters.json index 834cba3478..c6584e2af2 100644 --- a/utilities/pipelines/dependencies/Microsoft.Insights/actionGroups/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Insights/actionGroups/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-ag-x-001" + "value": "adp-<>-az-ag-x-001" }, "groupShortName": { "value": "azagweux001" diff --git a/utilities/pipelines/dependencies/Microsoft.Insights/components/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Insights/components/parameters/parameters.json index fb4bd5d828..ef39323095 100644 --- a/utilities/pipelines/dependencies/Microsoft.Insights/components/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Insights/components/parameters/parameters.json @@ -3,10 +3,10 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-appi-x-001" + "value": "adp-<>-az-appi-x-001" }, "appInsightsWorkspaceResourceId": { - "value": "/subscriptions/<>/resourcegroups/validation-rg/providers/microsoft.operationalinsights/workspaces/adp-sxx-az-law-x-002" + "value": "/subscriptions/<>/resourcegroups/validation-rg/providers/microsoft.operationalinsights/workspaces/adp-<>-az-law-x-002" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/parameters.json index 626ac4d03a..e863f1a66a 100644 --- a/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-kv-x-001" + "value": "adp-<>-az-kv-x-001" }, "accessPolicies": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/pe.parameters.json b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/pe.parameters.json index e921e73da9..b408edb68e 100644 --- a/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/pe.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/pe.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-kv-x-pe" + "value": "adp-<>-az-kv-x-pe" }, "accessPolicies": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/sqlmi.parameters.json b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/sqlmi.parameters.json index ead3ca98aa..e5edbf5b57 100644 --- a/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/sqlmi.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.KeyVault/vaults/parameters/sqlmi.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-kv-x-sqlmi" + "value": "adp-<>-az-kv-x-sqlmi" }, "accessPolicies": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.ManagedIdentity/userAssignedIdentities/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.ManagedIdentity/userAssignedIdentities/parameters/parameters.json index 1c0d857760..8b8ad00f81 100644 --- a/utilities/pipelines/dependencies/Microsoft.ManagedIdentity/userAssignedIdentities/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.ManagedIdentity/userAssignedIdentities/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-msi-x-001" + "value": "adp-<>-az-msi-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/applicationSecurityGroups/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/applicationSecurityGroups/parameters/parameters.json index 5e442ae8f9..41195db46f 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/applicationSecurityGroups/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/applicationSecurityGroups/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-asg-x-001" + "value": "adp-<>-az-asg-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/apgw.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/apgw.parameters.json index 2837d69904..22e2e92b4d 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/apgw.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/apgw.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-nsg-x-apgw" + "value": "adp-<>-az-nsg-x-apgw" }, "networkSecurityGroupSecurityRules": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/ase.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/ase.parameters.json index 5551769c72..3f21036be1 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/ase.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/ase.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-nsg-x-ase" + "value": "adp-<>-az-nsg-x-ase" }, "networkSecurityGroupSecurityRules": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/bastion.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/bastion.parameters.json index dc1af7d86e..78c47cf2ae 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/bastion.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/bastion.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-nsg-x-bastion" + "value": "adp-<>-az-nsg-x-bastion" }, "networkSecurityGroupSecurityRules": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/parameters.json index c131d6a68c..78975c1b66 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-nsg-x-001" + "value": "adp-<>-az-nsg-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/sqlmi.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/sqlmi.parameters.json index cc2a938972..7c64d7b34b 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/sqlmi.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/networkSecurityGroups/parameters/sqlmi.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-nsg-x-sqlmi" + "value": "adp-<>-az-nsg-x-sqlmi" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/networkWatchers/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/networkWatchers/parameters/parameters.json index 7a0102fc58..759abd816f 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/networkWatchers/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/networkWatchers/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-nw-x-001" + "value": "adp-<>-az-nw-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/privateDnsZones/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/privateDnsZones/parameters/parameters.json index c230de4417..c3fca02928 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/privateDnsZones/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/privateDnsZones/parameters/parameters.json @@ -8,7 +8,7 @@ "virtualNetworkLinks": { "value": [ { - "virtualNetworkResourceId": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.Network/virtualNetworks/adp-sxx-az-vnet-x-001", + "virtualNetworkResourceId": "/subscriptions/<>/resourceGroups/validation-rg/providers/Microsoft.Network/virtualNetworks/adp-<>-az-vnet-x-001", "registrationEnabled": false } ] diff --git a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/apgw.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/apgw.parameters.json index 532e4b385f..8704e7a4e0 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/apgw.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/apgw.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-pip-x-apgw" + "value": "adp-<>-az-pip-x-apgw" }, "skuName": { "value": "Standard" diff --git a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/bas.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/bas.parameters.json index beb1542b3e..5e275463ac 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/bas.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/bas.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-pip-x-bas" + "value": "adp-<>-az-pip-x-bas" }, "skuName": { "value": "Standard" diff --git a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/fw.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/fw.parameters.json index 33d85a2091..b31c62f69d 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/fw.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/fw.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-pip-x-fw" + "value": "adp-<>-az-pip-x-fw" }, "skuName": { "value": "Standard" diff --git a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/lb.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/lb.parameters.json index 1d684f2ff3..2e98864c14 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/lb.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/publicIPAddresses/parameters/lb.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-pip-x-lb" + "value": "adp-<>-az-pip-x-lb" }, "skuName": { "value": "Standard" diff --git a/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/parameters.json index 6e5ccb81ad..9ef6675102 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-udr-x-001" + "value": "adp-<>-az-udr-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/sqlMi.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/sqlMi.parameters.json index 0c59507939..b2219d533c 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/sqlMi.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/routeTables/parameters/sqlMi.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-udr-x-sqlmi" + "value": "adp-<>-az-udr-x-sqlmi" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/1.bastion.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/1.bastion.parameters.json index bb91ffcc13..abae935c98 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/1.bastion.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/1.bastion.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-vnet-x-002" + "value": "adp-<>-az-vnet-x-002" }, "addressPrefixes": { "value": [ @@ -15,7 +15,7 @@ { "name": "AzureBastionSubnet", // Bastion subnet "addressPrefix": "10.1.5.0/24", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-bastion" + "networkSecurityGroupName": "adp-<>-az-nsg-x-bastion" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/2.vnetpeer01.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/2.vnetpeer01.parameters.json index 33368d723d..d5df6201a5 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/2.vnetpeer01.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/2.vnetpeer01.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-vnet-x-peer01" + "value": "adp-<>-az-vnet-x-peer01" }, "addressPrefixes": { "value": [ @@ -13,9 +13,9 @@ "subnets": { "value": [ { - "name": "sxx-az-subnet-x-001", + "name": "<>-az-subnet-x-001", "addressPrefix": "10.2.0.0/24", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-001" + "networkSecurityGroupName": "adp-<>-az-nsg-x-001" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/3.vnetpeer02.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/3.vnetpeer02.parameters.json index f15c4559bf..c7c6b8f2f5 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/3.vnetpeer02.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/3.vnetpeer02.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-vnet-x-peer02" + "value": "adp-<>-az-vnet-x-peer02" }, "addressPrefixes": { "value": [ @@ -13,9 +13,9 @@ "subnets": { "value": [ { - "name": "sxx-az-subnet-x-001", + "name": "<>-az-subnet-x-001", "addressPrefix": "10.3.0.0/24", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-001" + "networkSecurityGroupName": "adp-<>-az-nsg-x-001" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/4.azfw.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/4.azfw.parameters.json index 40eac46f7f..fea560d3f0 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/4.azfw.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/4.azfw.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-vnet-x-azfw" + "value": "adp-<>-az-vnet-x-azfw" }, "addressPrefixes": { "value": [ diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/5.aks.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/5.aks.parameters.json index b8e80a0ed0..7235917e7a 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/5.aks.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/5.aks.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-vnet-x-aks" + "value": "adp-<>-az-vnet-x-aks" }, "addressPrefixes": { "value": [ @@ -15,17 +15,17 @@ { "name": "Primary", "addressPrefix": "10.5.0.0/18", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-001" + "networkSecurityGroupName": "adp-<>-az-nsg-x-001" }, { "name": "Secondary", "addressPrefix": "10.5.64.0/18", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-001" + "networkSecurityGroupName": "adp-<>-az-nsg-x-001" }, { "name": "Tertiary", "addressPrefix": "10.5.128.0/18", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-001" + "networkSecurityGroupName": "adp-<>-az-nsg-x-001" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/6.sqlmi.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/6.sqlmi.parameters.json index 9271a7d8b7..ddb63750ec 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/6.sqlmi.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/6.sqlmi.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-vnet-x-sqlmi" + "value": "adp-<>-az-vnet-x-sqlmi" }, "addressPrefixes": { "value": [ @@ -13,10 +13,10 @@ "subnets": { "value": [ { - "name": "sxx-az-subnet-x-sqlmi", // SQLMi subnet + "name": "<>-az-subnet-x-sqlmi", // SQLMi subnet "addressPrefix": "10.6.0.0/24", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-sqlmi", - "routeTableName": "adp-sxx-az-udr-x-sqlmi", + "networkSecurityGroupName": "adp-<>-az-nsg-x-sqlmi", + "routeTableName": "adp-<>-az-udr-x-sqlmi", "serviceEndpoints": [], "delegations": [ { diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/7.virtualHubConnection.parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/7.virtualHubConnection.parameters.json index 1f7ec5975e..ee68e6d7d7 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/7.virtualHubConnection.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/7.virtualHubConnection.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-vnet-x-vhub" + "value": "adp-<>-az-vnet-x-vhub" }, "addressPrefixes": { "value": [ @@ -15,7 +15,7 @@ { "name": "default", // Hub connection subnet "addressPrefix": "10.7.0.0/24", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-001" + "networkSecurityGroupName": "adp-<>-az-nsg-x-001" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/parameters.json index 9d21ac6034..30f8c90768 100644 --- a/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Network/virtualNetworks/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-vnet-x-001" + "value": "adp-<>-az-vnet-x-001" }, "addressPrefixes": { "value": [ @@ -17,9 +17,9 @@ "addressPrefix": "10.0.255.0/24" }, { - "name": "sxx-az-subnet-x-001", // VM subnet + "name": "<>-az-subnet-x-001", // VM subnet "addressPrefix": "10.0.0.0/24", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-001", + "networkSecurityGroupName": "adp-<>-az-nsg-x-001", "serviceEndpoints": [ "Microsoft.EventHub", "Microsoft.Sql", @@ -28,9 +28,9 @@ ] }, { - "name": "sxx-az-subnet-x-002", // VMSS subnet + "name": "<>-az-subnet-x-002", // VMSS subnet "addressPrefix": "10.0.1.0/24", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-001", + "networkSecurityGroupName": "adp-<>-az-nsg-x-001", "serviceEndpoints": [ "Microsoft.EventHub", "Microsoft.Sql", @@ -39,15 +39,15 @@ ] }, { - "name": "sxx-az-subnet-x-003", // ServiceBus subnet + "name": "<>-az-subnet-x-003", // ServiceBus subnet "addressPrefix": "10.0.2.0/24", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-001", + "networkSecurityGroupName": "adp-<>-az-nsg-x-001", "serviceEndpoints": [ "Microsoft.ServiceBus" ] }, { - "name": "sxx-az-subnet-x-004", // ANF subnet + "name": "<>-az-subnet-x-004", // ANF subnet "addressPrefix": "10.0.3.0/24", "delegations": [ { @@ -61,24 +61,24 @@ { "name": "AzureBastionSubnet", // Bastion subnet "addressPrefix": "10.0.5.0/24", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-bastion" + "networkSecurityGroupName": "adp-<>-az-nsg-x-bastion" }, { - "name": "sxx-az-subnet-x-005-privateEndpoints", // PE subnet + "name": "<>-az-subnet-x-005-privateEndpoints", // PE subnet "addressPrefix": "10.0.6.0/24", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-001", + "networkSecurityGroupName": "adp-<>-az-nsg-x-001", "privateEndpointNetworkPolicies": "Disabled", // This property must be set to disabled for subnets that contain private endpoints. It confirms that NSGs rules will not apply to private endpoints (currently not supported). Default Value when not specified is "Enabled". "privateLinkServiceNetworkPolicies": "Enabled" }, { - "name": "sxx-az-subnet-x-006", // ASE subnet + "name": "<>-az-subnet-x-006", // ASE subnet "addressPrefix": "10.0.7.0/24", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-ase" + "networkSecurityGroupName": "adp-<>-az-nsg-x-ase" }, { - "name": "sxx-az-subnet-x-007", // APGW subnet + "name": "<>-az-subnet-x-007", // APGW subnet "addressPrefix": "10.0.8.0/24", - "networkSecurityGroupName": "adp-sxx-az-nsg-x-apgw" + "networkSecurityGroupName": "adp-<>-az-nsg-x-apgw" } ] } diff --git a/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/appi.parameters.json b/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/appi.parameters.json index 728d2b303f..5af16c4175 100644 --- a/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/appi.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/appi.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-law-x-002" + "value": "adp-<>-az-law-x-002" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/parameters.json index cd8acb2eef..b371f4878a 100644 --- a/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.OperationalInsights/workspaces/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-law-x-001" + "value": "adp-<>-az-law-x-001" } } } diff --git a/utilities/pipelines/dependencies/Microsoft.RecoveryServices/vaults/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.RecoveryServices/vaults/parameters/parameters.json index 258acb9495..6a6c15ed6e 100644 --- a/utilities/pipelines/dependencies/Microsoft.RecoveryServices/vaults/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.RecoveryServices/vaults/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-rsv-x-001" + "value": "adp-<>-az-rsv-x-001" }, "diagnosticLogsRetentionInDays": { "value": 7 diff --git a/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/fa.parameters.json b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/fa.parameters.json index 101f40d842..386a6f4ff2 100644 --- a/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/fa.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/fa.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adpsxxazsafa001" + "value": "adp<>azsafa001" }, "storageAccountKind": { "value": "StorageV2" diff --git a/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/law.parameters.json b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/law.parameters.json index 17b6f21a0e..75347b8412 100644 --- a/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/law.parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/law.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adpsxxazsalaw001" + "value": "adp<>azsalaw001" }, "storageAccountKind": { "value": "StorageV2" diff --git a/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/parameters.json index 1dcb375152..c59c5309b4 100644 --- a/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.Storage/storageAccounts/parameters/parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adpsxxazsax001" + "value": "adp<>azsax001" }, "storageAccountKind": { "value": "StorageV2" diff --git a/utilities/pipelines/dependencies/Microsoft.VirtualMachineImages/imageTemplates/parameters/parameters.json b/utilities/pipelines/dependencies/Microsoft.VirtualMachineImages/imageTemplates/parameters/parameters.json index 12f647476c..bcd7851209 100644 --- a/utilities/pipelines/dependencies/Microsoft.VirtualMachineImages/imageTemplates/parameters/parameters.json +++ b/utilities/pipelines/dependencies/Microsoft.VirtualMachineImages/imageTemplates/parameters/parameters.json @@ -3,10 +3,10 @@ "contentVersion": "1.0.0.0", "parameters": { "name": { - "value": "adp-sxx-az-imgt-x-001" + "value": "adp-<>-az-imgt-x-001" }, "userMsiName": { - "value": "adp-sxx-az-msi-x-001" + "value": "adp-<>-az-msi-x-001" }, "userMsiResourceGroup": { "value": "validation-rg" @@ -38,7 +38,7 @@ ] }, "unManagedImageName": { - "value": "adp-sxx-az-umi-x-001" + "value": "adp-<>-az-umi-x-001" } } } From 7ae14bb8c66a0e5b7cc75e2b69e2bfcf62c56614 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 16:31:08 +0100 Subject: [PATCH 15/36] Further rollbacks --- .../routeTables/.parameters/parameters.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arm/Microsoft.Network/routeTables/.parameters/parameters.json b/arm/Microsoft.Network/routeTables/.parameters/parameters.json index 1a794ed96c..edd5dba921 100644 --- a/arm/Microsoft.Network/routeTables/.parameters/parameters.json +++ b/arm/Microsoft.Network/routeTables/.parameters/parameters.json @@ -16,6 +16,16 @@ } } ] + }, + "roleAssignments": { + "value": [ + { + "roleDefinitionIdOrName": "Reader", + "principalIds": [ + "<>" + ] + } + ] } } } From 9df1eaf1f7c3ff141976c7652adbaefe796e48c4 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 17:19:33 +0100 Subject: [PATCH 16/36] Small update --- utilities/tools/Test-ModuleLocally.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 80fa4541a9..8fceaa91d5 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -187,7 +187,7 @@ function Test-ModuleLocally { } # Tokens in settings.json - $settingsFilePath = Join-Path $PSScriptRoot '../..' 'settings.json' + $settingsFilePath = Join-Path (Get-Item $PSScriptRoot).Parent.Parent 'settings.json' if (Test-Path $settingsFilePath) { $Settings = Get-Content -Path $settingsFilePath -Raw | ConvertFrom-Json -AsHashtable $ConvertTokensInputs += @{ From dc34b9ec35916348cbd157d83c4dd448bab2fd9c Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 18:08:04 +0100 Subject: [PATCH 17/36] Minor update --- utilities/tools/Test-ModuleLocally.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 8fceaa91d5..87afa53b12 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -136,7 +136,7 @@ function Test-ModuleLocally { try { Invoke-Pester -Configuration @{ Run = @{ - Container = New-PesterContainer -Path (Join-Path $PSScriptRoot '../..' 'arm/.global/global.module.tests.ps1') -Data @{ + Container = New-PesterContainer -Path (Join-Path (Get-Item $PSScriptRoot).Parent.Parent 'arm/.global/global.module.tests.ps1') -Data @{ moduleFolderPaths = Split-Path $templateFilePath -Parent } } From c09c5a05bd1b05e021b83a4e10bb7ba43625bf33 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 19:04:29 +0100 Subject: [PATCH 18/36] Minor cleanup in docs --- utilities/tools/Test-ModuleLocally.ps1 | 1 - 1 file changed, 1 deletion(-) diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 87afa53b12..c3cd9441ca 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -80,7 +80,6 @@ Run all Pesters test for a given template and a Test-Az*Deployment using each pa $TestModuleLocallyInput = @{ templateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' - parameterFilePath = 'C:\Microsoft.Network\routeTables\.parameters\parameters.json' PesterTest = $true } Test-ModuleLocally @TestModuleLocallyInput -Verbose From eb929a35003f3b425ac0fc006ba59fe8a38b3e23 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Fri, 4 Feb 2022 20:01:55 +0100 Subject: [PATCH 19/36] Further simplificatin --- settings.json | 2 +- utilities/tools/Test-ModuleLocally.ps1 | 13 ++----------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/settings.json b/settings.json index c02181681c..efd6f58988 100644 --- a/settings.json +++ b/settings.json @@ -3,7 +3,7 @@ "tokenPrefix": "<<", "tokenSuffix": ">>", "localTokens": { - "namePrefix": "sxx" // A 3-5 character length string, included in the resources names + "namePrefix": "sxx" // A 3-4 character length string, included in the resources names } } } diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index c3cd9441ca..3a8eca21be 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -134,20 +134,12 @@ function Test-ModuleLocally { Write-Verbose "Pester Testing Module: $ModuleName" try { Invoke-Pester -Configuration @{ - Run = @{ + Run = @{ Container = New-PesterContainer -Path (Join-Path (Get-Item $PSScriptRoot).Parent.Parent 'arm/.global/global.module.tests.ps1') -Data @{ moduleFolderPaths = Split-Path $templateFilePath -Parent } } - Filter = @{ - #ExcludeTag = 'ApiCheck' - #Tag = 'ApiCheck' - } - TestResult = @{ - TestSuiteName = 'Global Module Tests' - Enabled = $false - } - Output = @{ + Output = @{ Verbosity = 'Detailed' } } @@ -239,7 +231,6 @@ function Test-ModuleLocally { } catch { Write-Error $_ } finally { - # Restore parameter files # ----------------------- if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters -and -not $RestoreAlreadyTriggered) { From aecc29aef6dd1b4adc69066ea86fa894fd9c2a1b Mon Sep 17 00:00:00 2001 From: MrMCake Date: Sat, 5 Feb 2022 14:12:13 +0100 Subject: [PATCH 20/36] Updated dependency pipeline & docs --- .../platform.dependencies.yml | 30 +++++++++---------- .github/workflows/platform.dependencies.yml | 30 +++++++++---------- .../Convert-TokensInParameterFile.ps1 | 10 ++----- 3 files changed, 32 insertions(+), 38 deletions(-) diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index 755b70a2be..a711bdc729 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -195,10 +195,10 @@ stages: # Replace tokens in parameter file $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + ParameterFilePath = $parameterFilePath + ParameterFileTokens = $Settings.parameterFileTokens.localTokens + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose @@ -312,9 +312,9 @@ stages: # Prepare replace tokens in parameter file $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json $ConvertTokensInputs = @{ - LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + ParameterFileTokens = $Settings.parameterFileTokens.localTokens + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } # Retrieving parameters from previous job outputs and parameter files @@ -612,10 +612,10 @@ stages: # Replace tokens in parameter file $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + ParameterFilePath = $parameterFilePath + ParameterFileTokens = $Settings.parameterFileTokens.localTokens + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose @@ -709,10 +709,10 @@ stages: # Replace tokens in parameter file $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + ParameterFilePath = $parameterFilePath + ParameterFileTokens = $Settings.parameterFileTokens.localTokens + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 8cf071085f..2872d9ab63 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -252,10 +252,10 @@ jobs: # Replace tokens in parameter file $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + ParameterFilePath = $parameterFilePath + ParameterFileTokens = $Settings.parameterFileTokens.localTokens + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose @@ -405,9 +405,9 @@ jobs: # Prepare replace tokens in parameter file $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json $ConvertTokensInputs = @{ - LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + ParameterFileTokens = $Settings.parameterFileTokens.localTokens + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } # Retrieving parameters from previous job outputs and parameter files @@ -857,10 +857,10 @@ jobs: # Replace tokens in parameter file $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + ParameterFilePath = $parameterFilePath + ParameterFileTokens = $Settings.parameterFileTokens.localTokens + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose @@ -987,10 +987,10 @@ jobs: # Replace tokens in parameter file $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - LocalCustomParameterFileTokens = $Settings.parameterFileTokens.localTokens.tokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + ParameterFilePath = $parameterFilePath + ParameterFileTokens = $Settings.parameterFileTokens.localTokens + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose diff --git a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 index 73cae2dd02..9c8c9034b2 100644 --- a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 +++ b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 @@ -8,11 +8,8 @@ This Function aggregates all the different token types (Default and Local) and t .PARAMETER ParameterFilePath Mandatory. The Path to the Parameter File that contains tokens to be replaced. -.PARAMETER DefaultParameterFileTokens -Optional. An object containing the default parameter file tokens that are always available. - -.PARAMETER LocalCustomParameterFileTokens -Optional. An object containing the local parameter file tokens to be injected for replacement +.PARAMETER ParameterFileTokens +Optional. An object containing the parameter file tokens to set .PARAMETER TokenPrefix Mandatory. The prefix used to identify a token in the parameter file (i.e. <<) @@ -20,9 +17,6 @@ Mandatory. The prefix used to identify a token in the parameter file (i.e. <<) .PARAMETER TokenSuffix Mandatory. The suffix used to identify a token in the parameter file (i.e. >>) -.PARAMETER OtherCustomParameterFileTokens -Optional. An object containing other optional tokens that are to be replaced in the parameter file (used for testing) - .PARAMETER SwapValueWithName Optional. A boolean that enables the search for the original value and replaces it with a token. Used to revert configuration. Default is false From 1d0f4f08e3e8a623136ae5a84f48f23e3f452ec0 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Sat, 5 Feb 2022 14:30:16 +0100 Subject: [PATCH 21/36] Minor fix --- .azuredevops/platformPipelines/platform.dependencies.yml | 8 ++++---- .github/workflows/platform.dependencies.yml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index a711bdc729..1aef210d88 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -193,7 +193,7 @@ stages: . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') # Replace tokens in parameter file - $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json + $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFilePath = $parameterFilePath ParameterFileTokens = $Settings.parameterFileTokens.localTokens @@ -310,7 +310,7 @@ stages: . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') # Prepare replace tokens in parameter file - $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json + $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFileTokens = $Settings.parameterFileTokens.localTokens TokenPrefix = $Settings.parameterFileTokens.tokenPrefix @@ -610,7 +610,7 @@ stages: . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') # Replace tokens in parameter file - $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json + $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFilePath = $parameterFilePath ParameterFileTokens = $Settings.parameterFileTokens.localTokens @@ -707,7 +707,7 @@ stages: . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') # Replace tokens in parameter file - $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json + $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFilePath = $parameterFilePath ParameterFileTokens = $Settings.parameterFileTokens.localTokens diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 2872d9ab63..298382525a 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -250,7 +250,7 @@ jobs: . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') # Replace tokens in parameter file - $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json + $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFilePath = $parameterFilePath ParameterFileTokens = $Settings.parameterFileTokens.localTokens @@ -403,7 +403,7 @@ jobs: . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') # Prepare replace tokens in parameter file - $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json + $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFileTokens = $Settings.parameterFileTokens.localTokens TokenPrefix = $Settings.parameterFileTokens.tokenPrefix @@ -855,7 +855,7 @@ jobs: . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') # Replace tokens in parameter file - $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json + $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFilePath = $parameterFilePath ParameterFileTokens = $Settings.parameterFileTokens.localTokens @@ -985,7 +985,7 @@ jobs: . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') # Replace tokens in parameter file - $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json + $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFilePath = $parameterFilePath ParameterFileTokens = $Settings.parameterFileTokens.localTokens From d9397c2840b82071203c527c3177b081293a7444 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Sat, 5 Feb 2022 15:19:37 +0100 Subject: [PATCH 22/36] Updated token handling --- .../platformPipelines/platform.dependencies.yml | 10 +++++----- .../templates/validateModuleDeployment/action.yml | 2 +- .github/workflows/platform.dependencies.yml | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index 1aef210d88..a715299d5f 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -540,7 +540,7 @@ stages: - path: $(dependencyPath)/$(resourceType)/parameters/parameters.json templateFilePath: $(templateFilePath) displayName: Default recovery services vault - customParameterFileTokens: '[{"Name":"msiPrincipalId","Value":"$(msiPrincipalId)"}]' + customParameterFileTokens: '{"msiPrincipalId":"$(msiPrincipalId)"}' - stage: deploy_kv displayName: Deploy key vaults @@ -561,17 +561,17 @@ stages: templateFilePath: $(templateFilePath) displayName: Default Key Vault jobName: default_kv - customParameterFileTokens: '[{"Name":"msiPrincipalId","Value":"$(msiPrincipalId)"}]' + customParameterFileTokens: '{"msiPrincipalId":"$(msiPrincipalId)"}' - path: $(dependencyPath)/$(resourceType)/parameters/pe.parameters.json templateFilePath: $(templateFilePath) displayName: Private Endpoint Key Vault - customParameterFileTokens: '[{"Name":"msiPrincipalId","Value":"$(msiPrincipalId)"}]' + customParameterFileTokens: '{"msiPrincipalId":"$(msiPrincipalId)"}' - ${{ if eq( parameters.deploySqlMiDependencies, true) }}: - path: $(dependencyPath)/$(resourceType)/parameters/sqlmi.parameters.json templateFilePath: $(templateFilePath) displayName: SQLMI key vault jobName: sqlmi_kv - customParameterFileTokens: '[{"Name":"msiPrincipalId","Value":"$(msiPrincipalId)"}]' + customParameterFileTokens: '{"msiPrincipalId":"$(msiPrincipalId)"}' - job: displayName: Set key vault secrets keys and certificates dependsOn: @@ -777,7 +777,7 @@ stages: - path: $(dependencyPath)/$(resourceType)/parameters/parameters.json templateFilePath: $(templateFilePath) displayName: MSI Role Assignment - customParameterFileTokens: '[{"Name":"msiPrincipalId","Value":"$(msiPrincipalId)"}]' + customParameterFileTokens: '{"msiPrincipalId":"$(msiPrincipalId)"}' - stage: deploy_vnet displayName: Deploy virtual networks diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 376c4be127..28f04694a0 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -21,7 +21,7 @@ inputs: description: 'The managementGroupId to deploy to' required: false customParameterFileTokens: - description: 'Additional parameter file token pairs in json format. e.g. [{"Name":"tokenName","Value":"tokenValue"}]' + description: 'Additional parameter file token pairs in json format. e.g. {"tokenName":"tokenValue"}' required: false removeDeployment: description: 'Set "true" to set module up for removal' diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 298382525a..458ddc0587 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -782,7 +782,7 @@ jobs: subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' managementGroupId: '${{ secrets.ARM_MGMTGROUP_ID }}' removeDeployment: '${{ env.removeDeployment }}' - customParameterFileTokens: '[{"Name":"msiPrincipalId","Value":"${{ needs.job_deploy_msi.outputs.msiPrincipalId }}"}]' + customParameterFileTokens: '{"msiPrincipalId":"${{ needs.job_deploy_msi.outputs.msiPrincipalId }}"}' job_deploy_kv: runs-on: ubuntu-20.04 @@ -813,7 +813,7 @@ jobs: subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' managementGroupId: '${{ secrets.ARM_MGMTGROUP_ID }}' removeDeployment: '${{ env.removeDeployment }}' - customParameterFileTokens: '[{"Name":"msiPrincipalId","Value":"${{ needs.job_deploy_msi.outputs.msiPrincipalId }}"}]' + customParameterFileTokens: '{"msiPrincipalId":"${{ needs.job_deploy_msi.outputs.msiPrincipalId }}"}' job_deploy_kv_secrets: runs-on: ubuntu-20.04 @@ -941,7 +941,7 @@ jobs: subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' managementGroupId: '${{ secrets.ARM_MGMTGROUP_ID }}' removeDeployment: '${{ env.removeDeployment }}' - customParameterFileTokens: '[{"Name":"msiPrincipalId","Value":"${{ needs.job_deploy_msi.outputs.msiPrincipalId }}"}]' + customParameterFileTokens: '{"msiPrincipalId":"${{ needs.job_deploy_msi.outputs.msiPrincipalId }}"}' job_deploy_sqlmi_kv_secrets: runs-on: ubuntu-20.04 @@ -1077,7 +1077,7 @@ jobs: subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' managementGroupId: '${{ secrets.ARM_MGMTGROUP_ID }}' removeDeployment: '${{ env.removeDeployment }}' - customParameterFileTokens: '[{"Name":"msiPrincipalId","Value":"${{ needs.job_deploy_msi.outputs.msiPrincipalId }}"}]' + customParameterFileTokens: '{"msiPrincipalId":"${{ needs.job_deploy_msi.outputs.msiPrincipalId }}"}' job_deploy_vnet: runs-on: ubuntu-20.04 From 3267085cf39329cd81fff9d36847fc4f7f1cdf7b Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 8 Feb 2022 09:46:21 +0100 Subject: [PATCH 23/36] Updated settings.json --- .../jobs.validateModuleDeployment.yml | 10 +++++++--- .../validateModuleDeployment/action.yml | 8 ++++++-- settings.json | 12 +++++++++--- .../helper/Get-DependencyResourceNameList.ps1 | 18 +++++++++++++----- .../Convert-TokensInParameterFile.ps1 | 2 +- 5 files changed, 36 insertions(+), 14 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 748f6e79af..56c9fb83fb 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -182,14 +182,18 @@ jobs: } if ($Settings.parameterFileTokens.localTokens) { - Write-Verbose ('Using local tokens [{0}]' -f ($Settings.parameterFileTokens.localTokens.Keys -join ', ')) -Verbose - $ConvertTokensInputs.ParameterFileTokens += $Settings.parameterFileTokens.localTokens + $tokenMap = @{} + foreach($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap[$token.Name] = $token.Value + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.ParameterFileTokens += $tokenMap } if(-not [String]::IsNullOrEmpty('${{ deploymentBlock.customParameterFileTokens }}')) { $customTokens = '${{ deploymentBlock.customParameterFileTokens }}' | ConvertFrom-Json -AsHashTable Write-Verbose ('Using custom parameter file tokens [{0}]' -f ($customTokens.Keys -join ', ')) -Verbose - $ConvertTokensInputs.ParameterFileTokens += $customTokens + $ConvertTokensInputs.ParameterFileTokens += $customTokens } # Invoke Token Replacement Functionality diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 28f04694a0..85226fcb7f 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -96,8 +96,12 @@ runs: } if ($Settings.parameterFileTokens.localTokens) { - Write-Verbose ('Using local tokens [{0}]' -f ($Settings.parameterFileTokens.localTokens.Keys -join ', ')) -Verbose - $ConvertTokensInputs.ParameterFileTokens += $Settings.parameterFileTokens.localTokens + $tokenMap = @{} + foreach($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap[$token.Name] = $token.Value + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.ParameterFileTokens += $tokenMap } if(-not [String]::IsNullOrEmpty('${{ inputs.customParameterFileTokens }}')) { diff --git a/settings.json b/settings.json index efd6f58988..6db8ca684d 100644 --- a/settings.json +++ b/settings.json @@ -2,8 +2,14 @@ "parameterFileTokens": { "tokenPrefix": "<<", "tokenSuffix": ">>", - "localTokens": { - "namePrefix": "sxx" // A 3-4 character length string, included in the resources names - } + "localTokens": [ + { + "name": "namePrefix", + "value": "sxx", + "metadata": { + "description": "A 3-4 character length string, included in the resources names" + } + } + ] } } diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index 65d58ba148..55c83870aa 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -36,15 +36,23 @@ function Get-DependencyResourceNameList { $Settings = Get-Content -Path (Join-Path $repoRootPath 'settings.json') | ConvertFrom-Json -AsHashtable foreach ($parameterFilePath in $parameterFilePaths) { $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - ParameterFileTokens = $Settings.parameterFileTokens.localTokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix - Verbose = $false + ParameterFilePath = $parameterFilePath + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + Verbose = $false } $null = Convert-TokensInParameterFile @ConvertTokensInputs } + if ($Settings.parameterFileTokens.localTokens) { + $tokenMap = @{} + foreach ($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap[$token.Name] = $token.Value + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.ParameterFileTokens = $tokenMap + } + $dependencyResourceNames = [System.Collections.ArrayList]@() foreach ($parameterFilePath in $parameterFilePaths) { $paramFileContent = ConvertFrom-Json (Get-Content -Path $parameterFilePath -Raw) diff --git a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 index 9c8c9034b2..97202b5bd8 100644 --- a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 +++ b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 @@ -40,7 +40,7 @@ function Convert-TokensInParameterFile { [string] $ParameterFilePath, [parameter(Mandatory = $false)] - [hashtable] $ParameterFileTokens = @(), + [hashtable] $ParameterFileTokens = @{}, [parameter(Mandatory = $true)] [string] $TokenPrefix, From f40a3553e1bb1d54af28b6fb4d4fd74c3ea66f63 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 8 Feb 2022 09:56:52 +0100 Subject: [PATCH 24/36] Minor fix --- .../pipelineTemplates/jobs.validateModuleDeployment.yml | 4 ++-- .../actions/templates/validateModuleDeployment/action.yml | 5 +++-- .../helper/Get-DependencyResourceNameList.ps1 | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 56c9fb83fb..a93981f606 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -183,8 +183,8 @@ jobs: if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} - foreach($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap[$token.Name] = $token.Value + foreach ($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap += @{$token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.ParameterFileTokens += $tokenMap diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 85226fcb7f..8044a43f24 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -97,8 +97,9 @@ runs: if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} - foreach($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap[$token.Name] = $token.Value + $tokenMap = @{} + foreach ($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap += @{$token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.ParameterFileTokens += $tokenMap diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index 55c83870aa..3a5de43fd8 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -47,7 +47,7 @@ function Get-DependencyResourceNameList { if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap[$token.Name] = $token.Value + $tokenMap += @{$token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.ParameterFileTokens = $tokenMap From 17920060a9317fc54981f242d1d98795e18b92f2 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 8 Feb 2022 10:21:20 +0100 Subject: [PATCH 25/36] added missing SA conversion --- .azuredevops/platformPipelines/platform.dependencies.yml | 9 ++++++++- .github/workflows/platform.dependencies.yml | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index a715299d5f..37b2e4dc82 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -196,10 +196,17 @@ stages: $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFilePath = $parameterFilePath - ParameterFileTokens = $Settings.parameterFileTokens.localTokens TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + if ($Settings.parameterFileTokens.localTokens) { + $tokenMap = @{} + foreach ($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap += @{$token.name = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.ParameterFileTokens = $tokenMap + } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose # Get storage account name diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 458ddc0587..1ea9b34b3b 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -253,10 +253,17 @@ jobs: $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFilePath = $parameterFilePath - ParameterFileTokens = $Settings.parameterFileTokens.localTokens TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + if ($Settings.parameterFileTokens.localTokens) { + $tokenMap = @{} + foreach ($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap += @{$token.name = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.ParameterFileTokens = $tokenMap + } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose # Get storage account name From 6ab377abd35d6fc15b533613e043d1a33cfa822e Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 8 Feb 2022 10:23:23 +0100 Subject: [PATCH 26/36] Fixed further locations --- .azuredevops/platformPipelines/platform.dependencies.yml | 9 ++++++++- .github/workflows/platform.dependencies.yml | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index 37b2e4dc82..78aa16b058 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -620,10 +620,17 @@ stages: $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFilePath = $parameterFilePath - ParameterFileTokens = $Settings.parameterFileTokens.localTokens TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + if ($Settings.parameterFileTokens.localTokens) { + $tokenMap = @{} + foreach ($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap += @{$token.name = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.ParameterFileTokens = $tokenMap + } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose # Get key vault name diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 1ea9b34b3b..083aa45b13 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -865,10 +865,17 @@ jobs: $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFilePath = $parameterFilePath - ParameterFileTokens = $Settings.parameterFileTokens.localTokens TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + if ($Settings.parameterFileTokens.localTokens) { + $tokenMap = @{} + foreach ($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap += @{$token.name = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.ParameterFileTokens = $tokenMap + } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose # Get key vault name From 316f07b4713caefe1df804d02fe93f4cc69f3edf Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 8 Feb 2022 11:41:20 +0100 Subject: [PATCH 27/36] Renamed param --- .../jobs.validateModuleDeployment.yml | 8 ++--- .../platform.dependencies.yml | 31 +++++++++++++------ .../validateModuleDeployment/action.yml | 13 ++++---- .github/workflows/platform.dependencies.yml | 24 +++++++++++--- .../helper/Get-DependencyResourceNameList.ps1 | 17 +++++----- .../Convert-TokensInParameterFile.ps1 | 6 ++-- utilities/tools/Test-ModuleLocally.ps1 | 6 ++-- 7 files changed, 65 insertions(+), 40 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index a93981f606..deecb7bb32 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -169,7 +169,7 @@ jobs: # Construct Token Function Input $ConvertTokensInputs = @{ - ParameterFileTokens = @{ + Tokens = @{ resourceGroupName = '${{ parameters.resourceGroupName }}' subscriptionId = '${{ parameters.subscriptionId }}' managementGroupId = '${{ parameters.managementGroupId }}' @@ -184,16 +184,16 @@ jobs: if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{$token.name = $token.value } + $tokenMap += @{ $token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.ParameterFileTokens += $tokenMap + $ConvertTokensInputs.Tokens += $tokenMap } if(-not [String]::IsNullOrEmpty('${{ deploymentBlock.customParameterFileTokens }}')) { $customTokens = '${{ deploymentBlock.customParameterFileTokens }}' | ConvertFrom-Json -AsHashTable Write-Verbose ('Using custom parameter file tokens [{0}]' -f ($customTokens.Keys -join ', ')) -Verbose - $ConvertTokensInputs.ParameterFileTokens += $customTokens + $ConvertTokensInputs.Tokens += $customTokens } # Invoke Token Replacement Functionality diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index 78aa16b058..6834134994 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -202,10 +202,10 @@ stages: if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{$token.name = $token.value } + $tokenMap += @{ $token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.ParameterFileTokens = $tokenMap + $ConvertTokensInputs.Tokens = $tokenMap } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose @@ -319,9 +319,16 @@ stages: # Prepare replace tokens in parameter file $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ - ParameterFileTokens = $Settings.parameterFileTokens.localTokens - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + } + if ($Settings.parameterFileTokens.localTokens) { + $tokenMap = @{} + foreach ($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap += @{ $token.name = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens = $tokenMap } # Retrieving parameters from previous job outputs and parameter files @@ -611,7 +618,6 @@ stages: azureSubscription: $(serviceConnection) ScriptType: 'InlineScript' Inline: | - $parameterFilePath = Join-Path '$(Build.SourcesDirectory)' '$(dependencyPath)' '$(resourceType)' 'parameters' 'parameters.json' # Load used functions . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') @@ -626,10 +632,10 @@ stages: if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{$token.name = $token.value } + $tokenMap += @{ $token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.ParameterFileTokens = $tokenMap + $ConvertTokensInputs.Tokens = $tokenMap } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose @@ -724,10 +730,17 @@ stages: $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFilePath = $parameterFilePath - ParameterFileTokens = $Settings.parameterFileTokens.localTokens TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + if ($Settings.parameterFileTokens.localTokens) { + $tokenMap = @{} + foreach ($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap += @{ $token.name = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens = $tokenMap + } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose # Get key vault name diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 8044a43f24..23435370bc 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -83,7 +83,7 @@ runs: # Construct Token Function Input $ConvertTokensInputs = @{ - ParameterFileTokens = @{ + Tokens = @{ resourceGroupName = '${{ inputs.resourceGroupName }}' subscriptionId = '${{ inputs.subscriptionId }}' managementGroupId = '${{ inputs.managementGroupId }}' @@ -96,19 +96,18 @@ runs: } if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{$token.name = $token.value } + $tokenMap += @{ $token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.ParameterFileTokens += $tokenMap + $ConvertTokensInputs.Tokens += $tokenMap } if(-not [String]::IsNullOrEmpty('${{ inputs.customParameterFileTokens }}')) { - $customTokens = '${{ inputs.customParameterFileTokens }}' | ConvertFrom-Json -AsHashTable - Write-Verbose ('Using custom parameter file tokens [{0}]' -f ($customTokens.Keys -join ', ')) -Verbose - $ConvertTokensInputs.ParameterFileTokens += $customTokens + $customTokens = '${{ inputs.customParameterFileTokens }}' | ConvertFrom-Json -AsHashTable + Write-Verbose ('Using custom parameter file tokens [{0}]' -f ($customTokens.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens += $customTokens } # Invoke Token Replacement Functionality diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 083aa45b13..3c13286e05 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -259,10 +259,10 @@ jobs: if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{$token.name = $token.value } + $tokenMap += @{ $token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.ParameterFileTokens = $tokenMap + $ConvertTokensInputs.Tokens = $tokenMap } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose @@ -412,10 +412,17 @@ jobs: # Prepare replace tokens in parameter file $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ - ParameterFileTokens = $Settings.parameterFileTokens.localTokens TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + if ($Settings.parameterFileTokens.localTokens) { + $tokenMap = @{} + foreach ($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap += @{ $token.name = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens = $tokenMap + } # Retrieving parameters from previous job outputs and parameter files Write-Verbose "Retrieving parameters from previous job outputs" -Verbose @@ -871,7 +878,7 @@ jobs: if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{$token.name = $token.value } + $tokenMap += @{ $token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.ParameterFileTokens = $tokenMap @@ -1002,10 +1009,17 @@ jobs: $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ ParameterFilePath = $parameterFilePath - ParameterFileTokens = $Settings.parameterFileTokens.localTokens TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + if ($Settings.parameterFileTokens.localTokens) { + $tokenMap = @{} + foreach ($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap += @{ $token.name = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens = $tokenMap + } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose # Get key vault name diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index 3a5de43fd8..93a195dec3 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -41,16 +41,15 @@ function Get-DependencyResourceNameList { TokenSuffix = $Settings.parameterFileTokens.tokenSuffix Verbose = $false } - $null = Convert-TokensInParameterFile @ConvertTokensInputs - } - - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{$token.name = $token.value } + if ($Settings.parameterFileTokens.localTokens) { + $tokenMap = @{} + foreach ($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap += @{ $token.name = $token.value } + } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + $ConvertTokensInputs.Tokens = $tokenMap } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.ParameterFileTokens = $tokenMap + $null = Convert-TokensInParameterFile @ConvertTokensInputs } $dependencyResourceNames = [System.Collections.ArrayList]@() diff --git a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 index 97202b5bd8..7163cd9725 100644 --- a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 +++ b/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 @@ -8,7 +8,7 @@ This Function aggregates all the different token types (Default and Local) and t .PARAMETER ParameterFilePath Mandatory. The Path to the Parameter File that contains tokens to be replaced. -.PARAMETER ParameterFileTokens +.PARAMETER Tokens Optional. An object containing the parameter file tokens to set .PARAMETER TokenPrefix @@ -40,7 +40,7 @@ function Convert-TokensInParameterFile { [string] $ParameterFilePath, [parameter(Mandatory = $false)] - [hashtable] $ParameterFileTokens = @{}, + [hashtable] $Tokens = @{}, [parameter(Mandatory = $true)] [string] $TokenPrefix, @@ -62,7 +62,7 @@ function Convert-TokensInParameterFile { process { # Combine All Input Token Types, Remove Duplicates and Only Select entries with on empty values - $FilteredParameterFileTokens = ($ParameterFileTokens | Sort-Object -Unique).Clone() + $FilteredParameterFileTokens = ($Tokens | Sort-Object -Unique).Clone() @($FilteredParameterFileTokens.Keys) | ForEach-Object { if ([String]::IsNullOrEmpty($FilteredParameterFileTokens[$_])) { $FilteredParameterFileTokens.Remove($_) diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 3a8eca21be..ffcecdc938 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -166,7 +166,7 @@ function Test-ModuleLocally { # Default Tokens $ConvertTokensInputs = @{ - ParameterFileTokens = @{ + Tokens = @{ subscriptionId = $ValidateOrDeployParameters.SubscriptionId managementGroupId = $ValidateOrDeployParameters.ManagementGroupId } @@ -174,7 +174,7 @@ function Test-ModuleLocally { #Add Other Parameter File Tokens (For Testing) if ($AdditionalTokens) { - $ConvertTokensInputs.ParameterFileTokens += $AdditionalTokens + $ConvertTokensInputs.Tokens += $AdditionalTokens } # Tokens in settings.json @@ -187,7 +187,7 @@ function Test-ModuleLocally { } if ($Settings.parameterFileTokens.localTokens) { - $ConvertTokensInputs.ParameterFileTokens += $Settings.parameterFileTokens.localTokens + $ConvertTokensInputs.Tokens += $Settings.parameterFileTokens.localTokens } } From ca3d1cc7325c55f20efb5dda0fa7e8eca7e9e43b Mon Sep 17 00:00:00 2001 From: MrMCake Date: Tue, 8 Feb 2022 13:04:21 +0100 Subject: [PATCH 28/36] Small fix --- .github/workflows/platform.dependencies.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 3c13286e05..1c74ba9655 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -881,7 +881,7 @@ jobs: $tokenMap += @{ $token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.ParameterFileTokens = $tokenMap + $ConvertTokensInputs.Tokens = $tokenMap } $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose From ca35930ad3777c4c57c70c83166c4aae6731c3fc Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 9 Feb 2022 08:42:33 +0100 Subject: [PATCH 29/36] Changed casing --- .../helper/Get-DependencyResourceNameList.ps1 | 2 +- utilities/tools/Test-ModuleLocally.ps1 | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index 93a195dec3..b00fa7f8da 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -46,7 +46,7 @@ function Get-DependencyResourceNameList { foreach ($token in $Settings.parameterFileTokens.localTokens) { $tokenMap += @{ $token.name = $token.value } } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) $ConvertTokensInputs.Tokens = $tokenMap } $null = Convert-TokensInParameterFile @ConvertTokensInputs diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index ffcecdc938..7502c2106b 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -7,7 +7,7 @@ This function helps with testing a module locally This function helps with testing a module locally. Use this function To perform Pester testing for a module and then attempting to deploy it. It also allows you to use your own subscription Id, principal Id, tenant ID and other parameters that need to be tokenized. -.PARAMETER templateFilePath +.PARAMETER TemplateFilePath Mandatory. Path to the Bicep/ARM module that is being tested .PARAMETER parameterFilePath @@ -34,7 +34,7 @@ Optional. A hashtable parameter that contains custom tokens to be replaced in th .EXAMPLE $TestModuleLocallyInput = @{ - templateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' + TemplateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' parameterFilePath = 'C:\Microsoft.Network\routeTables\.parameters\parameters.json' PesterTest = $false DeploymentTest = $false @@ -57,7 +57,7 @@ Run a Test-Az*Deployment using a specific parameter-template combination with th .EXAMPLE $TestModuleLocallyInput = @{ - templateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' + TemplateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' PesterTest = $true DeploymentTest = $false ValidationTest = $true @@ -79,7 +79,7 @@ Run all Pesters test for a given template and a Test-Az*Deployment using each pa .EXAMPLE $TestModuleLocallyInput = @{ - templateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' + TemplateFilePath = 'C:\Microsoft.Network\routeTables\deploy.bicep' PesterTest = $true } Test-ModuleLocally @TestModuleLocallyInput -Verbose @@ -95,10 +95,10 @@ function Test-ModuleLocally { [CmdletBinding(SupportsShouldProcess)] param ( [Parameter(Mandatory)] - [string] $templateFilePath, + [string] $TemplateFilePath, [Parameter(Mandatory = $false)] - [string] $parameterFilePath = (Join-Path (Split-Path $templateFilePath -Parent) '.parameters'), + [string] $parameterFilePath = (Join-Path (Split-Path $TemplateFilePath -Parent) '.parameters'), [Parameter(Mandatory = $false)] [Psobject] $ValidateOrDeployParameters = @{}, @@ -117,7 +117,7 @@ function Test-ModuleLocally { ) begin { - $ModuleName = Split-Path (Split-Path $templateFilePath -Parent) -Leaf + $ModuleName = Split-Path (Split-Path $TemplateFilePath -Parent) -Leaf Write-Verbose "Running Local Tests for $($ModuleName)" # Load Tokens Converter Scripts . (Join-Path $PSScriptRoot '../pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1') @@ -136,7 +136,7 @@ function Test-ModuleLocally { Invoke-Pester -Configuration @{ Run = @{ Container = New-PesterContainer -Path (Join-Path (Get-Item $PSScriptRoot).Parent.Parent 'arm/.global/global.module.tests.ps1') -Data @{ - moduleFolderPaths = Split-Path $templateFilePath -Parent + moduleFolderPaths = Split-Path $TemplateFilePath -Parent } } Output = @{ @@ -197,7 +197,7 @@ function Test-ModuleLocally { # Deployment & Validation Testing # ------------------------------- $functionInput = @{ - templateFilePath = $templateFilePath + TemplateFilePath = $TemplateFilePath location = $ValidateOrDeployParameters.Location resourceGroupName = $ValidateOrDeployParameters.ResourceGroupName subscriptionId = $ValidateOrDeployParameters.SubscriptionId From 177fc0fa2facbd796754dd6d94685c80774b0eb7 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 9 Feb 2022 08:50:34 +0100 Subject: [PATCH 30/36] Renamed file & parameters as per comments --- .../jobs.validateModuleDeployment.yml | 12 +++---- .../platform.dependencies.yml | 36 +++++++++---------- .../validateModuleDeployment/action.yml | 12 +++---- .github/workflows/platform.dependencies.yml | 30 ++++++++-------- .../helper/Get-DependencyResourceNameList.ps1 | 11 +++--- ...meterFile.ps1 => Convert-TokensInFile.ps1} | 28 +++++++-------- utilities/tools/Test-ModuleLocally.ps1 | 6 ++-- 7 files changed, 67 insertions(+), 68 deletions(-) rename utilities/pipelines/tokensReplacement/{Convert-TokensInParameterFile.ps1 => Convert-TokensInFile.ps1} (74%) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index deecb7bb32..831bbeb323 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -162,23 +162,23 @@ jobs: pwsh: true inline: | # Load used functions - . (Join-Path '$(moduleRepoRoot)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + . (Join-Path '$(moduleRepoRoot)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') # Load Settings File $Settings = Get-Content -Path (Join-Path '$(moduleRepoRoot)' 'settings.json') | ConvertFrom-Json -AsHashTable # Construct Token Function Input $ConvertTokensInputs = @{ - Tokens = @{ + Tokens = @{ resourceGroupName = '${{ parameters.resourceGroupName }}' subscriptionId = '${{ parameters.subscriptionId }}' managementGroupId = '${{ parameters.managementGroupId }}' tenantId = '$(ARM_TENANT_ID)' deploymentSpId = '$(DEPLOYMENT_SP_ID)' } - ParameterFilePath = Join-Path '$(parametersRepoRoot)' '${{ deploymentBlock.path }}' - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + FilePath = Join-Path '$(parametersRepoRoot)' '${{ deploymentBlock.path }}' + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } if ($Settings.parameterFileTokens.localTokens) { @@ -197,7 +197,7 @@ jobs: } # Invoke Token Replacement Functionality - $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs -Verbose # [Validation] task(s) #--------------------- diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index 6834134994..359d4ae065 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -190,14 +190,14 @@ stages: $parameterFilePath = Join-Path '$(Build.SourcesDirectory)' '$(dependencyPath)' '$(resourceType)' 'parameters' 'parameters.json' # Load used functions . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'sharedScripts' 'Export-ContentToBlob.ps1') - . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') # Replace tokens in parameter file $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + FilePath = $parameterFilePath + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} @@ -207,7 +207,7 @@ stages: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens = $tokenMap } - $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs -Verbose # Get storage account name $storageAccountParameters = (ConvertFrom-Json (Get-Content -path $parameterFilePath -Raw)).parameters @@ -314,7 +314,7 @@ stages: Inline: | # Load used functions - . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') # Prepare replace tokens in parameter file $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable @@ -338,12 +338,12 @@ stages: Write-Verbose "Retrieving parameters from storage account parameter files" -Verbose $parameterFilePath = Join-Path '$(Build.SourcesDirectory)' '$(dependencyPath)' '$(saResourceType)' 'parameters' 'parameters.json' - $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $parameterFilePath -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $parameterFilePath -Verbose $storageAccountParameters = (ConvertFrom-Json (Get-Content -path $parameterFilePath -Raw)).parameters Write-Verbose "Retrieving parameters from image template parameter files" -Verbose $parameterFilePath = Join-Path '$(Build.SourcesDirectory)' '$(dependencyPath)' '$(resourceType)' 'parameters' 'parameters.json' - $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $parameterFilePath -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $parameterFilePath -Verbose $imageTemplateParameters = (ConvertFrom-Json (Get-Content -path $parameterFilePath -Raw)).parameters # Initializing parameters before the blob copy @@ -620,14 +620,14 @@ stages: Inline: | $parameterFilePath = Join-Path '$(Build.SourcesDirectory)' '$(dependencyPath)' '$(resourceType)' 'parameters' 'parameters.json' # Load used functions - . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') # Replace tokens in parameter file $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + FilePath = $parameterFilePath + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} @@ -637,7 +637,7 @@ stages: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens = $tokenMap } - $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs -Verbose # Get key vault name $keyVaultParameters = (ConvertFrom-Json (Get-Content -Path $parameterFilePath -Raw)).parameters @@ -724,14 +724,14 @@ stages: $parameterFilePath = Join-Path '$(Build.SourcesDirectory)' '$(dependencyPath)' '$(resourceType)' 'parameters' 'sqlmi.parameters.json' # Load used functions - . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') # Replace tokens in parameter file $Settings = Get-Content -Path (Join-Path '$(Build.SourcesDirectory)' 'settings.json') | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + FilePath = $parameterFilePath + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} @@ -741,7 +741,7 @@ stages: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens = $tokenMap } - $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs -Verbose # Get key vault name $keyVaultParameters = (ConvertFrom-Json (Get-Content -Path $parameterFilePath -Raw)).parameters diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 23435370bc..8dcf2babee 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -76,23 +76,23 @@ runs: shell: pwsh run: | # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') # Load Settings File $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable # Construct Token Function Input $ConvertTokensInputs = @{ - Tokens = @{ + Tokens = @{ resourceGroupName = '${{ inputs.resourceGroupName }}' subscriptionId = '${{ inputs.subscriptionId }}' managementGroupId = '${{ inputs.managementGroupId }}' tenantId = '${{ env.ARM_TENANT_ID }}' deploymentSpId = '${{ env.DEPLOYMENT_SP_ID }}' } - ParameterFilePath = '${{ inputs.parameterFilePath }}' - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + FilePath = '${{ inputs.parameterFilePath }}' + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } if ($Settings.parameterFileTokens.localTokens) { @@ -111,7 +111,7 @@ runs: } # Invoke Token Replacement Functionality - $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs -Verbose # [Deployment validation] task(s) # ------------------------------- diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 1c74ba9655..35acb99c60 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -247,14 +247,14 @@ jobs: $parameterFilePath = Join-Path $env:GITHUB_WORKSPACE '${{ env.dependencyPath }}' '${{ env.namespace }}' 'parameters' 'parameters.json' # Load used functions . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'sharedScripts' 'Export-ContentToBlob.ps1') - . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') # Replace tokens in parameter file $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + FilePath = $parameterFilePath + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} @@ -264,7 +264,7 @@ jobs: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens = $tokenMap } - $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs -Verbose # Get storage account name $storageAccountParameters = (ConvertFrom-Json (Get-Content -path $parameterFilePath -Raw)).parameters @@ -407,7 +407,7 @@ jobs: inlineScript: | # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') # Prepare replace tokens in parameter file $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable @@ -431,12 +431,12 @@ jobs: Write-Verbose "Retrieving parameters from storage account parameter files" -Verbose $parameterFilePath = Join-Path $env:GITHUB_WORKSPACE '${{ env.dependencyPath }}' '${{ env.saNamespace }}' 'parameters' 'parameters.json' - $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $parameterFilePath -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $parameterFilePath -Verbose $storageAccountParameters = (ConvertFrom-Json (Get-Content -path $parameterFilePath -Raw)).parameters Write-Verbose "Retrieving parameters from image template parameter files" -Verbose $parameterFilePath = Join-Path $env:GITHUB_WORKSPACE '${{ env.dependencyPath }}' '${{ env.imgtNamespace }}' 'parameters' 'parameters.json' - $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $parameterFilePath -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs -FilePath $parameterFilePath -Verbose $imageTemplateParameters = (ConvertFrom-Json (Get-Content -path $parameterFilePath -Raw)).parameters # Initializing parameters before the blob copy @@ -866,7 +866,7 @@ jobs: $parameterFilePath = Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'dependencies' '${{ env.namespace }}' 'parameters' 'parameters.json' # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') # Replace tokens in parameter file $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable @@ -883,7 +883,7 @@ jobs: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens = $tokenMap } - $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs -Verbose # Get key vault name $keyVaultParameters = (ConvertFrom-Json (Get-Content -Path $parameterFilePath -Raw)).parameters @@ -1003,14 +1003,14 @@ jobs: $parameterFilePath = Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'dependencies' '${{ env.namespace }}' 'parameters' 'sqlmi.parameters.json' # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') # Replace tokens in parameter file $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + FilePath = $parameterFilePath + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} @@ -1020,7 +1020,7 @@ jobs: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens = $tokenMap } - $null = Convert-TokensInParameterFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs -Verbose # Get key vault name $keyVaultParameters = (ConvertFrom-Json (Get-Content -Path $parameterFilePath -Raw)).parameters diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index b00fa7f8da..bdceb35a94 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -24,7 +24,7 @@ function Get-DependencyResourceNameList { # Load used function $repoRootPath = (Get-Item $PSScriptRoot).Parent.Parent.Parent.Parent.FullName - . (Join-Path $repoRootPath 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInParameterFile.ps1') + . (Join-Path $repoRootPath 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') $parameterFolders = Get-ChildItem -Path $dependencyParameterPath -Recurse -Filter 'parameters' -Directory $parameterFilePaths = [System.Collections.ArrayList]@() @@ -36,10 +36,9 @@ function Get-DependencyResourceNameList { $Settings = Get-Content -Path (Join-Path $repoRootPath 'settings.json') | ConvertFrom-Json -AsHashtable foreach ($parameterFilePath in $parameterFilePaths) { $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix - Verbose = $false + FilePath = $parameterFilePath + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} @@ -49,7 +48,7 @@ function Get-DependencyResourceNameList { Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) $ConvertTokensInputs.Tokens = $tokenMap } - $null = Convert-TokensInParameterFile @ConvertTokensInputs + $null = Convert-TokensInFile @ConvertTokensInputs } $dependencyResourceNames = [System.Collections.ArrayList]@() diff --git a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 b/utilities/pipelines/tokensReplacement/Convert-TokensInFile.ps1 similarity index 74% rename from utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 rename to utilities/pipelines/tokensReplacement/Convert-TokensInFile.ps1 index 7163cd9725..4a9ba4f36f 100644 --- a/utilities/pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1 +++ b/utilities/pipelines/tokensReplacement/Convert-TokensInFile.ps1 @@ -5,8 +5,8 @@ This Function Helps with Testing A Module Locally .DESCRIPTION This Function aggregates all the different token types (Default and Local) and then passes them to the Convert Tokens Script to replace tokens in a parameter file -.PARAMETER ParameterFilePath -Mandatory. The Path to the Parameter File that contains tokens to be replaced. +.PARAMETER FilePath +Mandatory. The Path to the file that contains tokens to be replaced. .PARAMETER Tokens Optional. An object containing the parameter file tokens to set @@ -37,7 +37,7 @@ function Convert-TokensInParameterFile { [CmdletBinding()] param ( [parameter(Mandatory = $true)] - [string] $ParameterFilePath, + [string] $FilePath, [parameter(Mandatory = $false)] [hashtable] $Tokens = @{}, @@ -62,27 +62,27 @@ function Convert-TokensInParameterFile { process { # Combine All Input Token Types, Remove Duplicates and Only Select entries with on empty values - $FilteredParameterFileTokens = ($Tokens | Sort-Object -Unique).Clone() - @($FilteredParameterFileTokens.Keys) | ForEach-Object { - if ([String]::IsNullOrEmpty($FilteredParameterFileTokens[$_])) { - $FilteredParameterFileTokens.Remove($_) + $FilteredTokens = ($Tokens | Sort-Object -Unique).Clone() + @($FilteredTokens.Keys) | ForEach-Object { + if ([String]::IsNullOrEmpty($FilteredTokens[$_])) { + $FilteredTokens.Remove($_) } } - Write-Verbose ('Using [{0}] tokens' -f $FilteredParameterFileTokens.Keys.Count) + Write-Verbose ('Using [{0}] tokens' -f $FilteredTokens.Keys.Count) # Apply Prefix and Suffix to Tokens and Prepare Object for Conversion Write-Verbose ("Applying Token Prefix '$TokenPrefix' and Token Suffix '$TokenSuffix'") - foreach ($ParameterFileTokenName in @($FilteredParameterFileTokens.Keys)) { - $newKey = -join ($TokenPrefix, $ParameterFileTokenName, $TokenSuffix) - $FilteredParameterFileTokens[$newKey] = $FilteredParameterFileTokens[$ParameterFileTokenName] # Add formatted entry - $FilteredParameterFileTokens.Remove($ParameterFileTokenName) # Replace original + foreach ($Token in @($FilteredTokens.Keys)) { + $newKey = -join ($TokenPrefix, $Token, $TokenSuffix) + $FilteredTokens[$newKey] = $FilteredTokens[$Token] # Add formatted entry + $FilteredTokens.Remove($Token) # Replace original } # Convert Tokens in Parameter Files try { # Prepare Input to Token Converter Function $ConvertTokenListFunctionInput = @{ - FilePath = $ParameterFilePath - TokenNameValueObject = $FilteredParameterFileTokens + FilePath = $FilePath + TokenNameValueObject = $FilteredTokens SwapValueWithName = $SwapValueWithName } if ($OutputDirectory) { diff --git a/utilities/tools/Test-ModuleLocally.ps1 b/utilities/tools/Test-ModuleLocally.ps1 index 7502c2106b..bd4753d56d 100644 --- a/utilities/tools/Test-ModuleLocally.ps1 +++ b/utilities/tools/Test-ModuleLocally.ps1 @@ -120,7 +120,7 @@ function Test-ModuleLocally { $ModuleName = Split-Path (Split-Path $TemplateFilePath -Parent) -Leaf Write-Verbose "Running Local Tests for $($ModuleName)" # Load Tokens Converter Scripts - . (Join-Path $PSScriptRoot '../pipelines/tokensReplacement/Convert-TokensInParameterFile.ps1') + . (Join-Path $PSScriptRoot '../pipelines/tokensReplacement/Convert-TokensInFile.ps1') # Load Modules Validation / Deployment Scripts . (Join-Path $PSScriptRoot '../pipelines/resourceDeployment/New-ModuleDeployment.ps1') . (Join-Path $PSScriptRoot '../pipelines/resourceValidation/Test-TemplateWithParameterFile.ps1') @@ -192,7 +192,7 @@ function Test-ModuleLocally { } # Invoke Token Replacement Functionality and Convert Tokens in Parameter Files - $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $_ } + $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInFile @ConvertTokensInputs -ParameterFilePath $_ } # Deployment & Validation Testing # ------------------------------- @@ -236,7 +236,7 @@ function Test-ModuleLocally { if (($ValidationTest -or $DeploymentTest) -and $ValidateOrDeployParameters -and -not $RestoreAlreadyTriggered) { # Replace Values with Tokens For Repo Updates Write-Verbose 'Restoring Tokens' - $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInParameterFile @ConvertTokensInputs -ParameterFilePath $_ -SwapValueWithName $true } + $ModuleParameterFiles | ForEach-Object { $null = Convert-TokensInFile @ConvertTokensInputs -ParameterFilePath $_ -SwapValueWithName $true } } } } From 22531fbca14560eb8a61507944c8c4ca14313f5b Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 9 Feb 2022 08:51:43 +0100 Subject: [PATCH 31/36] Updated interface --- .../pipelines/tokensReplacement/Convert-TokensInFile.ps1 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utilities/pipelines/tokensReplacement/Convert-TokensInFile.ps1 b/utilities/pipelines/tokensReplacement/Convert-TokensInFile.ps1 index 4a9ba4f36f..8611d71c7f 100644 --- a/utilities/pipelines/tokensReplacement/Convert-TokensInFile.ps1 +++ b/utilities/pipelines/tokensReplacement/Convert-TokensInFile.ps1 @@ -9,7 +9,7 @@ This Function aggregates all the different token types (Default and Local) and t Mandatory. The Path to the file that contains tokens to be replaced. .PARAMETER Tokens -Optional. An object containing the parameter file tokens to set +Mandatory. An object containing the parameter file tokens to set .PARAMETER TokenPrefix Mandatory. The prefix used to identify a token in the parameter file (i.e. <<) @@ -33,14 +33,14 @@ Optional. A string for a custom output directory of the modified parameter file - If providing TokenKeyVaultName parameter, ensure you have read access to secrets in the key vault to be able to retrieve the tokens. #> -function Convert-TokensInParameterFile { +function Convert-TokensInFile { [CmdletBinding()] param ( [parameter(Mandatory = $true)] [string] $FilePath, - [parameter(Mandatory = $false)] - [hashtable] $Tokens = @{}, + [parameter(Mandatory = $true)] + [hashtable] $Tokens, [parameter(Mandatory = $true)] [string] $TokenPrefix, From e1cff58852e70c1225b31a99da8a302f4841ecb3 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 9 Feb 2022 08:53:03 +0100 Subject: [PATCH 32/36] Update to latest --- docs/wiki/UtilitiesTestModuleLocally.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/UtilitiesTestModuleLocally.md b/docs/wiki/UtilitiesTestModuleLocally.md index f7db403969..0abf0823a4 100644 --- a/docs/wiki/UtilitiesTestModuleLocally.md +++ b/docs/wiki/UtilitiesTestModuleLocally.md @@ -25,7 +25,7 @@ If the switch for either the validation test (`-ValidationTest`) or deployment t 1. Create a dictionary to replace all tokens in these parameter files with actual values. This dictionary will consist - of the subscriptionID & managementGroupID of the provided `ValidateOrDeployParameters` object, - add all key-value pairs of the `-AdditionalTokens` object to it, - - and optionally also add all key-value pairs optionally specified in the `settings.json`'s `parameterFileTokens` object + - and optionally also add all key-value pairs specified in the `settings.json`'s `parameterFileTokens` object 1. If the `-ValidationTest` parameter was set, it runs a deployment validation using the `Test-TemplateWithParameterFile` script 1. If the `-DeploymentTest` parameter was set, it runs a deployment using the `New-ModuleDeployment` script (with no retries). 1. As a final step it rolls the parameter files back to their original state if either the `-ValidationTest` or `-DeploymentTest` parameters were provided. From b8719b3651a413a21cefeb2c08bf252a342d685a Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 9 Feb 2022 08:53:43 +0100 Subject: [PATCH 33/36] Updated docs --- docs/wiki/UtilitiesTestModuleLocally.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/UtilitiesTestModuleLocally.md b/docs/wiki/UtilitiesTestModuleLocally.md index 0abf0823a4..2917f6c836 100644 --- a/docs/wiki/UtilitiesTestModuleLocally.md +++ b/docs/wiki/UtilitiesTestModuleLocally.md @@ -21,7 +21,7 @@ If the switch for pester tests (`-PesterTest`) was provided the script will 1. Invoke the global module test for the provided template file path and run all tests for it If the switch for either the validation test (`-ValidationTest`) or deployment test (`-DeploymentTest`) was provided alongside a HashTable for the token replacement (`-ValidateOrDeployParameters`), the script will -1. either fetch all parameter files of the module's parameter folder (default) or use a specify parameter file you can provide via the `parameterFilePath` parameter instead. +1. either fetch all parameter files of the module's parameter folder (default) or you can specify a single parameter file by leveraging the `parameterFilePath` parameter instead. 1. Create a dictionary to replace all tokens in these parameter files with actual values. This dictionary will consist - of the subscriptionID & managementGroupID of the provided `ValidateOrDeployParameters` object, - add all key-value pairs of the `-AdditionalTokens` object to it, From ebee028a0ed32a35cabe4776e00029fa6bb4844a Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 9 Feb 2022 09:28:30 +0100 Subject: [PATCH 34/36] Changed input object buildup --- .../jobs.validateModuleDeployment.yml | 15 ++++++--- .../platform.dependencies.yml | 4 ++- .../validateModuleDeployment/action.yml | 25 ++++++++------ .github/workflows/platform.dependencies.yml | 33 ++++++++++++------- .../helper/Get-DependencyResourceNameList.ps1 | 4 +++ 5 files changed, 53 insertions(+), 28 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 831bbeb323..90b1750e58 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -169,18 +169,22 @@ jobs: # Construct Token Function Input $ConvertTokensInputs = @{ - Tokens = @{ + Tokens = @{} + FilePath = Join-Path '$(parametersRepoRoot)' '${{ deploymentBlock.path }}' + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + } + + # Add defaults + $ConvertTokensInputs.Tokens += @{ resourceGroupName = '${{ parameters.resourceGroupName }}' subscriptionId = '${{ parameters.subscriptionId }}' managementGroupId = '${{ parameters.managementGroupId }}' tenantId = '$(ARM_TENANT_ID)' deploymentSpId = '$(DEPLOYMENT_SP_ID)' - } - FilePath = Join-Path '$(parametersRepoRoot)' '${{ deploymentBlock.path }}' - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + # Add local tokens if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { @@ -190,6 +194,7 @@ jobs: $ConvertTokensInputs.Tokens += $tokenMap } + # Add custom tokens (passed in via the pipeline) if(-not [String]::IsNullOrEmpty('${{ deploymentBlock.customParameterFileTokens }}')) { $customTokens = '${{ deploymentBlock.customParameterFileTokens }}' | ConvertFrom-Json -AsHashTable Write-Verbose ('Using custom parameter file tokens [{0}]' -f ($customTokens.Keys -join ', ')) -Verbose diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index 359d4ae065..af1139fb7c 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -186,7 +186,6 @@ stages: azureSubscription: $(serviceConnection) ScriptType: 'InlineScript' Inline: | - $parameterFilePath = Join-Path '$(Build.SourcesDirectory)' '$(dependencyPath)' '$(resourceType)' 'parameters' 'parameters.json' # Load used functions . (Join-Path '$(Build.SourcesDirectory)' 'utilities' 'pipelines' 'sharedScripts' 'Export-ContentToBlob.ps1') @@ -199,6 +198,8 @@ stages: TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + + # Add local tokens if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { @@ -207,6 +208,7 @@ stages: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens = $tokenMap } + $null = Convert-TokensInFile @ConvertTokensInputs -Verbose # Get storage account name diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index 8dcf2babee..e8e53ae3b7 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -83,18 +83,22 @@ runs: # Construct Token Function Input $ConvertTokensInputs = @{ - Tokens = @{ - resourceGroupName = '${{ inputs.resourceGroupName }}' - subscriptionId = '${{ inputs.subscriptionId }}' - managementGroupId = '${{ inputs.managementGroupId }}' - tenantId = '${{ env.ARM_TENANT_ID }}' - deploymentSpId = '${{ env.DEPLOYMENT_SP_ID }}' - } - FilePath = '${{ inputs.parameterFilePath }}' - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + Tokens = @{} + FilePath = '${{ inputs.parameterFilePath }}' + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + # Local tokens + $ConvertTokensInputs.Tokens += @{ + resourceGroupName = '${{ inputs.resourceGroupName }}' + subscriptionId = '${{ inputs.subscriptionId }}' + managementGroupId = '${{ inputs.managementGroupId }}' + tenantId = '${{ env.ARM_TENANT_ID }}' + deploymentSpId = '${{ env.DEPLOYMENT_SP_ID }}' + } + + # Add local tokens if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { @@ -104,6 +108,7 @@ runs: $ConvertTokensInputs.Tokens += $tokenMap } + # Add custom tokens (passed in via the pipeline) if(-not [String]::IsNullOrEmpty('${{ inputs.customParameterFileTokens }}')) { $customTokens = '${{ inputs.customParameterFileTokens }}' | ConvertFrom-Json -AsHashTable Write-Verbose ('Using custom parameter file tokens [{0}]' -f ($customTokens.Keys -join ', ')) -Verbose diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index 35acb99c60..d50144cf71 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -243,7 +243,6 @@ jobs: uses: azure/powershell@v1 with: inlineScript: | - $parameterFilePath = Join-Path $env:GITHUB_WORKSPACE '${{ env.dependencyPath }}' '${{ env.namespace }}' 'parameters' 'parameters.json' # Load used functions . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'sharedScripts' 'Export-ContentToBlob.ps1') @@ -253,17 +252,21 @@ jobs: $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ FilePath = $parameterFilePath + Tokens = @{} TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + + # Add local tokens if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { $tokenMap += @{ $token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens = $tokenMap + $ConvertTokensInputs.Tokens += $tokenMap } + $null = Convert-TokensInFile @ConvertTokensInputs -Verbose # Get storage account name @@ -405,23 +408,25 @@ jobs: uses: azure/powershell@v1 with: inlineScript: | - # Load used functions . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') # Prepare replace tokens in parameter file $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + Tokens = @{} + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + + # Add local tokens if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { $tokenMap += @{ $token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens = $tokenMap + $ConvertTokensInputs.Tokens += $tokenMap } # Retrieving parameters from previous job outputs and parameter files @@ -871,9 +876,10 @@ jobs: # Replace tokens in parameter file $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ - ParameterFilePath = $parameterFilePath - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + FilePath = $parameterFilePath + Tokens = @{} + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} @@ -881,7 +887,7 @@ jobs: $tokenMap += @{ $token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens = $tokenMap + $ConvertTokensInputs.Tokens += $tokenMap } $null = Convert-TokensInFile @ConvertTokensInputs -Verbose @@ -1000,7 +1006,6 @@ jobs: uses: azure/powershell@v1 with: inlineScript: | - $parameterFilePath = Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'dependencies' '${{ env.namespace }}' 'parameters' 'sqlmi.parameters.json' # Load used functions . (Join-Path $env:GITHUB_WORKSPACE 'utilities' 'pipelines' 'tokensReplacement' 'Convert-TokensInFile.ps1') @@ -1009,17 +1014,21 @@ jobs: $Settings = Get-Content -Path "settings.json" | ConvertFrom-Json -AsHashTable $ConvertTokensInputs = @{ FilePath = $parameterFilePath + Tokens = @{} TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + + # Add local tokens if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { $tokenMap += @{ $token.name = $token.value } } Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose - $ConvertTokensInputs.Tokens = $tokenMap + $ConvertTokensInputs.Tokens += $tokenMap } + $null = Convert-TokensInFile @ConvertTokensInputs -Verbose # Get key vault name diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index bdceb35a94..640bd08ff2 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -37,9 +37,12 @@ function Get-DependencyResourceNameList { foreach ($parameterFilePath in $parameterFilePaths) { $ConvertTokensInputs = @{ FilePath = $parameterFilePath + Tokens = @{} TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix } + + # Add local tokens if ($Settings.parameterFileTokens.localTokens) { $tokenMap = @{} foreach ($token in $Settings.parameterFileTokens.localTokens) { @@ -48,6 +51,7 @@ function Get-DependencyResourceNameList { Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) $ConvertTokensInputs.Tokens = $tokenMap } + $null = Convert-TokensInFile @ConvertTokensInputs } From 9d21a085cd6dabcdb342f314bd4cda0456d0c3b5 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 9 Feb 2022 10:26:27 +0100 Subject: [PATCH 35/36] Reduced verbosity --- .../jobs.validateModuleDeployment.yml | 12 ++++++------ .../platformPipelines/platform.dependencies.yml | 6 +++--- .../templates/validateModuleDeployment/action.yml | 2 +- .github/workflows/platform.dependencies.yml | 6 +++--- .../helper/Get-DependencyResourceNameList.ps1 | 1 + 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml index 90b1750e58..9e31481666 100644 --- a/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml +++ b/.azuredevops/pipelineTemplates/jobs.validateModuleDeployment.yml @@ -177,11 +177,11 @@ jobs: # Add defaults $ConvertTokensInputs.Tokens += @{ - resourceGroupName = '${{ parameters.resourceGroupName }}' - subscriptionId = '${{ parameters.subscriptionId }}' - managementGroupId = '${{ parameters.managementGroupId }}' - tenantId = '$(ARM_TENANT_ID)' - deploymentSpId = '$(DEPLOYMENT_SP_ID)' + resourceGroupName = '${{ parameters.resourceGroupName }}' + subscriptionId = '${{ parameters.subscriptionId }}' + managementGroupId = '${{ parameters.managementGroupId }}' + tenantId = '$(ARM_TENANT_ID)' + deploymentSpId = '$(DEPLOYMENT_SP_ID)' } # Add local tokens @@ -202,7 +202,7 @@ jobs: } # Invoke Token Replacement Functionality - $null = Convert-TokensInFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs # [Validation] task(s) #--------------------- diff --git a/.azuredevops/platformPipelines/platform.dependencies.yml b/.azuredevops/platformPipelines/platform.dependencies.yml index af1139fb7c..e6b7c4321f 100644 --- a/.azuredevops/platformPipelines/platform.dependencies.yml +++ b/.azuredevops/platformPipelines/platform.dependencies.yml @@ -209,7 +209,7 @@ stages: $ConvertTokensInputs.Tokens = $tokenMap } - $null = Convert-TokensInFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs # Get storage account name $storageAccountParameters = (ConvertFrom-Json (Get-Content -path $parameterFilePath -Raw)).parameters @@ -639,7 +639,7 @@ stages: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens = $tokenMap } - $null = Convert-TokensInFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs # Get key vault name $keyVaultParameters = (ConvertFrom-Json (Get-Content -Path $parameterFilePath -Raw)).parameters @@ -743,7 +743,7 @@ stages: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens = $tokenMap } - $null = Convert-TokensInFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs # Get key vault name $keyVaultParameters = (ConvertFrom-Json (Get-Content -Path $parameterFilePath -Raw)).parameters diff --git a/.github/actions/templates/validateModuleDeployment/action.yml b/.github/actions/templates/validateModuleDeployment/action.yml index e8e53ae3b7..92acf6c86b 100644 --- a/.github/actions/templates/validateModuleDeployment/action.yml +++ b/.github/actions/templates/validateModuleDeployment/action.yml @@ -116,7 +116,7 @@ runs: } # Invoke Token Replacement Functionality - $null = Convert-TokensInFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs # [Deployment validation] task(s) # ------------------------------- diff --git a/.github/workflows/platform.dependencies.yml b/.github/workflows/platform.dependencies.yml index d50144cf71..0a1619f510 100644 --- a/.github/workflows/platform.dependencies.yml +++ b/.github/workflows/platform.dependencies.yml @@ -267,7 +267,7 @@ jobs: $ConvertTokensInputs.Tokens += $tokenMap } - $null = Convert-TokensInFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs # Get storage account name $storageAccountParameters = (ConvertFrom-Json (Get-Content -path $parameterFilePath -Raw)).parameters @@ -889,7 +889,7 @@ jobs: Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) -Verbose $ConvertTokensInputs.Tokens += $tokenMap } - $null = Convert-TokensInFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs # Get key vault name $keyVaultParameters = (ConvertFrom-Json (Get-Content -Path $parameterFilePath -Raw)).parameters @@ -1029,7 +1029,7 @@ jobs: $ConvertTokensInputs.Tokens += $tokenMap } - $null = Convert-TokensInFile @ConvertTokensInputs -Verbose + $null = Convert-TokensInFile @ConvertTokensInputs # Get key vault name $keyVaultParameters = (ConvertFrom-Json (Get-Content -Path $parameterFilePath -Raw)).parameters diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index 640bd08ff2..e6748035fb 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -40,6 +40,7 @@ function Get-DependencyResourceNameList { Tokens = @{} TokenPrefix = $Settings.parameterFileTokens.tokenPrefix TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + Verbose = $false } # Add local tokens From e0e20e738eba7b2d69841e01a2996362674aaaf3 Mon Sep 17 00:00:00 2001 From: MrMCake Date: Wed, 9 Feb 2022 10:37:47 +0100 Subject: [PATCH 36/36] Reduced verbosity --- .../helper/Get-DependencyResourceNameList.ps1 | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 index e6748035fb..5d9ac940e9 100644 --- a/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 +++ b/utilities/pipelines/resourceRemoval/helper/Get-DependencyResourceNameList.ps1 @@ -34,26 +34,25 @@ function Get-DependencyResourceNameList { # Replace tokens in dependency parameter files $Settings = Get-Content -Path (Join-Path $repoRootPath 'settings.json') | ConvertFrom-Json -AsHashtable - foreach ($parameterFilePath in $parameterFilePaths) { - $ConvertTokensInputs = @{ - FilePath = $parameterFilePath - Tokens = @{} - TokenPrefix = $Settings.parameterFileTokens.tokenPrefix - TokenSuffix = $Settings.parameterFileTokens.tokenSuffix - Verbose = $false + + # Add local tokens + if ($Settings.parameterFileTokens.localTokens) { + $tokenMap = @{} + foreach ($token in $Settings.parameterFileTokens.localTokens) { + $tokenMap += @{ $token.name = $token.value } } + Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) - # Add local tokens - if ($Settings.parameterFileTokens.localTokens) { - $tokenMap = @{} - foreach ($token in $Settings.parameterFileTokens.localTokens) { - $tokenMap += @{ $token.name = $token.value } + foreach ($parameterFilePath in $parameterFilePaths) { + $ConvertTokensInputs = @{ + FilePath = $parameterFilePath + Tokens = $tokenMap + TokenPrefix = $Settings.parameterFileTokens.tokenPrefix + TokenSuffix = $Settings.parameterFileTokens.tokenSuffix + Verbose = $false } - Write-Verbose ('Using local tokens [{0}]' -f ($tokenMap.Keys -join ', ')) - $ConvertTokensInputs.Tokens = $tokenMap + $null = Convert-TokensInFile @ConvertTokensInputs } - - $null = Convert-TokensInFile @ConvertTokensInputs } $dependencyResourceNames = [System.Collections.ArrayList]@()