Public/func_Remove-ConfigFromStore.ps1
|
Function Remove-ConfigFromStore { <# .SYNOPSIS Remove configuration from config store(AppConfig or keyVault or StorageAccount) .DESCRIPTION Removes configuration for a deployed environment instance from config store. .PARAMETER CdfConfig Config object having config store and other details. .PARAMETER Scope Scope : Platform or Application or Domain or Service .PARAMETER EnvKey Env specific key to be used for fetching config. .PARAMETER RegionDetails Object having region details like name,code. .INPUTS None .OUTPUTS CdfConfigOutput .EXAMPLE Remove-ConfigFromStore ` -CdfConfig $CdfPlatform ` -Scope 'Platform' ` -EnvKey $platformEnvKey ` -RegionDetails $regionDetails .EXAMPLE Remove-ConfigFromStore ` -CdfConfig $CdfConfig ` -Scope 'Application' ` -EnvKey "$($platformEnvKey)-$($applicationEnvKey)" ` -RegionDetails $regionDetails ` -ErrorAction Continue .LINK Remove-CdfConfigPlatform .LINK Remove-CdfConfigApplication .LINK Remove-CdfConfigDomain .LINK Remove-CdfConfigService #> [CmdletBinding()] Param( [ValidateNotNullOrEmpty()] [Parameter(Mandatory = $true)] [hashtable]$CdfConfig, [ValidateNotNullOrEmpty()] [Parameter(Mandatory = $true)] [string] $Scope, [Parameter(Mandatory = $true)] [string] $EnvKey, [Parameter(Mandatory = $true)] [hashtable] $RegionDetails ) Begin {} Process { if ($Scope.ToUpper() -ne 'PLATFORM') { $configStoreType = $CdfConfig.Platform.Config.configStoreType $configStoreSubscriptionId = $CdfConfig.Platform.Config.configStoreSubscriptionId $configStoreResourceGroupName = $CdfConfig.Platform.Config.configStoreResourceGroupName $configStoreName = $CdfConfig.Platform.Config.configStoreName $configStoreEndpoint = $CdfConfig.Platform.Config.configStoreEndpoint $templateName = $CdfConfig.Platform.Config.templateName $templateVersion = $CdfConfig.Platform.Config.templateVersion } else { $configStoreType = $CdfConfig.Config.configStoreType $configStoreSubscriptionId = $CdfConfig.Config.configStoreSubscriptionId $configStoreResourceGroupName = $CdfConfig.Config.configStoreResourceGroupName $configStoreName = $CdfConfig.Config.configStoreName $configStoreEndpoint = $CdfConfig.Config.configStoreEndpoint $templateName = $CdfConfig.Config.templateName $templateVersion = $CdfConfig.Config.templateVersion } $keyName = "CdfConfig-$($Scope)-$EnvKey-$($RegionDetails.code)" $azCtx = Get-AzureContext -SubscriptionId $configStoreSubscriptionId Write-Host "Removing config of '$($Scope.ToLower())' from custom config store '$configStoreName' in resource group '$configStoreResourceGroupName' under subscription [$($azCtx.Subscription.Name)] with key '$EnvKey'." $CdfConfigOutput = @{} if ($configStoreType.ToUpper() -eq 'APPCONFIG') { $configNames = @("Config", "Env", "Tags", "Features", "NetworkConfig", "AccessControl", "ResourceNames") foreach ($configName in $configNames) { $null = Remove-AzAppConfigurationKeyValue ` -Endpoint $configStoreEndpoint ` -Key "$keyName-$configName" ` -Label "$templateName-$templateVersion" } } elseif ($configStoreType.ToUpper() -eq 'KEYVAULT') { $null = Remove-AzKeyVaultSecret ` -VaultName $configStoreName ` -Name $keyName } elseif ($configStoreType.ToUpper() -eq 'STORAGEACCOUNT') { $azStorageCtx = New-AzStorageContext -StorageAccountName $configStoreName -UseConnectedAccount $containerName = 'cdfconfig' $null = Remove-AzStorageBlob -Container $containerName -Blob $keyName -Context $azStorageCtx } } End { } } |