diff --git a/parts/windows/csecmd.ps1 b/parts/windows/csecmd.ps1 index 267fc5e1e44..9b5a2f818e1 100644 --- a/parts/windows/csecmd.ps1 +++ b/parts/windows/csecmd.ps1 @@ -16,7 +16,7 @@ $arguments = ' -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; -if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; +if (!(Test-Path $inputFile)) { throw 'ExitCode: \"49\", Output: \"WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN\", Error: \"%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist.\"' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); -\" >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code \ No newline at end of file +\" \ No newline at end of file diff --git a/parts/windows/kuberneteswindowssetup.ps1 b/parts/windows/kuberneteswindowssetup.ps1 index 4dc5332a4f4..656ea8ad01c 100644 --- a/parts/windows/kuberneteswindowssetup.ps1 +++ b/parts/windows/kuberneteswindowssetup.ps1 @@ -70,7 +70,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -511,15 +511,19 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`", ExecDuration: `"{3}`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"$turncatedErrorMessage`"" + } } diff --git a/parts/windows/windowscsehelper.ps1 b/parts/windows/windowscsehelper.ps1 index 83cfdd272c9..384a01f25ae 100644 --- a/parts/windows/windowscsehelper.ps1 +++ b/parts/windows/windowscsehelper.ps1 @@ -2,6 +2,7 @@ # It is better to define functions in the scripts under staging/cse/windows. # Define all exit codes in Windows CSE +$global:WINDOWS_CSE_SUCCESS=0 $global:WINDOWS_CSE_ERROR_UNKNOWN=1 # For unexpected error caught by the catch block in kuberneteswindowssetup.ps1 $global:WINDOWS_CSE_ERROR_DOWNLOAD_FILE_WITH_RETRY=2 $global:WINDOWS_CSE_ERROR_INVOKE_EXECUTABLE=3 @@ -64,6 +65,70 @@ $global:WINDOWS_CSE_ERROR_GPU_DRIVER_INVALID_SIGNATURE=59 $global:WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_EXCEPTION=60 $global:WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_URL_NOT_EXE=61 +$global:ErrorCodeNames = @( + "WINDOWS_CSE_SUCCESS", + "WINDOWS_CSE_ERROR_UNKNOWN", + "WINDOWS_CSE_ERROR_DOWNLOAD_FILE_WITH_RETRY", + "WINDOWS_CSE_ERROR_INVOKE_EXECUTABLE", + "WINDOWS_CSE_ERROR_FILE_NOT_EXIST", + "WINDOWS_CSE_ERROR_CHECK_API_SERVER_CONNECTIVITY", + "WINDOWS_CSE_ERROR_PAUSE_IMAGE_NOT_EXIST", + "WINDOWS_CSE_ERROR_GET_SUBNET_PREFIX", + "WINDOWS_CSE_ERROR_GENERATE_TOKEN_FOR_ARM", + "WINDOWS_CSE_ERROR_NETWORK_INTERFACES_NOT_EXIST", + "WINDOWS_CSE_ERROR_NETWORK_ADAPTER_NOT_EXIST", + "WINDOWS_CSE_ERROR_MANAGEMENT_IP_NOT_EXIST", + "WINDOWS_CSE_ERROR_CALICO_SERVICE_ACCOUNT_NOT_EXIST", + "WINDOWS_CSE_ERROR_CONTAINERD_NOT_INSTALLED", + "WINDOWS_CSE_ERROR_CONTAINERD_NOT_RUNNING", + "WINDOWS_CSE_ERROR_OPENSSH_NOT_INSTALLED", + "WINDOWS_CSE_ERROR_OPENSSH_FIREWALL_NOT_CONFIGURED", + "WINDOWS_CSE_ERROR_INVALID_PARAMETER_IN_AZURE_CONFIG", + "WINDOWS_CSE_ERROR_NO_DOCKER_TO_BUILD_PAUSE_CONTAINER", + "WINDOWS_CSE_ERROR_GET_CA_CERTIFICATES", + "WINDOWS_CSE_ERROR_DOWNLOAD_CA_CERTIFICATES", + "WINDOWS_CSE_ERROR_EMPTY_CA_CERTIFICATES", + "WINDOWS_CSE_ERROR_ENABLE_SECURE_TLS", + "WINDOWS_CSE_ERROR_GMSA_EXPAND_ARCHIVE", + "WINDOWS_CSE_ERROR_GMSA_ENABLE_POWERSHELL_PRIVILEGE", + "WINDOWS_CSE_ERROR_GMSA_SET_REGISTRY_PERMISSION", + "WINDOWS_CSE_ERROR_GMSA_SET_REGISTRY_VALUES", + "WINDOWS_CSE_ERROR_GMSA_IMPORT_CCGEVENTS", + "WINDOWS_CSE_ERROR_GMSA_IMPORT_CCGAKVPPLUGINEVENTS", + "WINDOWS_CSE_ERROR_NOT_FOUND_MANAGEMENT_IP", + "WINDOWS_CSE_ERROR_NOT_FOUND_BUILD_NUMBER", + "WINDOWS_CSE_ERROR_NOT_FOUND_PROVISIONING_SCRIPTS", + "WINDOWS_CSE_ERROR_START_NODE_RESET_SCRIPT_TASK", + "WINDOWS_CSE_ERROR_DOWNLOAD_CSE_PACKAGE", + "WINDOWS_CSE_ERROR_DOWNLOAD_KUBERNETES_PACKAGE", + "WINDOWS_CSE_ERROR_DOWNLOAD_CNI_PACKAGE", + "WINDOWS_CSE_ERROR_DOWNLOAD_HNS_MODULE", + "WINDOWS_CSE_ERROR_DOWNLOAD_CALICO_PACKAGE", + "WINDOWS_CSE_ERROR_DOWNLOAD_GMSA_PACKAGE", + "WINDOWS_CSE_ERROR_DOWNLOAD_CSI_PROXY_PACKAGE", + "WINDOWS_CSE_ERROR_DOWNLOAD_CONTAINERD_PACKAGE", + "WINDOWS_CSE_ERROR_SET_TCP_DYNAMIC_PORT_RANGE", + "WINDOWS_CSE_ERROR_BUILD_DOCKER_PAUSE_CONTAINER", + "WINDOWS_CSE_ERROR_PULL_PAUSE_IMAGE", + "WINDOWS_CSE_ERROR_BUILD_TAG_PAUSE_IMAGE", + "WINDOWS_CSE_ERROR_CONTAINERD_BINARY_EXIST", + "WINDOWS_CSE_ERROR_SET_TCP_EXCLUDE_PORT_RANGE", + "WINDOWS_CSE_ERROR_SET_UDP_DYNAMIC_PORT_RANGE", + "WINDOWS_CSE_ERROR_SET_UDP_EXCLUDE_PORT_RANGE", + "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", + "WINDOWS_CSE_ERROR_NO_CSE_RESULT_LOG", + "WINDOWS_CSE_ERROR_COPY_LOG_COLLECTION_SCRIPTS", + "WINDOWS_CSE_ERROR_RESIZE_OS_DRIVE", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_FAILED", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_TIMEOUT", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_VM_SIZE_NOT_SUPPORTED", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_URL_NOT_SET", + "WINDOWS_CSE_ERROR_GPU_SKU_INFO_NOT_FOUND", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_DOWNLOAD_FAILURE", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INVALID_SIGNATURE", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_EXCEPTION", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_URL_NOT_EXE" +) # NOTE: KubernetesVersion does not contain "v" $global:MinimalKubernetesVersionWithLatestContainerd = "1.28.0" # Will change it to the correct version when we support new Windows containerd version @@ -152,7 +217,7 @@ function Set-ExitCode ) Write-Log "Set ExitCode to $ExitCode and exit. Error: $ErrorMessage" $global:ExitCode=$ExitCode - $global:ErrorMessage=$ErrorMessage + $global:ErrorMessage=($ErrorMessage -replace '\r*\n', '') exit $ExitCode } diff --git a/pkg/agent/testdata/AKSWindows2019+CustomCloud/CSECommand b/pkg/agent/testdata/AKSWindows2019+CustomCloud/CSECommand index d837b942e90..bd81931aa96 100644 --- a/pkg/agent/testdata/AKSWindows2019+CustomCloud/CSECommand +++ b/pkg/agent/testdata/AKSWindows2019+CustomCloud/CSECommand @@ -1 +1 @@ -powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''akscustom'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code \ No newline at end of file +powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''akscustom'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: "49", Output: "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", Error: "%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist."' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " \ No newline at end of file diff --git a/pkg/agent/testdata/AKSWindows2019+CustomCloud/CustomData b/pkg/agent/testdata/AKSWindows2019+CustomCloud/CustomData index 568eb52bd07..febb8c73219 100644 --- a/pkg/agent/testdata/AKSWindows2019+CustomCloud/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+CustomCloud/CustomData @@ -70,7 +70,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -189,7 +189,7 @@ $global:TLSBootstrapToken = "" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -507,15 +507,19 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`", ExecDuration: `"{3}`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"$turncatedErrorMessage`"" + } } diff --git a/pkg/agent/testdata/AKSWindows2019+CustomVnet/CSECommand b/pkg/agent/testdata/AKSWindows2019+CustomVnet/CSECommand index a2b9043f044..1b94d44ac5e 100644 --- a/pkg/agent/testdata/AKSWindows2019+CustomVnet/CSECommand +++ b/pkg/agent/testdata/AKSWindows2019+CustomVnet/CSECommand @@ -1 +1 @@ -powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code \ No newline at end of file +powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: "49", Output: "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", Error: "%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist."' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " \ No newline at end of file diff --git a/pkg/agent/testdata/AKSWindows2019+CustomVnet/CustomData b/pkg/agent/testdata/AKSWindows2019+CustomVnet/CustomData index b1853539cd7..6f22e36dcc1 100644 --- a/pkg/agent/testdata/AKSWindows2019+CustomVnet/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+CustomVnet/CustomData @@ -70,7 +70,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -189,7 +189,7 @@ $global:TLSBootstrapToken = "" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -501,15 +501,19 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`", ExecDuration: `"{3}`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"$turncatedErrorMessage`"" + } } diff --git a/pkg/agent/testdata/AKSWindows2019+EnablePrivateClusterHostsConfigAgent/CSECommand b/pkg/agent/testdata/AKSWindows2019+EnablePrivateClusterHostsConfigAgent/CSECommand index a2b9043f044..1b94d44ac5e 100644 --- a/pkg/agent/testdata/AKSWindows2019+EnablePrivateClusterHostsConfigAgent/CSECommand +++ b/pkg/agent/testdata/AKSWindows2019+EnablePrivateClusterHostsConfigAgent/CSECommand @@ -1 +1 @@ -powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code \ No newline at end of file +powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: "49", Output: "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", Error: "%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist."' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " \ No newline at end of file diff --git a/pkg/agent/testdata/AKSWindows2019+EnablePrivateClusterHostsConfigAgent/CustomData b/pkg/agent/testdata/AKSWindows2019+EnablePrivateClusterHostsConfigAgent/CustomData index edd20d5ebb8..90846c9b3ae 100644 --- a/pkg/agent/testdata/AKSWindows2019+EnablePrivateClusterHostsConfigAgent/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+EnablePrivateClusterHostsConfigAgent/CustomData @@ -70,7 +70,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -189,7 +189,7 @@ $global:TLSBootstrapToken = "" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -501,15 +501,19 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`", ExecDuration: `"{3}`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"$turncatedErrorMessage`"" + } } diff --git a/pkg/agent/testdata/AKSWindows2019+K8S116/CSECommand b/pkg/agent/testdata/AKSWindows2019+K8S116/CSECommand index a2b9043f044..1b94d44ac5e 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S116/CSECommand +++ b/pkg/agent/testdata/AKSWindows2019+K8S116/CSECommand @@ -1 +1 @@ -powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code \ No newline at end of file +powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: "49", Output: "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", Error: "%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist."' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " \ No newline at end of file diff --git a/pkg/agent/testdata/AKSWindows2019+K8S116/CustomData b/pkg/agent/testdata/AKSWindows2019+K8S116/CustomData index 751e27a2e07..17d015a5315 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S116/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+K8S116/CustomData @@ -70,7 +70,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -189,7 +189,7 @@ $global:TLSBootstrapToken = "" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -501,15 +501,19 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`", ExecDuration: `"{3}`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"$turncatedErrorMessage`"" + } } diff --git a/pkg/agent/testdata/AKSWindows2019+K8S117/CSECommand b/pkg/agent/testdata/AKSWindows2019+K8S117/CSECommand index a2b9043f044..1b94d44ac5e 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S117/CSECommand +++ b/pkg/agent/testdata/AKSWindows2019+K8S117/CSECommand @@ -1 +1 @@ -powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code \ No newline at end of file +powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: "49", Output: "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", Error: "%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist."' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " \ No newline at end of file diff --git a/pkg/agent/testdata/AKSWindows2019+K8S117/CustomData b/pkg/agent/testdata/AKSWindows2019+K8S117/CustomData index cd71f350e01..93b22790768 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S117/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+K8S117/CustomData @@ -70,7 +70,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -189,7 +189,7 @@ $global:TLSBootstrapToken = "" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -501,15 +501,19 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`", ExecDuration: `"{3}`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"$turncatedErrorMessage`"" + } } diff --git a/pkg/agent/testdata/AKSWindows2019+K8S118/CSECommand b/pkg/agent/testdata/AKSWindows2019+K8S118/CSECommand index a2b9043f044..1b94d44ac5e 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S118/CSECommand +++ b/pkg/agent/testdata/AKSWindows2019+K8S118/CSECommand @@ -1 +1 @@ -powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code \ No newline at end of file +powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: "49", Output: "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", Error: "%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist."' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " \ No newline at end of file diff --git a/pkg/agent/testdata/AKSWindows2019+K8S118/CustomData b/pkg/agent/testdata/AKSWindows2019+K8S118/CustomData index 16dc33617a0..55f9526aa7f 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S118/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+K8S118/CustomData @@ -70,7 +70,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -189,7 +189,7 @@ $global:TLSBootstrapToken = "" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -501,15 +501,19 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`", ExecDuration: `"{3}`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"$turncatedErrorMessage`"" + } } diff --git a/pkg/agent/testdata/AKSWindows2019+K8S119+CSI/CSECommand b/pkg/agent/testdata/AKSWindows2019+K8S119+CSI/CSECommand index a2b9043f044..1b94d44ac5e 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S119+CSI/CSECommand +++ b/pkg/agent/testdata/AKSWindows2019+K8S119+CSI/CSECommand @@ -1 +1 @@ -powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code \ No newline at end of file +powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: "49", Output: "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", Error: "%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist."' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " \ No newline at end of file diff --git a/pkg/agent/testdata/AKSWindows2019+K8S119+CSI/CustomData b/pkg/agent/testdata/AKSWindows2019+K8S119+CSI/CustomData index 213869f538c..0e4a2c232db 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S119+CSI/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+K8S119+CSI/CustomData @@ -70,7 +70,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -189,7 +189,7 @@ $global:TLSBootstrapToken = "" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -501,15 +501,19 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`", ExecDuration: `"{3}`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"$turncatedErrorMessage`"" + } } diff --git a/pkg/agent/testdata/AKSWindows2019+K8S119+FIPS/CSECommand b/pkg/agent/testdata/AKSWindows2019+K8S119+FIPS/CSECommand index a2b9043f044..1b94d44ac5e 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S119+FIPS/CSECommand +++ b/pkg/agent/testdata/AKSWindows2019+K8S119+FIPS/CSECommand @@ -1 +1 @@ -powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code \ No newline at end of file +powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: "49", Output: "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", Error: "%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist."' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " \ No newline at end of file diff --git a/pkg/agent/testdata/AKSWindows2019+K8S119+FIPS/CustomData b/pkg/agent/testdata/AKSWindows2019+K8S119+FIPS/CustomData index baa0f8a2faa..fe4e115b084 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S119+FIPS/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+K8S119+FIPS/CustomData @@ -70,7 +70,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -189,7 +189,7 @@ $global:TLSBootstrapToken = "" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("true") @@ -501,15 +501,19 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`", ExecDuration: `"{3}`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"$turncatedErrorMessage`"" + } } diff --git a/pkg/agent/testdata/AKSWindows2019+K8S119/CSECommand b/pkg/agent/testdata/AKSWindows2019+K8S119/CSECommand index a2b9043f044..1b94d44ac5e 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S119/CSECommand +++ b/pkg/agent/testdata/AKSWindows2019+K8S119/CSECommand @@ -1 +1 @@ -powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code \ No newline at end of file +powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: "49", Output: "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", Error: "%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist."' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " \ No newline at end of file diff --git a/pkg/agent/testdata/AKSWindows2019+K8S119/CustomData b/pkg/agent/testdata/AKSWindows2019+K8S119/CustomData index d6e98b35a69..44f2316e5f7 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S119/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+K8S119/CustomData @@ -70,7 +70,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -189,7 +189,7 @@ $global:TLSBootstrapToken = "" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -501,15 +501,19 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`", ExecDuration: `"{3}`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"$turncatedErrorMessage`"" + } } diff --git a/pkg/agent/testdata/AKSWindows2019+KubeletClientTLSBootstrapping/CSECommand b/pkg/agent/testdata/AKSWindows2019+KubeletClientTLSBootstrapping/CSECommand index a2b9043f044..1b94d44ac5e 100644 --- a/pkg/agent/testdata/AKSWindows2019+KubeletClientTLSBootstrapping/CSECommand +++ b/pkg/agent/testdata/AKSWindows2019+KubeletClientTLSBootstrapping/CSECommand @@ -1 +1 @@ -powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code \ No newline at end of file +powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: "49", Output: "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", Error: "%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist."' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " \ No newline at end of file diff --git a/pkg/agent/testdata/AKSWindows2019+KubeletClientTLSBootstrapping/CustomData b/pkg/agent/testdata/AKSWindows2019+KubeletClientTLSBootstrapping/CustomData index 16810e591a7..96d7628a4f8 100644 --- a/pkg/agent/testdata/AKSWindows2019+KubeletClientTLSBootstrapping/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+KubeletClientTLSBootstrapping/CustomData @@ -70,7 +70,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -189,7 +189,7 @@ $global:TLSBootstrapToken = "07401b.f395accd246ae52d" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "UEsDBBQACAAIAAAAAAAAAAAAAAAAAAAAAAAcAAAAd2luZG93cy93aW5kb3dzY3NlaGVscGVyLnBzMdRcb3ebPLJ/708xh/hsk/sUJ3Ga9mmewz1LMUnY2OADOGm37WEVrNi6xeCVRNI8vf3u90j8MdgYO929L7YvHAfmNzMajeaPpPQA/DlhwEJKlhwIg5ThKfAEpviBxBjuESMhpJxE8JDGISdJzDoHYEnae8w5phXqkgRIDHyOc74M0niKKTCOZiSeHYcMHz+ReJo8sV6ncwCDDI2iCPB3wiFMpliyuMuIwPDMTncWJfcouriz7IFz5wWGZwbexDBMz9NOGt+aruu4wcS+sZ07WzuFA7hMKKQx/r7EIcdTwJQmFEKUzuYc7p+lxiHi4RzuoyT8JjT4lt5jGmOOWa4wwzxd9pbstEXkwLmzh44+CC6toRncWf514Jq++0nrt4As+9a5MQPzo2lMfP3D0NTOWqglZ9vxA/Oj5fnamxZS49o0bgJ9bAWe6d6abmA4tm0avnVr+Z+08xbkWJ94ZmCN9KuqrLctiCvTD7zJB9v0g7FrXloftXet1Lbp6r4Z+M6NaQeXjhvo7kj7vQVim/6d494Elu2b7qVumF5Fs/d7APWBPvZNt4I6bfOekW7rV+bItP3AGldBbfNv6EPLcKS5LcMMdMNwJrZfRbc5guHYvm7ZpjuQCMv2fH04NAfaaZtDrKHciW1b9pV22uYZzti0Pe96XUybSxSQS8s17/ThUGINx760riauALd5h2Xf6kNrEIx1Vx+ZYhYsO9D/PnHNnIV22uYuthMMHOPGdAPfCT5MrOEg99By7Nppm+8I5zT0wDBd37q0DN03Pe20zWfKdbyO6re5jDka+582IW0OY9piwQeeaQhb+ENP67d5yNXI0wPz41i3B4HuGtfWran125wjA2RCxs6d6XrX5nAYjF3r1hqaV6bWb3MTifZMP3DNK8vz3U/B2HRHludZjq3127xlE3mrDyfCGq1BRKCs0dhx/cAwrsxb0/Y9rd8aSeoQ/eZ2PB5Oriy7ALfGFMcPLp2JPaivdq3fGk9KUOaJ9mT0wXS1szbPWGHGrnNrCftZ9lXgGa419j3trM1FPF93RQgZmIFrCpNmqMDXvRvtrM1bVl7smcFYN270K1M7a3OXEnEz+WC6tumb3grY5ikrUba1QrR5SIm4tr1g5AwmIu+1OUdlTcogW0ppc48SJP2khLQ5RcVqlpiuj59WuP1ixiogF8A3bc4h5tQ3xsHgk62PLCOQvuzqtsC1OUbmfnlgXI+Hb9ocYzwRMWCV47U3bU6RyfH1qzqktfJYmeCDZevup6JaafOIwg7mR2M4GZg1O7Q5hsBNBs32a/ONAtckrz1qBMbE851RMNB9XQxQe/MeDsDFPKWi+iWsKDCTKRa1ZMhwuJiK2hGe5jgG4+KL/mdK8QBx9MVIGU8W4mvvnsQwTTCDOOGiIGZ8hxqejAmToR8MnSvt/ORf0MIzXczSiPeiZLa/EoYz/iRkB4YzHIrS0rHLqHbe5ryu6Vl/NwPHCwauyGLnrWlvPMnI3KJa0aWkS90Sdct5awbcgvWtkelMfO28NQFuAd+OAqm+iOveZCw8R+jRmhG3sJq4WSnlmb523pocx5PAu5kEln3prBKKdt6aHbcIXfUpujWcuKZ23lo+VblkhZxnXdm6L5FtMXGbfPOjYY7FN+1tW2TcZTPzo6m9Pe2UHEzh70YyxTZaYAYa/PWwAwCgVFnnraPyevNVJjXvG7cTbOvytiM2WrztpPX+bjtda3O3HdbY2W0n32jr2kiberrt9G0N3W7URje3HbKlk2sx7Y4urgW5pYPbG5F3b9vpGzu33eRburZWj23v2FqmaGe31u5vaw3UHutwb0Rjh9ZCvt6dtSi+2ZntIt7ele1AbunIXoLKurEdiPVObG/y9S6szVcaO7B9ANXuax/6ps5rO66t69rHI1cd1x7Um93WHqBKp7UH9arL2oO43mHtAah2V3uQb3RW+2A2uqqWydvaUW3HtHVT21HrndQu/mtd1F55odpB7R7zZjfTjmnunHZjXiJns2Nqp621NW022tp8bAetNR4tMa216Xg5Lm84Xg5sbDZezqbSaLSDN5uMlwtbbzD25LDWXOyJamosXg6tNBVK56jTOQDb8c0LuCkPgm4xZSSptOhhEnNEYlAelbIHGZGYLFC0gbojfD5EHDNuZChMp6CBctrr/947UeAA7kgUQThH8QwD4cCT7FgqoRSHHB5z4bJ1f8LA0uUyoRxi/FSeloUrzjl5qZbH0X2EV6LHKPyGZlho8Hjae9vrn6roz5Ti3unxPYkRJZgdr9ipazRqfiamosX07ZseR7Q3+1PpHIA/xxDJUbYps26HujLvejt1qZD8mirA56h8zoBJ64D+wdql40NC+2fX/VLV97tVfb9D1U4nP4t9IBHHFCheJI/Cw9LMHygKOaYMDr+cHMHTnIRzQBRDiJY8pXgKJIaYsUUPf8eQpHyZ8sxJomQ2w1Pgc5qkszkskydM2RxHUScX5EpBdhpFDH5ANwCV4mWEQgyvvpy8eg2vXsHPTkHskwVmHC2W8AOU7uEV5uoAcQzqZUIXiENydAHdQJGI/DAY7ijhWB0ms8PuAjOGZvgIfsh12V2wGWhQPIb/XfGX7zOkk41GEHeqfAfJUxwlaHpJIuw8YnrN+TJnPEYULbKuX/z7LH/HHNPDEYqniCf0WcjlNMVHXz8zTkk8+1qSdyc0ev3L4AFmnMRIqDhGfL43IxLzChfzO+FGMsXyyVFH/jiAS0KFI89x+E1EBoYxkAdAwmcwPBE+z07d0QJDLD4IAxRRjKbPEKJwjqeQZAfzt9eDbAYE0hakGny2nJ7Q+OvFxRXml/mLQ2GNXIEuw4iGc7mlciSfkAc49DHjqgBCsWoMIWtAaDHPdayQMyAinCX0eSWMHa7DX6/Uey1RnmThLIVtv15c6FFU8CGYZQr97JR65RJ7RpLGHNQYw0lVodItQZkwEs8KCxWxIXmoWEcFI1k+Cypp6geaLKBbSPh88vVITMf61CulLAFWLY4XkBuqBIJaAW1wkOsqxPnIxCeOGK5bNUwpHtOEJ2ESscrUyNckbiL47D0zjhc9G/OeJ94T/lxQ+M9L/PXiIqMY4AeURvw17INg0VnuJ+LfQ0IxCudw2F3mdCJEFXzMOF1kU3+LohSz3SodVecOiineHJ8aJ7yM6KXsdXCj7X7TVoAa9c/O5re6wvSRhHickJiPUIxmmAqDrA1DrPU1kStzdZNoOqbJjGLGxhQ/YIrjUKzK7ubTFagR8cojEY559CzSFolT/KoiZpoHTRFoqViM+TAGBM3ihHESsp7Hk+UT4qGIBB5HlNv4qeJUnD6vWbOL6Ex61o8JJZoIGH/ACPN5MtWUK8yVP8BJ5RrX1h38Z42Pizl9Vo1ksUDxFMovihU/Jt+w6mLGM7YKqLoQmQlWBY5gBufZ1+cBjtCzh8MknjI4PVnNXn69p669h7lahFtYfetWnlGa0FGepJRLRKIs4RbGFHFBjLoHklKmwAaXqRtfmvmwsmKkQ+chUF8urZiR2ZwzIyI4j19dUQysu3IXP4r3Gtj4SXXu/0eUicqIhDRhyQPv6ctlREJp8IJjb4A4Es4hagrWMwXexxFeCNspDcx7eYZQxBwWabeRcEyTJaacYPZZKTKI8lW4cRFKm1AjMX8h+6wMUio1HbEMVDeYGaElw9MRiSLCstmtc9tmvJ5PUfhNjvMwE3lUmZ4dy6l5ZTalkcIyeJplCeES2/PCz1oxU3XCzt5FjNZePLTXHtrWEqbq7/JpZq7KUD3MoVwfYojlL2LB4u+Er9ZClVs29PKkJgdp9XKndpCTA7XDGp9qkUr/60ss69RMS3mFcMWwauRxwvgyibNIgig3ksUyFWVtbvHKAA2KERfrGsUgEJwsMHDEZN1FM3hWSY3yMaFMRrYOPVFKpBGe+oh907M3qvkdhynHoKyKcFGuZ8EsXYhVrKyi3j+UXEu1VDOrBv6h5BKXlMQhWaKoSei4fKlOGKbWFLxPnm+OQIwviUVOhTxv6WGYlUhuGg/xI47gmszmmHEp5gA4JbMZptlpsrRBUqyAbvEu0+Bvyb2fP1B1DlA2CEc9fTrNI/Lh6fmRCEFYrGpQnZKXvEVKtlkR1NyOhaXV1RArplALBUrVRIUl76EKUGFUCAujogfxuaTJIxF1n5jz6ry6eEYYx3RdGfEpw6KSe4NacFRAteJlyvNYXBlWo5Ph6V4+VvXjDKeWRfQvBIyNNX+ZRtHufkXrPqCINfc9hTYTlnfxMxxjiiJYpnSZsHztZ4tUfoiEp9oJr7UQhR5HW2r1bOwwLaStEKLkXFdjlaSEP2UVuPiU7l+Swpps+O8s1WZxer3mrkb8/bTILlCwStw/gDnnS3ZxfMw4Cr8lj5g+RMlTL0wWx+j47M35+fvz8zfHb9+/O+2/XU28GISPF8uEIvq8Ep5300tEs0qgKOpqDZ3Aid/ySq6YQOjGefuXg65SMv16cWHjJ/Etp97Deod/S0icGzLXRLI+qrluvcTb228rffItisgUcWwn3E6jyKHmYsmfD5tcMhezdwu+nfUcsbncHapwFxXov4F1PXXnpez/C99aXZwvRvlDuOxhl4AGJ3/AH1BdeZvF/gEMErnvGSUzkFU4I6JSkl8X6LncD2U4ZoSTRwxTxFGNR2UJScWgS+ACumE2X/XKkmZXmf5STif8VYgqaVb1dVNx3yW//VZ7kLWNoM5waeym5pDPafIE3aD2ot6tyNZI9SKMl9vsuwLVq728ockKArnpuPdKaKnaSm67YniNw+evdZ8eEsb3ZLCz6iQxr7OPouQJTwvKbDfi5KiO2FwNwjFbaeodnwanW71bTH20mvo/pINsSTWCFtw0ljVBxbylmaDX662c9S+NNOVr6XhD3fPNj5ZvOANTblWQeNMq6/5YVakiIVsYeAppzNIwxIw9pFH0nO0Dln9IAzWZylYPVgvrtbiy+BfmmwoN628tT8IeqlcVb1r2G6tI/nhpx25+n6OUiUqL5g4lk3TDbNXrLJ0xTLkqGllTZvD9l2nbDrHgJzLj3kF+99ZwcymVy6mVUi+1Xcll7TpoUxMrqv38FOpDSqKpnS7uMc2F53FctgSiiMi3Cp5Bub4Zji6+eM6lf6e75pdy7+JLcaJl+1+MlIqSIj9GU456+QMpZ5sSxVFdXh/dV3TStigrKdkT4XLrsoKo2lA5fffu7ZkCP4pBKae/n7xXKktB6Z+cvfm9ShFxFvZP+v061fnZ+xpV/+y6RvGjG8hUJSnfK6CK/CeeRRiUs5Oz9++UnxU4x4z3T/rnVRb5Hu6em14tF42brtxs2RvjCTyQeCqbl/y4C6QtIZbGvKhNxvpe2VanGqOU4f+8SW2ieuHENrH4T59YK2YcRZG6Ol1VPyCGp6oTq6uDc7U635XA+4Kg211JKE/2XgS3rQ8kHhD6S1AjiR9+CSts8MvA2q2DTp4nDsDKjv+WiPHXq+O6qnnkmSGIhAwTdyj/uDff1my6YLDMzsN7krn5HS2WEb4ApWhuUcjUBRGO1JOn33g6w70Y88rpePGXwMePJ72T3pu3zSfo2bstR+dCtp+UdyEWacTJMsINB/7sNTxhSOLoGRjO9lZwPF0mJOYgKrEmg/w7xpbpeFcRvWlDuBfOD0n1j47r9z2a5wuLok3WfMqxAiypXAu5kGIBTnuQp0u4x3P0SBKaHR9nJigmO6fu90QQkZufDVqSGHgym0VY1lDyYkW+vwMJhXnCH8j3Tl7t1u1oxlN2R/j8UDlWypKkurOzonaHwg3r+HzTM1y/i6HtuNwiYUKdw8+5Nb9urpCjnpEslohiP6mQ/cJlniMZ1SsHzfsnqNxoVXoV/7PIJ7Wz9O1GaL+wUnKoHX633ZDZFJVfPmm4NSM9QlYwuZyNrbOXK96k8c3m+ticUeFAM7lXSIHPUSy8E/8zRdmJzC/MrFhavPU2UYOt8v9RoTRIp8EsvzKyCDOWDetfGUo+db8wlJ8NiVWko/qD3xr4dDLwZvIHtQ5e46WWWbiSkOXTPMFWky2oefIss2jn5/8FAAD//1BLBwhjHcYOrBEAAOtCAABQSwMEFAAIAAgAAAAAAAAAAAAAAAAAAAAAABQAAAB3aW5kb3dzL3NlbmRsb2dzLnBzMaxTT0/bThC976eY35JDIv3s2EFEhdYtNKVglT8Rhkot5bCNJ/aK9a61O3ZbIb57tTYhUEDqoXvyzLx5M29m/GaDAQCE2ZeT03mWZp3l30WtjMgdCFCmgO+NzhUCGaASoTSOYGksWCQrsRUKWingoEFHn4+PTOFC1tN+2M9mZ+n8PD09+bfM/p2La/Q0tbCiQkILZgkCvqZzWEqFoEXVETddwf/hRykXJUgHDjWtKh4aR3sFarqn9QV9ZNxWXeDIFIA6r43UFLKNt+xyVuUK6b3UudTFcHTFug6GHcOlIyt1cdUZg7mgko0Yk0sY/jc8R0eBd/WB0QhuOphFaqxmt4wNDoxQGQnCPVs4SGC3R/BjpNLkPOEHSPx177uwkie8JKp3xuN4+iqcbobxZDuMp+NKLEqpcfxuYao6KYxQzpOuMg9R5GgdT3Zv+M+gckGL1kmjecInUTwJ4jjYjPgtu33QECQwGKa6NdcYnKGjviPYfdTxKLw3GRv0m35Jybz5CyU7m5OtyfTBKlYpqf4oFfKkm+RTWffbfEbfVhBtB1F8x7QGLZRETcHCWItKkDRa+j5fwvnz4gnf+5TNsv25agqpX4Kuy0dhHEZPYUaTkBqtL7geeThb+ddfaf5nclsJPxtliiDHWplfFWryRMNnmc6MwlQ7EnqBR9LRI4fHLWXR2E7+nXXi/6PA1UoS8G8hH11G/Xn7A3nmItZr/x0AAP//UEsHCIVf41EhAgAAXgQAAFBLAQIUABQACAAIAAAAAABjHcYOrBEAAOtCAAAcAAAAAAAAAAAAAAAAAAAAAAB3aW5kb3dzL3dpbmRvd3Njc2VoZWxwZXIucHMxUEsBAhQAFAAIAAgAAAAAAIVf41EhAgAAXgQAABQAAAAAAAAAAAAAAAAA9hEAAHdpbmRvd3Mvc2VuZGxvZ3MucHMxUEsFBgAAAAACAAIAjAAAAFkUAAAAAA==" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -501,15 +501,19 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`", ExecDuration: `"{3}`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"$turncatedErrorMessage`"" + } } diff --git a/pkg/agent/testdata/AKSWindows2019+ManagedIdentity/CSECommand b/pkg/agent/testdata/AKSWindows2019+ManagedIdentity/CSECommand index 1300beb7a95..5ef2cd38a37 100644 --- a/pkg/agent/testdata/AKSWindows2019+ManagedIdentity/CSECommand +++ b/pkg/agent/testdata/AKSWindows2019+ManagedIdentity/CSECommand @@ -1 +1 @@ -powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -UserAssignedClientID ''userAssignedID'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''msi'' -AADClientSecret '''' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code \ No newline at end of file +powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -UserAssignedClientID ''userAssignedID'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''msi'' -AADClientSecret '''' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: "49", Output: "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", Error: "%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist."' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " \ No newline at end of file diff --git a/pkg/agent/testdata/AKSWindows2019+ManagedIdentity/CustomData b/pkg/agent/testdata/AKSWindows2019+ManagedIdentity/CustomData index eb24a607eeb..a1b46be8a8d 100644 --- a/pkg/agent/testdata/AKSWindows2019+ManagedIdentity/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+ManagedIdentity/CustomData @@ -70,7 +70,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -189,7 +189,7 @@ $global:TLSBootstrapToken = "" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "UEsDBBQACAAIAAAAAAAAAAAAAAAAAAAAAAAcAAAAd2luZG93cy93aW5kb3dzY3NlaGVscGVyLnBzMdRcb3ebPLJ/708xh/hsk/sUJ3Ga9mmewz1LMUnY2OADOGm37WEVrNi6xeCVRNI8vf3u90j8MdgYO929L7YvHAfmNzMajeaPpPQA/DlhwEJKlhwIg5ThKfAEpviBxBjuESMhpJxE8JDGISdJzDoHYEnae8w5phXqkgRIDHyOc74M0niKKTCOZiSeHYcMHz+ReJo8sV6ncwCDDI2iCPB3wiFMpliyuMuIwPDMTncWJfcouriz7IFz5wWGZwbexDBMz9NOGt+aruu4wcS+sZ07WzuFA7hMKKQx/r7EIcdTwJQmFEKUzuYc7p+lxiHi4RzuoyT8JjT4lt5jGmOOWa4wwzxd9pbstEXkwLmzh44+CC6toRncWf514Jq++0nrt4As+9a5MQPzo2lMfP3D0NTOWqglZ9vxA/Oj5fnamxZS49o0bgJ9bAWe6d6abmA4tm0avnVr+Z+08xbkWJ94ZmCN9KuqrLctiCvTD7zJB9v0g7FrXloftXet1Lbp6r4Z+M6NaQeXjhvo7kj7vQVim/6d494Elu2b7qVumF5Fs/d7APWBPvZNt4I6bfOekW7rV+bItP3AGldBbfNv6EPLcKS5LcMMdMNwJrZfRbc5guHYvm7ZpjuQCMv2fH04NAfaaZtDrKHciW1b9pV22uYZzti0Pe96XUybSxSQS8s17/ThUGINx760riauALd5h2Xf6kNrEIx1Vx+ZYhYsO9D/PnHNnIV22uYuthMMHOPGdAPfCT5MrOEg99By7Nppm+8I5zT0wDBd37q0DN03Pe20zWfKdbyO6re5jDka+582IW0OY9piwQeeaQhb+ENP67d5yNXI0wPz41i3B4HuGtfWran125wjA2RCxs6d6XrX5nAYjF3r1hqaV6bWb3MTifZMP3DNK8vz3U/B2HRHludZjq3127xlE3mrDyfCGq1BRKCs0dhx/cAwrsxb0/Y9rd8aSeoQ/eZ2PB5Oriy7ALfGFMcPLp2JPaivdq3fGk9KUOaJ9mT0wXS1szbPWGHGrnNrCftZ9lXgGa419j3trM1FPF93RQgZmIFrCpNmqMDXvRvtrM1bVl7smcFYN270K1M7a3OXEnEz+WC6tumb3grY5ikrUba1QrR5SIm4tr1g5AwmIu+1OUdlTcogW0ppc48SJP2khLQ5RcVqlpiuj59WuP1ixiogF8A3bc4h5tQ3xsHgk62PLCOQvuzqtsC1OUbmfnlgXI+Hb9ocYzwRMWCV47U3bU6RyfH1qzqktfJYmeCDZevup6JaafOIwg7mR2M4GZg1O7Q5hsBNBs32a/ONAtckrz1qBMbE851RMNB9XQxQe/MeDsDFPKWi+iWsKDCTKRa1ZMhwuJiK2hGe5jgG4+KL/mdK8QBx9MVIGU8W4mvvnsQwTTCDOOGiIGZ8hxqejAmToR8MnSvt/ORf0MIzXczSiPeiZLa/EoYz/iRkB4YzHIrS0rHLqHbe5ryu6Vl/NwPHCwauyGLnrWlvPMnI3KJa0aWkS90Sdct5awbcgvWtkelMfO28NQFuAd+OAqm+iOveZCw8R+jRmhG3sJq4WSnlmb523pocx5PAu5kEln3prBKKdt6aHbcIXfUpujWcuKZ23lo+VblkhZxnXdm6L5FtMXGbfPOjYY7FN+1tW2TcZTPzo6m9Pe2UHEzh70YyxTZaYAYa/PWwAwCgVFnnraPyevNVJjXvG7cTbOvytiM2WrztpPX+bjtda3O3HdbY2W0n32jr2kiberrt9G0N3W7URje3HbKlk2sx7Y4urgW5pYPbG5F3b9vpGzu33eRburZWj23v2FqmaGe31u5vaw3UHutwb0Rjh9ZCvt6dtSi+2ZntIt7ele1AbunIXoLKurEdiPVObG/y9S6szVcaO7B9ANXuax/6ps5rO66t69rHI1cd1x7Um93WHqBKp7UH9arL2oO43mHtAah2V3uQb3RW+2A2uqqWydvaUW3HtHVT21HrndQu/mtd1F55odpB7R7zZjfTjmnunHZjXiJns2Nqp621NW022tp8bAetNR4tMa216Xg5Lm84Xg5sbDZezqbSaLSDN5uMlwtbbzD25LDWXOyJamosXg6tNBVK56jTOQDb8c0LuCkPgm4xZSSptOhhEnNEYlAelbIHGZGYLFC0gbojfD5EHDNuZChMp6CBctrr/947UeAA7kgUQThH8QwD4cCT7FgqoRSHHB5z4bJ1f8LA0uUyoRxi/FSeloUrzjl5qZbH0X2EV6LHKPyGZlho8Hjae9vrn6roz5Ti3unxPYkRJZgdr9ipazRqfiamosX07ZseR7Q3+1PpHIA/xxDJUbYps26HujLvejt1qZD8mirA56h8zoBJ64D+wdql40NC+2fX/VLV97tVfb9D1U4nP4t9IBHHFCheJI/Cw9LMHygKOaYMDr+cHMHTnIRzQBRDiJY8pXgKJIaYsUUPf8eQpHyZ8sxJomQ2w1Pgc5qkszkskydM2RxHUScX5EpBdhpFDH5ANwCV4mWEQgyvvpy8eg2vXsHPTkHskwVmHC2W8AOU7uEV5uoAcQzqZUIXiENydAHdQJGI/DAY7ijhWB0ms8PuAjOGZvgIfsh12V2wGWhQPIb/XfGX7zOkk41GEHeqfAfJUxwlaHpJIuw8YnrN+TJnPEYULbKuX/z7LH/HHNPDEYqniCf0WcjlNMVHXz8zTkk8+1qSdyc0ev3L4AFmnMRIqDhGfL43IxLzChfzO+FGMsXyyVFH/jiAS0KFI89x+E1EBoYxkAdAwmcwPBE+z07d0QJDLD4IAxRRjKbPEKJwjqeQZAfzt9eDbAYE0hakGny2nJ7Q+OvFxRXml/mLQ2GNXIEuw4iGc7mlciSfkAc49DHjqgBCsWoMIWtAaDHPdayQMyAinCX0eSWMHa7DX6/Uey1RnmThLIVtv15c6FFU8CGYZQr97JR65RJ7RpLGHNQYw0lVodItQZkwEs8KCxWxIXmoWEcFI1k+Cypp6geaLKBbSPh88vVITMf61CulLAFWLY4XkBuqBIJaAW1wkOsqxPnIxCeOGK5bNUwpHtOEJ2ESscrUyNckbiL47D0zjhc9G/OeJ94T/lxQ+M9L/PXiIqMY4AeURvw17INg0VnuJ+LfQ0IxCudw2F3mdCJEFXzMOF1kU3+LohSz3SodVecOiineHJ8aJ7yM6KXsdXCj7X7TVoAa9c/O5re6wvSRhHickJiPUIxmmAqDrA1DrPU1kStzdZNoOqbJjGLGxhQ/YIrjUKzK7ubTFagR8cojEY559CzSFolT/KoiZpoHTRFoqViM+TAGBM3ihHESsp7Hk+UT4qGIBB5HlNv4qeJUnD6vWbOL6Ex61o8JJZoIGH/ACPN5MtWUK8yVP8BJ5RrX1h38Z42Pizl9Vo1ksUDxFMovihU/Jt+w6mLGM7YKqLoQmQlWBY5gBufZ1+cBjtCzh8MknjI4PVnNXn69p669h7lahFtYfetWnlGa0FGepJRLRKIs4RbGFHFBjLoHklKmwAaXqRtfmvmwsmKkQ+chUF8urZiR2ZwzIyI4j19dUQysu3IXP4r3Gtj4SXXu/0eUicqIhDRhyQPv6ctlREJp8IJjb4A4Es4hagrWMwXexxFeCNspDcx7eYZQxBwWabeRcEyTJaacYPZZKTKI8lW4cRFKm1AjMX8h+6wMUio1HbEMVDeYGaElw9MRiSLCstmtc9tmvJ5PUfhNjvMwE3lUmZ4dy6l5ZTalkcIyeJplCeES2/PCz1oxU3XCzt5FjNZePLTXHtrWEqbq7/JpZq7KUD3MoVwfYojlL2LB4u+Er9ZClVs29PKkJgdp9XKndpCTA7XDGp9qkUr/60ss69RMS3mFcMWwauRxwvgyibNIgig3ksUyFWVtbvHKAA2KERfrGsUgEJwsMHDEZN1FM3hWSY3yMaFMRrYOPVFKpBGe+oh907M3qvkdhynHoKyKcFGuZ8EsXYhVrKyi3j+UXEu1VDOrBv6h5BKXlMQhWaKoSei4fKlOGKbWFLxPnm+OQIwviUVOhTxv6WGYlUhuGg/xI47gmszmmHEp5gA4JbMZptlpsrRBUqyAbvEu0+Bvyb2fP1B1DlA2CEc9fTrNI/Lh6fmRCEFYrGpQnZKXvEVKtlkR1NyOhaXV1RArplALBUrVRIUl76EKUGFUCAujogfxuaTJIxF1n5jz6ry6eEYYx3RdGfEpw6KSe4NacFRAteJlyvNYXBlWo5Ph6V4+VvXjDKeWRfQvBIyNNX+ZRtHufkXrPqCINfc9hTYTlnfxMxxjiiJYpnSZsHztZ4tUfoiEp9oJr7UQhR5HW2r1bOwwLaStEKLkXFdjlaSEP2UVuPiU7l+Swpps+O8s1WZxer3mrkb8/bTILlCwStw/gDnnS3ZxfMw4Cr8lj5g+RMlTL0wWx+j47M35+fvz8zfHb9+/O+2/XU28GISPF8uEIvq8Ep5300tEs0qgKOpqDZ3Aid/ySq6YQOjGefuXg65SMv16cWHjJ/Etp97Deod/S0icGzLXRLI+qrluvcTb228rffItisgUcWwn3E6jyKHmYsmfD5tcMhezdwu+nfUcsbncHapwFxXov4F1PXXnpez/C99aXZwvRvlDuOxhl4AGJ3/AH1BdeZvF/gEMErnvGSUzkFU4I6JSkl8X6LncD2U4ZoSTRwxTxFGNR2UJScWgS+ACumE2X/XKkmZXmf5STif8VYgqaVb1dVNx3yW//VZ7kLWNoM5waeym5pDPafIE3aD2ot6tyNZI9SKMl9vsuwLVq728ockKArnpuPdKaKnaSm67YniNw+evdZ8eEsb3ZLCz6iQxr7OPouQJTwvKbDfi5KiO2FwNwjFbaeodnwanW71bTH20mvo/pINsSTWCFtw0ljVBxbylmaDX662c9S+NNOVr6XhD3fPNj5ZvOANTblWQeNMq6/5YVakiIVsYeAppzNIwxIw9pFH0nO0Dln9IAzWZylYPVgvrtbiy+BfmmwoN628tT8IeqlcVb1r2G6tI/nhpx25+n6OUiUqL5g4lk3TDbNXrLJ0xTLkqGllTZvD9l2nbDrHgJzLj3kF+99ZwcymVy6mVUi+1Xcll7TpoUxMrqv38FOpDSqKpnS7uMc2F53FctgSiiMi3Cp5Bub4Zji6+eM6lf6e75pdy7+JLcaJl+1+MlIqSIj9GU456+QMpZ5sSxVFdXh/dV3TStigrKdkT4XLrsoKo2lA5fffu7ZkCP4pBKae/n7xXKktB6Z+cvfm9ShFxFvZP+v061fnZ+xpV/+y6RvGjG8hUJSnfK6CK/CeeRRiUs5Oz9++UnxU4x4z3T/rnVRb5Hu6em14tF42brtxs2RvjCTyQeCqbl/y4C6QtIZbGvKhNxvpe2VanGqOU4f+8SW2ieuHENrH4T59YK2YcRZG6Ol1VPyCGp6oTq6uDc7U635XA+4Kg211JKE/2XgS3rQ8kHhD6S1AjiR9+CSts8MvA2q2DTp4nDsDKjv+WiPHXq+O6qnnkmSGIhAwTdyj/uDff1my6YLDMzsN7krn5HS2WEb4ApWhuUcjUBRGO1JOn33g6w70Y88rpePGXwMePJ72T3pu3zSfo2bstR+dCtp+UdyEWacTJMsINB/7sNTxhSOLoGRjO9lZwPF0mJOYgKrEmg/w7xpbpeFcRvWlDuBfOD0n1j47r9z2a5wuLok3WfMqxAiypXAu5kGIBTnuQp0u4x3P0SBKaHR9nJigmO6fu90QQkZufDVqSGHgym0VY1lDyYkW+vwMJhXnCH8j3Tl7t1u1oxlN2R/j8UDlWypKkurOzonaHwg3r+HzTM1y/i6HtuNwiYUKdw8+5Nb9urpCjnpEslohiP6mQ/cJlniMZ1SsHzfsnqNxoVXoV/7PIJ7Wz9O1GaL+wUnKoHX633ZDZFJVfPmm4NSM9QlYwuZyNrbOXK96k8c3m+ticUeFAM7lXSIHPUSy8E/8zRdmJzC/MrFhavPU2UYOt8v9RoTRIp8EsvzKyCDOWDetfGUo+db8wlJ8NiVWko/qD3xr4dDLwZvIHtQ5e46WWWbiSkOXTPMFWky2oefIss2jn5/8FAAD//1BLBwhjHcYOrBEAAOtCAABQSwMEFAAIAAgAAAAAAAAAAAAAAAAAAAAAABQAAAB3aW5kb3dzL3NlbmRsb2dzLnBzMaxTT0/bThC976eY35JDIv3s2EFEhdYtNKVglT8Rhkot5bCNJ/aK9a61O3ZbIb57tTYhUEDqoXvyzLx5M29m/GaDAQCE2ZeT03mWZp3l30WtjMgdCFCmgO+NzhUCGaASoTSOYGksWCQrsRUKWingoEFHn4+PTOFC1tN+2M9mZ+n8PD09+bfM/p2La/Q0tbCiQkILZgkCvqZzWEqFoEXVETddwf/hRykXJUgHDjWtKh4aR3sFarqn9QV9ZNxWXeDIFIA6r43UFLKNt+xyVuUK6b3UudTFcHTFug6GHcOlIyt1cdUZg7mgko0Yk0sY/jc8R0eBd/WB0QhuOphFaqxmt4wNDoxQGQnCPVs4SGC3R/BjpNLkPOEHSPx177uwkie8JKp3xuN4+iqcbobxZDuMp+NKLEqpcfxuYao6KYxQzpOuMg9R5GgdT3Zv+M+gckGL1kmjecInUTwJ4jjYjPgtu33QECQwGKa6NdcYnKGjviPYfdTxKLw3GRv0m35Jybz5CyU7m5OtyfTBKlYpqf4oFfKkm+RTWffbfEbfVhBtB1F8x7QGLZRETcHCWItKkDRa+j5fwvnz4gnf+5TNsv25agqpX4Kuy0dhHEZPYUaTkBqtL7geeThb+ddfaf5nclsJPxtliiDHWplfFWryRMNnmc6MwlQ7EnqBR9LRI4fHLWXR2E7+nXXi/6PA1UoS8G8hH11G/Xn7A3nmItZr/x0AAP//UEsHCIVf41EhAgAAXgQAAFBLAQIUABQACAAIAAAAAABjHcYOrBEAAOtCAAAcAAAAAAAAAAAAAAAAAAAAAAB3aW5kb3dzL3dpbmRvd3Njc2VoZWxwZXIucHMxUEsBAhQAFAAIAAgAAAAAAIVf41EhAgAAXgQAABQAAAAAAAAAAAAAAAAA9hEAAHdpbmRvd3Mvc2VuZGxvZ3MucHMxUEsFBgAAAAACAAIAjAAAAFkUAAAAAA==" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -501,15 +501,19 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`", ExecDuration: `"{3}`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"$turncatedErrorMessage`"" + } } diff --git a/pkg/agent/testdata/AKSWindows2019+SecurityProfile/CSECommand b/pkg/agent/testdata/AKSWindows2019+SecurityProfile/CSECommand index a2b9043f044..1b94d44ac5e 100644 --- a/pkg/agent/testdata/AKSWindows2019+SecurityProfile/CSECommand +++ b/pkg/agent/testdata/AKSWindows2019+SecurityProfile/CSECommand @@ -1 +1 @@ -powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code \ No newline at end of file +powershell.exe -ExecutionPolicy Unrestricted -command " $arguments = ' -MasterIP ''uttestdom-dns-5d7c849e.hcp.southcentralus.azmk8s.io'' -KubeDnsServiceIp ''10.0.0.10'' -MasterFQDNPrefix ''uttestdom'' -Location ''southcentralus'' -TargetEnvironment ''AzurePublicCloud'' -AgentKey '''' -AADClientId ''ClientID'' -AADClientSecret ''U2VjcmV0'' -NetworkAPIVersion 2018-08-01 -LogFile %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: "49", Output: "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", Error: "%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist."' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); " \ No newline at end of file diff --git a/pkg/agent/testdata/AKSWindows2019+SecurityProfile/CustomData b/pkg/agent/testdata/AKSWindows2019+SecurityProfile/CustomData index f4c6e96a641..648b905bf62 100644 --- a/pkg/agent/testdata/AKSWindows2019+SecurityProfile/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+SecurityProfile/CustomData @@ -70,7 +70,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -189,7 +189,7 @@ $global:TLSBootstrapToken = "" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "UEsDBBQACAAIAAAAAAAAAAAAAAAAAAAAAAAcAAAAd2luZG93cy93aW5kb3dzY3NlaGVscGVyLnBzMdRcb3ebPLJ/708xh/hsk/sUJ3Ga9mmewz1LMUnY2OADOGm37WEVrNi6xeCVRNI8vf3u90j8MdgYO929L7YvHAfmNzMajeaPpPQA/DlhwEJKlhwIg5ThKfAEpviBxBjuESMhpJxE8JDGISdJzDoHYEnae8w5phXqkgRIDHyOc74M0niKKTCOZiSeHYcMHz+ReJo8sV6ncwCDDI2iCPB3wiFMpliyuMuIwPDMTncWJfcouriz7IFz5wWGZwbexDBMz9NOGt+aruu4wcS+sZ07WzuFA7hMKKQx/r7EIcdTwJQmFEKUzuYc7p+lxiHi4RzuoyT8JjT4lt5jGmOOWa4wwzxd9pbstEXkwLmzh44+CC6toRncWf514Jq++0nrt4As+9a5MQPzo2lMfP3D0NTOWqglZ9vxA/Oj5fnamxZS49o0bgJ9bAWe6d6abmA4tm0avnVr+Z+08xbkWJ94ZmCN9KuqrLctiCvTD7zJB9v0g7FrXloftXet1Lbp6r4Z+M6NaQeXjhvo7kj7vQVim/6d494Elu2b7qVumF5Fs/d7APWBPvZNt4I6bfOekW7rV+bItP3AGldBbfNv6EPLcKS5LcMMdMNwJrZfRbc5guHYvm7ZpjuQCMv2fH04NAfaaZtDrKHciW1b9pV22uYZzti0Pe96XUybSxSQS8s17/ThUGINx760riauALd5h2Xf6kNrEIx1Vx+ZYhYsO9D/PnHNnIV22uYuthMMHOPGdAPfCT5MrOEg99By7Nppm+8I5zT0wDBd37q0DN03Pe20zWfKdbyO6re5jDka+582IW0OY9piwQeeaQhb+ENP67d5yNXI0wPz41i3B4HuGtfWran125wjA2RCxs6d6XrX5nAYjF3r1hqaV6bWb3MTifZMP3DNK8vz3U/B2HRHludZjq3127xlE3mrDyfCGq1BRKCs0dhx/cAwrsxb0/Y9rd8aSeoQ/eZ2PB5Oriy7ALfGFMcPLp2JPaivdq3fGk9KUOaJ9mT0wXS1szbPWGHGrnNrCftZ9lXgGa419j3trM1FPF93RQgZmIFrCpNmqMDXvRvtrM1bVl7smcFYN270K1M7a3OXEnEz+WC6tumb3grY5ikrUba1QrR5SIm4tr1g5AwmIu+1OUdlTcogW0ppc48SJP2khLQ5RcVqlpiuj59WuP1ixiogF8A3bc4h5tQ3xsHgk62PLCOQvuzqtsC1OUbmfnlgXI+Hb9ocYzwRMWCV47U3bU6RyfH1qzqktfJYmeCDZevup6JaafOIwg7mR2M4GZg1O7Q5hsBNBs32a/ONAtckrz1qBMbE851RMNB9XQxQe/MeDsDFPKWi+iWsKDCTKRa1ZMhwuJiK2hGe5jgG4+KL/mdK8QBx9MVIGU8W4mvvnsQwTTCDOOGiIGZ8hxqejAmToR8MnSvt/ORf0MIzXczSiPeiZLa/EoYz/iRkB4YzHIrS0rHLqHbe5ryu6Vl/NwPHCwauyGLnrWlvPMnI3KJa0aWkS90Sdct5awbcgvWtkelMfO28NQFuAd+OAqm+iOveZCw8R+jRmhG3sJq4WSnlmb523pocx5PAu5kEln3prBKKdt6aHbcIXfUpujWcuKZ23lo+VblkhZxnXdm6L5FtMXGbfPOjYY7FN+1tW2TcZTPzo6m9Pe2UHEzh70YyxTZaYAYa/PWwAwCgVFnnraPyevNVJjXvG7cTbOvytiM2WrztpPX+bjtda3O3HdbY2W0n32jr2kiberrt9G0N3W7URje3HbKlk2sx7Y4urgW5pYPbG5F3b9vpGzu33eRburZWj23v2FqmaGe31u5vaw3UHutwb0Rjh9ZCvt6dtSi+2ZntIt7ele1AbunIXoLKurEdiPVObG/y9S6szVcaO7B9ANXuax/6ps5rO66t69rHI1cd1x7Um93WHqBKp7UH9arL2oO43mHtAah2V3uQb3RW+2A2uqqWydvaUW3HtHVT21HrndQu/mtd1F55odpB7R7zZjfTjmnunHZjXiJns2Nqp621NW022tp8bAetNR4tMa216Xg5Lm84Xg5sbDZezqbSaLSDN5uMlwtbbzD25LDWXOyJamosXg6tNBVK56jTOQDb8c0LuCkPgm4xZSSptOhhEnNEYlAelbIHGZGYLFC0gbojfD5EHDNuZChMp6CBctrr/947UeAA7kgUQThH8QwD4cCT7FgqoRSHHB5z4bJ1f8LA0uUyoRxi/FSeloUrzjl5qZbH0X2EV6LHKPyGZlho8Hjae9vrn6roz5Ti3unxPYkRJZgdr9ipazRqfiamosX07ZseR7Q3+1PpHIA/xxDJUbYps26HujLvejt1qZD8mirA56h8zoBJ64D+wdql40NC+2fX/VLV97tVfb9D1U4nP4t9IBHHFCheJI/Cw9LMHygKOaYMDr+cHMHTnIRzQBRDiJY8pXgKJIaYsUUPf8eQpHyZ8sxJomQ2w1Pgc5qkszkskydM2RxHUScX5EpBdhpFDH5ANwCV4mWEQgyvvpy8eg2vXsHPTkHskwVmHC2W8AOU7uEV5uoAcQzqZUIXiENydAHdQJGI/DAY7ijhWB0ms8PuAjOGZvgIfsh12V2wGWhQPIb/XfGX7zOkk41GEHeqfAfJUxwlaHpJIuw8YnrN+TJnPEYULbKuX/z7LH/HHNPDEYqniCf0WcjlNMVHXz8zTkk8+1qSdyc0ev3L4AFmnMRIqDhGfL43IxLzChfzO+FGMsXyyVFH/jiAS0KFI89x+E1EBoYxkAdAwmcwPBE+z07d0QJDLD4IAxRRjKbPEKJwjqeQZAfzt9eDbAYE0hakGny2nJ7Q+OvFxRXml/mLQ2GNXIEuw4iGc7mlciSfkAc49DHjqgBCsWoMIWtAaDHPdayQMyAinCX0eSWMHa7DX6/Uey1RnmThLIVtv15c6FFU8CGYZQr97JR65RJ7RpLGHNQYw0lVodItQZkwEs8KCxWxIXmoWEcFI1k+Cypp6geaLKBbSPh88vVITMf61CulLAFWLY4XkBuqBIJaAW1wkOsqxPnIxCeOGK5bNUwpHtOEJ2ESscrUyNckbiL47D0zjhc9G/OeJ94T/lxQ+M9L/PXiIqMY4AeURvw17INg0VnuJ+LfQ0IxCudw2F3mdCJEFXzMOF1kU3+LohSz3SodVecOiineHJ8aJ7yM6KXsdXCj7X7TVoAa9c/O5re6wvSRhHickJiPUIxmmAqDrA1DrPU1kStzdZNoOqbJjGLGxhQ/YIrjUKzK7ubTFagR8cojEY559CzSFolT/KoiZpoHTRFoqViM+TAGBM3ihHESsp7Hk+UT4qGIBB5HlNv4qeJUnD6vWbOL6Ex61o8JJZoIGH/ACPN5MtWUK8yVP8BJ5RrX1h38Z42Pizl9Vo1ksUDxFMovihU/Jt+w6mLGM7YKqLoQmQlWBY5gBufZ1+cBjtCzh8MknjI4PVnNXn69p669h7lahFtYfetWnlGa0FGepJRLRKIs4RbGFHFBjLoHklKmwAaXqRtfmvmwsmKkQ+chUF8urZiR2ZwzIyI4j19dUQysu3IXP4r3Gtj4SXXu/0eUicqIhDRhyQPv6ctlREJp8IJjb4A4Es4hagrWMwXexxFeCNspDcx7eYZQxBwWabeRcEyTJaacYPZZKTKI8lW4cRFKm1AjMX8h+6wMUio1HbEMVDeYGaElw9MRiSLCstmtc9tmvJ5PUfhNjvMwE3lUmZ4dy6l5ZTalkcIyeJplCeES2/PCz1oxU3XCzt5FjNZePLTXHtrWEqbq7/JpZq7KUD3MoVwfYojlL2LB4u+Er9ZClVs29PKkJgdp9XKndpCTA7XDGp9qkUr/60ss69RMS3mFcMWwauRxwvgyibNIgig3ksUyFWVtbvHKAA2KERfrGsUgEJwsMHDEZN1FM3hWSY3yMaFMRrYOPVFKpBGe+oh907M3qvkdhynHoKyKcFGuZ8EsXYhVrKyi3j+UXEu1VDOrBv6h5BKXlMQhWaKoSei4fKlOGKbWFLxPnm+OQIwviUVOhTxv6WGYlUhuGg/xI47gmszmmHEp5gA4JbMZptlpsrRBUqyAbvEu0+Bvyb2fP1B1DlA2CEc9fTrNI/Lh6fmRCEFYrGpQnZKXvEVKtlkR1NyOhaXV1RArplALBUrVRIUl76EKUGFUCAujogfxuaTJIxF1n5jz6ry6eEYYx3RdGfEpw6KSe4NacFRAteJlyvNYXBlWo5Ph6V4+VvXjDKeWRfQvBIyNNX+ZRtHufkXrPqCINfc9hTYTlnfxMxxjiiJYpnSZsHztZ4tUfoiEp9oJr7UQhR5HW2r1bOwwLaStEKLkXFdjlaSEP2UVuPiU7l+Swpps+O8s1WZxer3mrkb8/bTILlCwStw/gDnnS3ZxfMw4Cr8lj5g+RMlTL0wWx+j47M35+fvz8zfHb9+/O+2/XU28GISPF8uEIvq8Ep5300tEs0qgKOpqDZ3Aid/ySq6YQOjGefuXg65SMv16cWHjJ/Etp97Deod/S0icGzLXRLI+qrluvcTb228rffItisgUcWwn3E6jyKHmYsmfD5tcMhezdwu+nfUcsbncHapwFxXov4F1PXXnpez/C99aXZwvRvlDuOxhl4AGJ3/AH1BdeZvF/gEMErnvGSUzkFU4I6JSkl8X6LncD2U4ZoSTRwxTxFGNR2UJScWgS+ACumE2X/XKkmZXmf5STif8VYgqaVb1dVNx3yW//VZ7kLWNoM5waeym5pDPafIE3aD2ot6tyNZI9SKMl9vsuwLVq728ockKArnpuPdKaKnaSm67YniNw+evdZ8eEsb3ZLCz6iQxr7OPouQJTwvKbDfi5KiO2FwNwjFbaeodnwanW71bTH20mvo/pINsSTWCFtw0ljVBxbylmaDX662c9S+NNOVr6XhD3fPNj5ZvOANTblWQeNMq6/5YVakiIVsYeAppzNIwxIw9pFH0nO0Dln9IAzWZylYPVgvrtbiy+BfmmwoN628tT8IeqlcVb1r2G6tI/nhpx25+n6OUiUqL5g4lk3TDbNXrLJ0xTLkqGllTZvD9l2nbDrHgJzLj3kF+99ZwcymVy6mVUi+1Xcll7TpoUxMrqv38FOpDSqKpnS7uMc2F53FctgSiiMi3Cp5Bub4Zji6+eM6lf6e75pdy7+JLcaJl+1+MlIqSIj9GU456+QMpZ5sSxVFdXh/dV3TStigrKdkT4XLrsoKo2lA5fffu7ZkCP4pBKae/n7xXKktB6Z+cvfm9ShFxFvZP+v061fnZ+xpV/+y6RvGjG8hUJSnfK6CK/CeeRRiUs5Oz9++UnxU4x4z3T/rnVRb5Hu6em14tF42brtxs2RvjCTyQeCqbl/y4C6QtIZbGvKhNxvpe2VanGqOU4f+8SW2ieuHENrH4T59YK2YcRZG6Ol1VPyCGp6oTq6uDc7U635XA+4Kg211JKE/2XgS3rQ8kHhD6S1AjiR9+CSts8MvA2q2DTp4nDsDKjv+WiPHXq+O6qnnkmSGIhAwTdyj/uDff1my6YLDMzsN7krn5HS2WEb4ApWhuUcjUBRGO1JOn33g6w70Y88rpePGXwMePJ72T3pu3zSfo2bstR+dCtp+UdyEWacTJMsINB/7sNTxhSOLoGRjO9lZwPF0mJOYgKrEmg/w7xpbpeFcRvWlDuBfOD0n1j47r9z2a5wuLok3WfMqxAiypXAu5kGIBTnuQp0u4x3P0SBKaHR9nJigmO6fu90QQkZufDVqSGHgym0VY1lDyYkW+vwMJhXnCH8j3Tl7t1u1oxlN2R/j8UDlWypKkurOzonaHwg3r+HzTM1y/i6HtuNwiYUKdw8+5Nb9urpCjnpEslohiP6mQ/cJlniMZ1SsHzfsnqNxoVXoV/7PIJ7Wz9O1GaL+wUnKoHX633ZDZFJVfPmm4NSM9QlYwuZyNrbOXK96k8c3m+ticUeFAM7lXSIHPUSy8E/8zRdmJzC/MrFhavPU2UYOt8v9RoTRIp8EsvzKyCDOWDetfGUo+db8wlJ8NiVWko/qD3xr4dDLwZvIHtQ5e46WWWbiSkOXTPMFWky2oefIss2jn5/8FAAD//1BLBwhjHcYOrBEAAOtCAABQSwMEFAAIAAgAAAAAAAAAAAAAAAAAAAAAABQAAAB3aW5kb3dzL3NlbmRsb2dzLnBzMaxTT0/bThC976eY35JDIv3s2EFEhdYtNKVglT8Rhkot5bCNJ/aK9a61O3ZbIb57tTYhUEDqoXvyzLx5M29m/GaDAQCE2ZeT03mWZp3l30WtjMgdCFCmgO+NzhUCGaASoTSOYGksWCQrsRUKWingoEFHn4+PTOFC1tN+2M9mZ+n8PD09+bfM/p2La/Q0tbCiQkILZgkCvqZzWEqFoEXVETddwf/hRykXJUgHDjWtKh4aR3sFarqn9QV9ZNxWXeDIFIA6r43UFLKNt+xyVuUK6b3UudTFcHTFug6GHcOlIyt1cdUZg7mgko0Yk0sY/jc8R0eBd/WB0QhuOphFaqxmt4wNDoxQGQnCPVs4SGC3R/BjpNLkPOEHSPx177uwkie8JKp3xuN4+iqcbobxZDuMp+NKLEqpcfxuYao6KYxQzpOuMg9R5GgdT3Zv+M+gckGL1kmjecInUTwJ4jjYjPgtu33QECQwGKa6NdcYnKGjviPYfdTxKLw3GRv0m35Jybz5CyU7m5OtyfTBKlYpqf4oFfKkm+RTWffbfEbfVhBtB1F8x7QGLZRETcHCWItKkDRa+j5fwvnz4gnf+5TNsv25agqpX4Kuy0dhHEZPYUaTkBqtL7geeThb+ddfaf5nclsJPxtliiDHWplfFWryRMNnmc6MwlQ7EnqBR9LRI4fHLWXR2E7+nXXi/6PA1UoS8G8hH11G/Xn7A3nmItZr/x0AAP//UEsHCIVf41EhAgAAXgQAAFBLAQIUABQACAAIAAAAAABjHcYOrBEAAOtCAAAcAAAAAAAAAAAAAAAAAAAAAAB3aW5kb3dzL3dpbmRvd3Njc2VoZWxwZXIucHMxUEsBAhQAFAAIAAgAAAAAAIVf41EhAgAAXgQAABQAAAAAAAAAAAAAAAAA9hEAAHdpbmRvd3Mvc2VuZGxvZ3MucHMxUEsFBgAAAAACAAIAjAAAAFkUAAAAAA==" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -501,15 +501,19 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`", ExecDuration: `"{3}`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `"{0}`", Output: `"{1}`", Error: `"{2}`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `"$global:ExitCode`", Output: `"$($global:ErrorCodeNames[$global:ExitCode])`", Error: `"$turncatedErrorMessage`"" + } } diff --git a/pkg/templates/templates_generated.go b/pkg/templates/templates_generated.go index 3d850457932..8f02d98c1a0 100644 --- a/pkg/templates/templates_generated.go +++ b/pkg/templates/templates_generated.go @@ -7519,10 +7519,10 @@ $arguments = ' -CSEResultFilePath %SYSTEMDRIVE%\AzureData\CSEResult.log'; $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; -if (!(Test-Path $inputFile)) { echo 49 | Out-File -FilePath '%SYSTEMDRIVE%\AzureData\CSEResult.log' -Encoding utf8; exit; }; +if (!(Test-Path $inputFile)) { throw 'ExitCode: \"49\", Output: \"WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN\", Error: \"%SYSTEMDRIVE%\AzureData\CustomData.bin does not exist.\"' }; Copy-Item $inputFile $outputFile; Invoke-Expression('{0} {1}' -f $outputFile, $arguments); -\" >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\CSEResult.log)) { exit 50; }; $code=(Get-Content %SYSTEMDRIVE%\AzureData\CSEResult.log); exit $code`) +\"`) func windowsCsecmdPs1Bytes() ([]byte, error) { return _windowsCsecmdPs1, nil @@ -7611,7 +7611,7 @@ param( $StartTime=Get-Date $global:ExitCode=0 $global:ErrorMessage="" - +Start-Transcript -Path $LogFile # These globals will not change between nodes in the same cluster, so they are not # passed as powershell parameters @@ -8052,17 +8052,21 @@ finally { # Generate CSE result so it can be returned as the CSE response in csecmd.ps1 $ExecutionDuration=$(New-Timespan -Start $StartTime -End $(Get-Date)) - Write-Log "CSE ExecutionDuration: $ExecutionDuration" - - # Windows CSE does not return any error message so we cannot generate below content as the response - # $JsonString = "ExitCode: `+"`"+`"{0}`+"`"+`", Output: `+"`"+`"{1}`+"`"+`", Error: `+"`"+`"{2}`+"`"+`", ExecDuration: `+"`"+`"{3}`+"`"+`"" -f $global:ExitCode, "", $global:ErrorMessage, $ExecutionDuration.TotalSeconds - Write-Log "Generate CSE result to $CSEResultFilePath : $global:ExitCode" - echo $global:ExitCode | Out-File -FilePath $CSEResultFilePath -Encoding utf8 + Write-Log "CSE ExecutionDuration: $ExecutionDuration. ExitCode: $global:ExitCode" + Stop-Transcript - # Flush stdout to C:\AzureData\CustomDataSetupScript.log - [Console]::Out.Flush() + # Remove the parameters in the log file to avoid leaking secrets + $logs=Get-Content $LogFile | Where-Object {$_ -notmatch "^Host Application: "} + $logs | Set-Content $LogFile Upload-GuestVMLogs -ExitCode $global:ExitCode + if ($global:ExitCode -ne 0) { + # $JsonString = "ExitCode: `+"`"+`"{0}`+"`"+`", Output: `+"`"+`"{1}`+"`"+`", Error: `+"`"+`"{2}`+"`"+`"" + # Max length of the full error message returned by Windows CSE is ~256. We use 240 to be safe. + $errorMessageLength = "ExitCode: `+"`"+`"$global:ExitCode`+"`"+`", Output: `+"`"+`"$($global:ErrorCodeNames[$global:ExitCode])`+"`"+`", Error: `+"`"+`"`+"`"+`"".Length + $turncatedErrorMessage = $global:ErrorMessage.Substring(0, [Math]::Min(240 - $errorMessageLength, $global:ErrorMessage.Length)) + throw "ExitCode: `+"`"+`"$global:ExitCode`+"`"+`", Output: `+"`"+`"$($global:ErrorCodeNames[$global:ExitCode])`+"`"+`", Error: `+"`"+`"$turncatedErrorMessage`+"`"+`"" + } } `) @@ -8142,6 +8146,7 @@ var _windowsWindowscsehelperPs1 = []byte(`# This script is used to define basic # It is better to define functions in the scripts under staging/cse/windows. # Define all exit codes in Windows CSE +$global:WINDOWS_CSE_SUCCESS=0 $global:WINDOWS_CSE_ERROR_UNKNOWN=1 # For unexpected error caught by the catch block in kuberneteswindowssetup.ps1 $global:WINDOWS_CSE_ERROR_DOWNLOAD_FILE_WITH_RETRY=2 $global:WINDOWS_CSE_ERROR_INVOKE_EXECUTABLE=3 @@ -8204,6 +8209,70 @@ $global:WINDOWS_CSE_ERROR_GPU_DRIVER_INVALID_SIGNATURE=59 $global:WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_EXCEPTION=60 $global:WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_URL_NOT_EXE=61 +$global:ErrorCodeNames = @( + "WINDOWS_CSE_SUCCESS", + "WINDOWS_CSE_ERROR_UNKNOWN", + "WINDOWS_CSE_ERROR_DOWNLOAD_FILE_WITH_RETRY", + "WINDOWS_CSE_ERROR_INVOKE_EXECUTABLE", + "WINDOWS_CSE_ERROR_FILE_NOT_EXIST", + "WINDOWS_CSE_ERROR_CHECK_API_SERVER_CONNECTIVITY", + "WINDOWS_CSE_ERROR_PAUSE_IMAGE_NOT_EXIST", + "WINDOWS_CSE_ERROR_GET_SUBNET_PREFIX", + "WINDOWS_CSE_ERROR_GENERATE_TOKEN_FOR_ARM", + "WINDOWS_CSE_ERROR_NETWORK_INTERFACES_NOT_EXIST", + "WINDOWS_CSE_ERROR_NETWORK_ADAPTER_NOT_EXIST", + "WINDOWS_CSE_ERROR_MANAGEMENT_IP_NOT_EXIST", + "WINDOWS_CSE_ERROR_CALICO_SERVICE_ACCOUNT_NOT_EXIST", + "WINDOWS_CSE_ERROR_CONTAINERD_NOT_INSTALLED", + "WINDOWS_CSE_ERROR_CONTAINERD_NOT_RUNNING", + "WINDOWS_CSE_ERROR_OPENSSH_NOT_INSTALLED", + "WINDOWS_CSE_ERROR_OPENSSH_FIREWALL_NOT_CONFIGURED", + "WINDOWS_CSE_ERROR_INVALID_PARAMETER_IN_AZURE_CONFIG", + "WINDOWS_CSE_ERROR_NO_DOCKER_TO_BUILD_PAUSE_CONTAINER", + "WINDOWS_CSE_ERROR_GET_CA_CERTIFICATES", + "WINDOWS_CSE_ERROR_DOWNLOAD_CA_CERTIFICATES", + "WINDOWS_CSE_ERROR_EMPTY_CA_CERTIFICATES", + "WINDOWS_CSE_ERROR_ENABLE_SECURE_TLS", + "WINDOWS_CSE_ERROR_GMSA_EXPAND_ARCHIVE", + "WINDOWS_CSE_ERROR_GMSA_ENABLE_POWERSHELL_PRIVILEGE", + "WINDOWS_CSE_ERROR_GMSA_SET_REGISTRY_PERMISSION", + "WINDOWS_CSE_ERROR_GMSA_SET_REGISTRY_VALUES", + "WINDOWS_CSE_ERROR_GMSA_IMPORT_CCGEVENTS", + "WINDOWS_CSE_ERROR_GMSA_IMPORT_CCGAKVPPLUGINEVENTS", + "WINDOWS_CSE_ERROR_NOT_FOUND_MANAGEMENT_IP", + "WINDOWS_CSE_ERROR_NOT_FOUND_BUILD_NUMBER", + "WINDOWS_CSE_ERROR_NOT_FOUND_PROVISIONING_SCRIPTS", + "WINDOWS_CSE_ERROR_START_NODE_RESET_SCRIPT_TASK", + "WINDOWS_CSE_ERROR_DOWNLOAD_CSE_PACKAGE", + "WINDOWS_CSE_ERROR_DOWNLOAD_KUBERNETES_PACKAGE", + "WINDOWS_CSE_ERROR_DOWNLOAD_CNI_PACKAGE", + "WINDOWS_CSE_ERROR_DOWNLOAD_HNS_MODULE", + "WINDOWS_CSE_ERROR_DOWNLOAD_CALICO_PACKAGE", + "WINDOWS_CSE_ERROR_DOWNLOAD_GMSA_PACKAGE", + "WINDOWS_CSE_ERROR_DOWNLOAD_CSI_PROXY_PACKAGE", + "WINDOWS_CSE_ERROR_DOWNLOAD_CONTAINERD_PACKAGE", + "WINDOWS_CSE_ERROR_SET_TCP_DYNAMIC_PORT_RANGE", + "WINDOWS_CSE_ERROR_BUILD_DOCKER_PAUSE_CONTAINER", + "WINDOWS_CSE_ERROR_PULL_PAUSE_IMAGE", + "WINDOWS_CSE_ERROR_BUILD_TAG_PAUSE_IMAGE", + "WINDOWS_CSE_ERROR_CONTAINERD_BINARY_EXIST", + "WINDOWS_CSE_ERROR_SET_TCP_EXCLUDE_PORT_RANGE", + "WINDOWS_CSE_ERROR_SET_UDP_DYNAMIC_PORT_RANGE", + "WINDOWS_CSE_ERROR_SET_UDP_EXCLUDE_PORT_RANGE", + "WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN", + "WINDOWS_CSE_ERROR_NO_CSE_RESULT_LOG", + "WINDOWS_CSE_ERROR_COPY_LOG_COLLECTION_SCRIPTS", + "WINDOWS_CSE_ERROR_RESIZE_OS_DRIVE", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_FAILED", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_TIMEOUT", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_VM_SIZE_NOT_SUPPORTED", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_URL_NOT_SET", + "WINDOWS_CSE_ERROR_GPU_SKU_INFO_NOT_FOUND", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_DOWNLOAD_FAILURE", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INVALID_SIGNATURE", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_EXCEPTION", + "WINDOWS_CSE_ERROR_GPU_DRIVER_INSTALLATION_URL_NOT_EXE" +) # NOTE: KubernetesVersion does not contain "v" $global:MinimalKubernetesVersionWithLatestContainerd = "1.28.0" # Will change it to the correct version when we support new Windows containerd version @@ -8292,7 +8361,7 @@ function Set-ExitCode ) Write-Log "Set ExitCode to $ExitCode and exit. Error: $ErrorMessage" $global:ExitCode=$ExitCode - $global:ErrorMessage=$ErrorMessage + $global:ErrorMessage=($ErrorMessage -replace '\r*\n', '') exit $ExitCode }