public/onboarding.ps1
function New-NimbusEnvironment { [CmdletBinding()] param ( [Parameter(Mandatory = $true, Position = 0, HelpMessage = 'Enter your Azure Subscription Id where to deploy Nimbus assets')] [Alias('s', 'sub')] [guid]$SubscriptionId, [Parameter(Mandatory = $true, Position = 1, HelpMessage = 'Enter the Azure resource group name for Nimbus assets')] [Alias('r', 'resGrp')] [ValidateNotNullOrEmpty()] [string]$resourceGroupName, [Parameter(Mandatory = $true, Position = 2, HelpMessage = 'Enter the resource prefix for Nimbus assets')] [Alias('p', 'prefix')] [ValidateNotNullOrEmpty()] [string]$resourcePrefix, [Parameter(Mandatory = $true, Position = 3, HelpMessage = 'Enter the Azure location where Nimbus assets should be deployed: "Australia East", "Australia Southeast", "Brazil South", "Canada Central", "Central India", "Central US", "East Asia", "East US", "East US 2", "France Central", "Japan East", "Korea Central", "North Central US", "North Europe", "South Africa North", "South Central US", "Southeast Asia", "UK South", "West Central US", "West Europe", "West US", "West US 2')] [Alias('l', 'loc')] [validateSet("Australia East", "Australia Southeast", "Brazil South", "Canada Central", "Central India", "Central US", "East Asia", "East US", "East US 2", "France Central", "Japan East", "Korea Central", "North Central US", "North Europe", "South Africa North", "South Central US", "Southeast Asia", "UK South", "West Central US", "West Europe", "West US", "West US 2")] [string]$location, [Parameter(Mandatory = $true, Position = 4, HelpMessage = 'Provide a list emails of approvers, has to be separated with a semicolon ( ";" )')] [string]$approvers, [Parameter(Mandatory = $false, Position = 5)] [Alias('d', 'dom')] [ValidateSet('portal_nimbload_com' , 'portal_luware_cloud', 'portal_stage_nimbdev_com', 'portal_uat_nimbdev_com')] [string]$domain = 'placeholder' ) Check-Module $nimbusDomain = $mapper.$domain.domain if ( $resourceGroupName -notmatch '[a-zA-Z0-9]+' ) { "Resource Group Name not valid, please provide a resource group name matching the following regex: '[a-zA-Z0-9]+'" exit } if ( $resourcePrefix -notmatch '[a-zA-Z0-9]+' ) { "Resource Prefix not valid, please provide a prefix matching the following regex: '[a-zA-Z0-9]+'" exit } $azureCredentials = New-CredentialsPrompt "Azure" New-AzureLogin $azureCredentials $SubscriptionId $runbookCredentials = New-CredentialsPrompt "AzureAd" New-AzureAdLogin $runbookCredentials $webSession, $tenant = New-NimbusLogin -domain $nimbusDomain $deploymentParameters = @{ ResourceGroupName = $resourceGroupName prefix = $resourcePrefix location = $location.ToLower() -replace '\s' recipients = $approvers "nimbus-credentials-user" = $runbookCredentials.UserName "nimbus-credentials-password" = $runbookCredentials.Password "nimbus-environment" = "'$domain'" Verbose = $true } if ( $env:localTesting ) { $deploymentParameters.TemplateFile = "artifacts/template.json" } else { $deploymentParameters.TemplateUri = "https://$nimbusDomain/api/manifests/template.json" } $resourceGroup = Get-AzResourceGroup -ResourceGroupName $resourceGroupName -ErrorAction SilentlyContinue if ( -not $resourceGroup ) { Write-Output "Resource Group doesn't exist, creating it" $resourceGroup = New-AzResourceGroup -ResourceGroupName $resourceGroupName -Location $location } $deployment = New-AzResourceGroupDeployment @deploymentParameters $callbackUrl = [System.Text.Encoding]::UTF8.GetString( [System.Convert]::FromBase64String( $deployment.outputs.callbackUrl.value ) ) if ( -not $env:localTesting ) { # todo: error handling Invoke-RestMethod "https://$nimbusDomain/api/ms-flow-driver/v1/RunBooks/$tenant" ` -Method:Put ` -ContentType 'application/json' ` -Body ( '"{0}"' -f $callbackUrl ) ` # need to send quoted string -UseBasicParsing ` -WebSession $webSession } $path = "https://portal.azure.com/#@{0}/resource{1}/providers/Microsoft.Web/connections/{2}" -f ( ( Get-AzContext ).Tenant.Id ), $resourceGroup.ResourceId, $resourcePrefix Write-Output "Please, configure and authorize the following connections:" Write-Output "$path-automation/edit" Write-Output "$path-office365/edit" Cleanup-Environment } # SIG # Begin signature block # MIINMwYJKoZIhvcNAQcCoIINJDCCDSACAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUDfvbladpMhRvwOKS5LPqtGbR # pJCgggpxMIIFGjCCBAKgAwIBAgIQAZyhpG3mRP4nVXpkMz8jhDANBgkqhkiG9w0B # AQsFADB2MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYD # VQQLExB3d3cuZGlnaWNlcnQuY29tMTUwMwYDVQQDEyxEaWdpQ2VydCBTSEEyIEhp # Z2ggQXNzdXJhbmNlIENvZGUgU2lnbmluZyBDQTAeFw0xOTA1MjEwMDAwMDBaFw0y # MjA1MjUxMjAwMDBaMFkxCzAJBgNVBAYTAkNIMRAwDgYDVQQIDAdaw7xyaWNoMRAw # DgYDVQQHDAdaw7xyaWNoMRIwEAYDVQQKEwlMdXdhcmUgQUcxEjAQBgNVBAMTCUx1 # d2FyZSBBRzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANx3Pfx2CKUz # Ot9W7Scb5rrrnI7m7jOkVG4X2Owj+hJJuEjTA3wIfA/6ay4Wa/Qv+MMdlsv6NRt4 # TgYUMRexmfGgKT7iy4AIebBuyS1lg2gmT/25xGtqO3TPqfhstLNEfcKMaMM2ZEZm # vCZbiAs3zP1G2oS94DWcCnDCjmPPll30nlOig+ZQGqBuhvNiZ/DGhnYRtrHoRx40 # 7iZjcixgPjkey9IGN6WEUYnhJ712npXTWWUIpiSZ2U475DxLWbEQ7bPHnLsivVNg # 59f4Jnf8pyqhNelrbGrTeLOuF4JyE5a8Mt2Bc58NCLWT4I9bz8N/7Uk3+RZFtD3O # Cv4nO2h7mG0CAwEAAaOCAb8wggG7MB8GA1UdIwQYMBaAFGedDyAJDMyKOuWCRnJi # /PHMkOVAMB0GA1UdDgQWBBQthLJG1fU0R5j9FwY+vNZOT2lf4DAOBgNVHQ8BAf8E # BAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwbQYDVR0fBGYwZDAwoC6gLIYqaHR0 # cDovL2NybDMuZGlnaWNlcnQuY29tL3NoYTItaGEtY3MtZzEuY3JsMDCgLqAshipo # dHRwOi8vY3JsNC5kaWdpY2VydC5jb20vc2hhMi1oYS1jcy1nMS5jcmwwTAYDVR0g # BEUwQzA3BglghkgBhv1sAwEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGln # aWNlcnQuY29tL0NQUzAIBgZngQwBBAEwgYgGCCsGAQUFBwEBBHwwejAkBggrBgEF # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMFIGCCsGAQUFBzAChkZodHRw # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRTSEEySGlnaEFzc3VyYW5j # ZUNvZGVTaWduaW5nQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQAD # ggEBAEl5ctCYW1yDBEcpCwfycyG6vhbpQ8U2wfOQeQI5DmXImLS3spcyXO+Xfn13 # Eh/BL0gXFIi1ybM0wRG/EimU1ag/uQpCtsTRWfq2vJ96LqLf8UxRYGVw+N+IM/8e # dXAKLexYb/ta4cvByjbJpoiJAJtYN32OclXRD5ph8yehuflmu+rw9TCVuPCa7hkO # mah1L3n59tGneFGd9ZbWvqknQUAZcuKQrOofTKDb9oZKYjk2JJF7aTcjnHMuDo/X # t+uHNCmhAuPyEy5Fa+RwdFptPLhudGH3WtNr4+5As2UsBDxm3gHxCiTUMIdnXChj # 9jLvqhx3P5Rtsl4VZbBcqy/nqo4wggVPMIIEN6ADAgECAhALfhCQPDhJD/ovZ5qH # oae5MA0GCSqGSIb3DQEBCwUAMGwxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdp # Q2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xKzApBgNVBAMTIkRp # Z2lDZXJ0IEhpZ2ggQXNzdXJhbmNlIEVWIFJvb3QgQ0EwHhcNMTMxMDIyMTIwMDAw # WhcNMjgxMDIyMTIwMDAwWjB2MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNl # cnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTUwMwYDVQQDEyxEaWdp # Q2VydCBTSEEyIEhpZ2ggQXNzdXJhbmNlIENvZGUgU2lnbmluZyBDQTCCASIwDQYJ # KoZIhvcNAQEBBQADggEPADCCAQoCggEBALRKXn0HD0HexPV2Fja9cf/PP09zS5zR # Df5Ky1dYXoUW3QIVVJnwjzwvTQJ4EGjI2DVLP8H3Z86YHK4zuS0dpApUk8SFot81 # sfXxPKezNPtdSMlGyWJEvEiZ6yhJU8M9j8AO3jWY6WJR3z1rQGHuBEHaz6dcVpbR # +Uy3RISHmGnlgrkT5lW/yJJwkgoxb3+LMqvPa1qfYsQ+7r7tWaRTfwvxUoiKewpn # JMuQzezSTTRMsOG1n5zG9m8szebKU3QBn2c13jhJLc7tOUSCGXlOGrK1+7t48Elm # p8/6XJZ1kosactn/UJJTzD7CQzIJGoYTaTz7gTIzMmR1cygmHQgwOwcCAwEAAaOC # AeEwggHdMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMBMGA1Ud # JQQMMAoGCCsGAQUFBwMDMH8GCCsGAQUFBwEBBHMwcTAkBggrBgEFBQcwAYYYaHR0 # cDovL29jc3AuZGlnaWNlcnQuY29tMEkGCCsGAQUFBzAChj1odHRwOi8vY2FjZXJ0 # cy5kaWdpY2VydC5jb20vRGlnaUNlcnRIaWdoQXNzdXJhbmNlRVZSb290Q0EuY3J0 # MIGPBgNVHR8EgYcwgYQwQKA+oDyGOmh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9E # aWdpQ2VydEhpZ2hBc3N1cmFuY2VFVlJvb3RDQS5jcmwwQKA+oDyGOmh0dHA6Ly9j # cmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEhpZ2hBc3N1cmFuY2VFVlJvb3RDQS5j # cmwwTwYDVR0gBEgwRjA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUHAgEWHGh0dHBz # Oi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYIYIZIAYb9bAMwHQYDVR0OBBYEFGed # DyAJDMyKOuWCRnJi/PHMkOVAMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSYJhoIAu9j # ZCvDMA0GCSqGSIb3DQEBCwUAA4IBAQBqDv9+E3wGpUvALoz5U2QJ4rpYkTBQ7Myf # 4dOoL0hGNhgp0HgoX5hWQA8eur2xO4dc3FvYIA3tGhZN1REkIUvxJ2mQE+sRoQHa # /bVOeVl1vTgqasP2jkEriqKL1yxRUdmcoMjjTrpsqEfSTtFoH4wCVzuzKWqOaiAq # ufIAYmS6yOkA+cyk1LqaNdivLGVsFnxYId5KMND66yRdBsmdFretSkXTJeIM8ECq # XE2sfs0Ggrl2RmkI2DK2gv7jqVg0QxuOZ2eXP2gxFjY4lT6H98fDr516dxnZ3pO1 # /W4r/JT5PbdMEjUsML7ojZ4FcJpIE/SM1ucerDjnqPOtDLd67GftMYICLDCCAigC # AQEwgYowdjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcG # A1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTE1MDMGA1UEAxMsRGlnaUNlcnQgU0hBMiBI # aWdoIEFzc3VyYW5jZSBDb2RlIFNpZ25pbmcgQ0ECEAGcoaRt5kT+J1V6ZDM/I4Qw # CQYFKw4DAhoFAKB4MBgGCisGAQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJKoZIhvcN # AQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUw # IwYJKoZIhvcNAQkEMRYEFOXvwpjHLPaVbujTFEhD0suag463MA0GCSqGSIb3DQEB # AQUABIIBAKcVPb48UdCqa42ERFIXN9nO7YmW85JOXRergPsO6ePBRwxcOuyuOnRt # IKV5aapG2hc8z5FEJUN3MAccOxgShBvd8QX8f7nnfOVU6OzhA4nC3Aufn0XVqnks # JHJL1PLyY5hP6qz8IblRgNinLlVjF0SRA+EywAUeqOPx4GQXNVa8Ii3zhB4htEV7 # CHMQ322pAslqhtnWzc8D9VmL7NEzTe42rhdYzeNZ2bUVolbjK6mv1sQYL0gepYJs # hZnHwDYuivQMf80zIlROZIq66XqSHOy3KAcPN6gOtfhgiBR68rCK5dCZz/syGrxd # pEnLl9a+/xh0psBo5PBe2ksmEcPAnWA= # SIG # End signature block |