From 6d36e2a86baf8d227fc6dce587bd69997d67fb5e Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Fri, 29 May 2020 22:46:05 -0700 Subject: [vcpkg] Use a crypto RNG to generate admin passwords (#11629) * [vcpkg] Use a crypto RNG to generate admin passwords * Apply code review comments from Stephan and Casey. * Extract functions into create-vmss-helpers.psm1. * Put Wait-Shutdown back. --- scripts/azure-pipelines/linux/create-vmss.ps1 | 106 +------------------------- 1 file changed, 1 insertion(+), 105 deletions(-) (limited to 'scripts/azure-pipelines/linux') diff --git a/scripts/azure-pipelines/linux/create-vmss.ps1 b/scripts/azure-pipelines/linux/create-vmss.ps1 index ac438254a..de89c2207 100755 --- a/scripts/azure-pipelines/linux/create-vmss.ps1 +++ b/scripts/azure-pipelines/linux/create-vmss.ps1 @@ -27,111 +27,7 @@ $ProgressActivity = 'Creating Scale Set' $TotalProgress = 10 $CurrentProgress = 1 -<# -.SYNOPSIS -Returns whether there's a name collision in the resource group. - -.DESCRIPTION -Find-ResourceGroupNameCollision takes a list of resources, and checks if $Test -collides names with any of the resources. - -.PARAMETER Test -The name to test. - -.PARAMETER Resources -The list of resources. -#> -function Find-ResourceGroupNameCollision { - [CmdletBinding()] - Param([string]$Test, $Resources) - - foreach ($resource in $Resources) { - if ($resource.ResourceGroupName -eq $Test) { - return $true - } - } - - return $false -} - -<# -.SYNOPSIS -Attempts to find a name that does not collide with any resources in the resource group. - -.DESCRIPTION -Find-ResourceGroupName takes a set of resources from Get-AzResourceGroup, and finds the -first name in {$Prefix, $Prefix-1, $Prefix-2, ...} such that the name doesn't collide with -any of the resources in the resource group. - -.PARAMETER Prefix -The prefix of the final name; the returned name will be of the form "$Prefix(-[1-9][0-9]*)?" -#> -function Find-ResourceGroupName { - [CmdletBinding()] - Param([string] $Prefix) - - $resources = Get-AzResourceGroup - $result = $Prefix - $suffix = 0 - while (Find-ResourceGroupNameCollision -Test $result -Resources $resources) { - $suffix++ - $result = "$Prefix-$suffix" - } - - return $result -} - -<# -.SYNOPSIS -Creates a randomly generated password. - -.DESCRIPTION -New-Password generates a password, randomly, of length $Length, containing -only alphanumeric characters (both uppercase and lowercase). - -.PARAMETER Length -The length of the returned password. -#> -function New-Password { - Param ([int] $Length = 32) - - $Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" - $result = '' - for ($idx = 0; $idx -lt $Length; $idx++) { - # NOTE: this should probably use RNGCryptoServiceProvider - $result += $Chars[(Get-Random -Minimum 0 -Maximum $Chars.Length)] - } - - return $result -} - -<# -.SYNOPSIS -Sanitizes a name to be used in a storage account. - -.DESCRIPTION -Sanitize-Name takes a string, and removes all of the '-'s and -lowercases the string, since storage account names must have no -'-'s and must be completely lowercase alphanumeric. It then makes -certain that the length of the string is not greater than 24, -since that is invalid. - -.PARAMETER RawName -The name to sanitize. -#> -function Sanitize-Name { - [CmdletBinding()] - Param( - [string]$RawName - ) - - $result = $RawName.Replace('-', '').ToLowerInvariant() - if ($result.Length -gt 24) { - Write-Error 'Sanitized name for storage account $result was too long.' - } - - return $result -} +Import-Module "$PSScriptRoot/../create-vmss-helpers.psm1" -DisableNameChecking #################################################################################################### Write-Progress ` -- cgit v1.2.3