platform/alz/scripts/Invoke-LibraryUpdatePolicyDefinitions.ps1 (58 lines of code) (raw):

#!/usr/bin/pwsh # # PowerShell Script # - Update template library in terraform-azurerm-caf-enterprise-scale repository # # Valid object schema for Export-LibraryArtifact function loop: # # @{ # inputPath = [String] # inputFilter = [String] # typeFilter = [String[]] # outputPath = [String] # fileNamePrefix = [String] # fileNameSuffix = [String] # asTemplate = [Boolean] # recurse = [Boolean] # whatIf = [Boolean] # } # [CmdletBinding(SupportsShouldProcess)] param ( [Parameter()][String]$TargetPath = "$PWD/library/platform/alz", [Parameter()][String]$SourcePath = "$PWD/enterprise-scale", [Parameter()][String]$LineEnding = "unix", [Parameter()][Switch]$Reset, [Parameter()][Switch]$UpdateProviderApiVersions ) $ErrorActionPreference = "Stop" # If the -Reset parameter is set, delete all existing # artefacts (by resource type) from the library if ($Reset) { Write-Information "Deleting existing Policy Definitions from library." -InformationAction Continue Remove-Item -Path "$TargetPath/platform/alz/policy_definitions/" -Recurse -Force Write-Information "Deleting existing Policy Set Definitions from library." -InformationAction Continue Remove-Item -Path "$TargetPath/platform/alz/policy_set_definitions/" -Recurse -Force } # Get a list of current Policy Definition names $policyDefinitionFiles = Get-ChildItem -Path "$TargetPath/platform/alz/policy_definitions/" $policyDefinitionNames = $policyDefinitionFiles | ForEach-Object { (Get-Content -Path $_ | ConvertFrom-Json).Name } # Get a list of current Policy Set Definition names $policySetDefinitionFiles = Get-ChildItem -Path "$TargetPath/platform/alz/policy_set_definitions/" $policySetDefinitionNames = $policySetDefinitionFiles | ForEach-Object { (Get-Content -Path $_ | ConvertFrom-Json).Name } # Update the es_root archetype definition to reflect # the current list of Policy Definitions and Policy # Set Definitions $esRootFilePath = $TargetPath + "/platform/alz/archetype_definitions/root.alz_archetype_definition.json" Write-Information "Loading `"root`" archetype definition." -InformationAction Continue $esRootConfig = Get-Content -Path $esRootFilePath | ConvertFrom-Json Write-Information "Updating Policy Definitions in `"root`" archetype definition." -InformationAction Continue $esRootConfig.policy_definitions = $policyDefinitionNames Write-Information "Updating Policy Set Definitions in `"root`" archetype definition." -InformationAction Continue $esRootConfig.policy_set_definitions = $policySetDefinitionNames Write-Information "Saving `"root`" archetype definition." -InformationAction Continue $esRootConfig | ConvertTo-Json -Depth 10 | Out-File -FilePath $esRootFilePath -Force