From 92963b94dd160a78f3e5da789020e65115d44856 Mon Sep 17 00:00:00 2001 From: r2k1 Date: Wed, 20 Nov 2024 08:38:05 +1300 Subject: [PATCH] generate random windows password --- e2e/config/config.go | 1 + e2e/vmss.go | 36 +++++++++++++++++++++++++++++++++++- packer.mk | 4 ++-- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/e2e/config/config.go b/e2e/config/config.go index 1343f85c72f..fa46263a001 100644 --- a/e2e/config/config.go +++ b/e2e/config/config.go @@ -48,6 +48,7 @@ type Configuration struct { TagsToRun string `env:"TAGS_TO_RUN"` TagsToSkip string `env:"TAGS_TO_SKIP"` TestTimeout time.Duration `env:"TEST_TIMEOUT" envDefault:"35m"` + WindowsAdminPassword string `env:"WINDOWS_ADMIN_PASSWORD"` } func (c *Configuration) BlobStorageAccount() string { diff --git a/e2e/vmss.go b/e2e/vmss.go index d808bf53960..cdb90c1298d 100644 --- a/e2e/vmss.go +++ b/e2e/vmss.go @@ -10,6 +10,7 @@ import ( "errors" "fmt" "io" + "math/big" "os" "path/filepath" "strings" @@ -530,11 +531,44 @@ func getBaseVMSSModel(s *Scenario, customData, cseCmd string) armcompute.Virtual model.Properties.VirtualMachineProfile.ExtensionProfile.Extensions[0].Properties.Type = to.Ptr("CustomScriptExtension") model.Properties.VirtualMachineProfile.ExtensionProfile.Extensions[0].Properties.TypeHandlerVersion = to.Ptr("1.10") model.Properties.VirtualMachineProfile.OSProfile.AdminUsername = to.Ptr("azureuser") - model.Properties.VirtualMachineProfile.OSProfile.AdminPassword = to.Ptr("pwnedPassword123!") + model.Properties.VirtualMachineProfile.OSProfile.AdminPassword = to.Ptr(generateWindowsPassword()) } return model } +func generateWindowsPassword() string { + if config.Config.WindowsAdminPassword != "" { + return config.Config.WindowsAdminPassword + } + return randomStringWithDigitsAndSymbols(16) +} + +func randomStringWithDigitsAndSymbols(length int) string { + const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + const digits = "0123456789" + const symbols = "!@#$%^&*()-_+=" + b := make([]byte, length) + + for i := range b { + if i < (length - 2) { // Ensure at least 2 characters are symbols + b[i] = charset[randomInt(len(charset))] + } else if i == (length - 2) { + b[i] = digits[randomInt(len(digits))] + } else { + b[i] = symbols[randomInt(len(symbols))] + } + } + return string(b) +} + +func randomInt(bound int) int { + n, err := crand.Int(crand.Reader, big.NewInt(int64(bound))) + if err != nil { + panic(err) // Intentionally panic for simplicity; handle errors as needed + } + return int(n.Int64()) +} + func getPrivateIP(res listVMSSVMNetworkInterfaceResult) (string, error) { if len(res.Value) > 0 { v := res.Value[0] diff --git a/packer.mk b/packer.mk index b6e621c4084..c6f594f9184 100755 --- a/packer.mk +++ b/packer.mk @@ -107,10 +107,10 @@ evaluate-build-performance: az-login @./vhdbuilder/packer/build-performance/evaluate-build-performance.sh generate-prefetch-scripts: -ifeq (${MODE},linuxVhdMode) +#ifeq (${MODE},linuxVhdMode) @echo "${MODE}: Generating prefetch scripts" @bash -c "pushd vhdbuilder/prefetch; go run cmd/main.go --components-path=../../parts/linux/cloud-init/artifacts/components.json --output-path=../packer/prefetch.sh || exit 1; popd" -endif +#endif build-aks-node-controller: @echo "Building aks-node-controller binaries"