Skip to content

Commit ee9793c

Browse files
committed
Update run-terraform.ps1
1 parent a01d4de commit ee9793c

File tree

1 file changed

+27
-24
lines changed

1 file changed

+27
-24
lines changed

Run-AzTerraform.ps1

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
param (
22
[string]$RunTerraformInit = "true",
33
[string]$RunTerraformValidate = "true",
4-
[string]$RunTerraformPlan = "true",
5-
[string]$RunTerraformPlanDestroy = "false",
4+
[string]$RunTerraformPlan = "false",
5+
[string]$RunTerraformPlanDestroy = "true",
66
[string]$RunTerraformApply = "false",
77
[string]$RunTerraformDestroy = "false",
8-
[string]$TerraformInitExtraArgsJson = '[]',
8+
[string]$TerraformInitExtraArgsJson = '["-reconfigure", "-upgrade"]',
99
[string]$TerraformInitCreateBackendStateFileName = "true",
1010
[string]$TerraformInitCreateBackendStateFilePrefix = "",
1111
[string]$TerraformInitCreateBackendStateFileSuffix = "",
@@ -18,19 +18,19 @@ param (
1818
[string]$DebugMode = "false",
1919
[string]$DeletePlanFiles = "true",
2020
[string]$InstallCheckov = "false",
21-
[string]$RunCheckov = "true",
21+
[string]$RunCheckov = "false",
2222
[string]$CheckovSkipCheck = "CKV2_AZURE_31",
2323
[string]$CheckovSoftfail = "true",
2424
[string]$CheckovExtraArgsJson = '[]',
2525
[string]$TerraformPlanFileName = "tfplan.plan",
2626
[string]$TerraformDestroyPlanFileName = "tfplan-destroy.plan",
27-
[string]$TerraformCodeLocation = "terraform",
28-
[string]$TerraformStackToRunJson = '["all"]', # JSON format Use 'all' to run 0_, 1_, etc and destroy in reverse order 1_, 0_ etc
27+
[string]$TerraformCodeLocation = "examples",
28+
[string]$TerraformStackToRunJson = '["module-development"]', # JSON format Use 'all' to run 0_, 1_, etc and destroy in reverse order 1_, 0_ etc
2929
[string]$CreateTerraformWorkspace = "true",
3030
[string]$TerraformWorkspace = "dev",
31-
[string]$InstallAzureCli = "false",
32-
[string]$UseAzureServiceConnection = "false",
33-
[string]$AttemptAzureLogin = "true",
31+
[string]$InstallAzureCli = "falFnse",
32+
[string]$UseAzureServiceConnection = "true",
33+
[string]$AttemptAzureLogin = "false",
3434
[string]$UseAzureClientSecretLogin = "false",
3535
[string]$UseAzureOidcLogin = "false",
3636
[string]$UseAzureUserLogin = "true",
@@ -250,26 +250,29 @@ try
250250
-StacksToRun $TerraformStackToRun
251251

252252
# ──────────────────── REVERSE execution order for destroys ────────────────
253-
if ($convertedRunTerraformPlanDestroy -or $convertedRunTerraformDestroy)
254-
{
253+
if ($convertedRunTerraformPlanDestroy -or $convertedRunTerraformDestroy) {
254+
_LogMessage -Level 'DEBUG' -Message "Begin reverse‐order logic for destroy" -InvocationName $MyInvocation.MyCommand.Name
255+
_LogMessage -Level 'DEBUG' -Message "Original stackFolders: $($stackFolders -join ', ')" -InvocationName $MyInvocation.MyCommand.Name
255256

256-
# 1. sort numerically by the leading digits in the folder name
257-
$stackFolders = $stackFolders |
258-
Sort-Object {
259-
# “C:\...\1_network” → 1
260-
[int](
261-
(($_ -split '[\\/]')[-1]) -replace '^(\d+)_.*', '$1'
262-
)
263-
}
257+
# Pick out those folders whose name starts with digits_, sort them descending by that leading number
258+
$numericFolders = $stackFolders |
259+
Where-Object { ($_ -split '[\\/]+')[-1] -match '^\d+_' } |
260+
Sort-Object { [int](($_ -split '[\\/]+')[-1] -replace '^(\d+)_.*','$1') } -Descending
261+
262+
# Everything else stays in original order
263+
$otherFolders = $stackFolders | Where-Object { $_ -notin $numericFolders }
264+
265+
# Recombine
266+
$stackFolders = $numericFolders + $otherFolders
264267

265-
# 2. reverse (static .NET call – do **not** pipe this!)
266-
[array]::Reverse($stackFolders)
268+
_LogMessage -Level 'DEBUG' -Message "Reordered stackFolders: $($stackFolders -join ', ')" -InvocationName $MyInvocation.MyCommand.Name
267269
}
268270

271+
269272
foreach ($folder in $stackFolders)
270273
{
271274
$processedStacks += $folder
272-
_LogMessage -Level 'INFO' -Message "Resolved stack folders: $($stackFolders -join ', ')" -InvocationName $MyInvocation.MyCommand.Name
275+
_LogMessage -Level 'INFO' -Message "Resolved stack folders: $( $stackFolders -join ', ' )" -InvocationName $MyInvocation.MyCommand.Name
273276

274277
# terraform fmt – always safe
275278
Invoke-TerraformFmtCheck -CodePath $folder
@@ -334,10 +337,10 @@ try
334337
$TfPlanFileName = $TerraformDestroyPlanFileName
335338
}
336339

337-
Convert-TerraformPlanToJson -CodePath $folder -PlanFile $TfPlanFileName
338-
339340
if ($convertedRunCheckov -and $convertedRunTerraformPlan)
340341
{
342+
Convert-TerraformPlanToJson -CodePath $folder -PlanFile $TfPlanFileName
343+
341344
Invoke-Checkov `
342345
-CodePath $folder `
343346
-CheckovSkipChecks $CheckovSkipCheck `

0 commit comments

Comments
 (0)