From 8e43138fd3a417db7428f695bc6b04543b0aa85d Mon Sep 17 00:00:00 2001 From: Abel Hu Date: Thu, 14 Dec 2023 03:31:21 +0000 Subject: [PATCH] feat: return error details in Windows CSE --- parts/windows/csecmd.ps1 | 4 +- parts/windows/kuberneteswindowssetup.ps1 | 22 +++-- parts/windows/windowscsehelper.ps1 | 69 +++++++++++++- parts/windows/windowscsehelper.tests.ps1 | 17 +++- .../AKSWindows2019+CustomCloud/CSECommand | 2 +- .../AKSWindows2019+CustomCloud/CustomData | 24 +++-- .../AKSWindows2019+CustomVnet/CSECommand | 2 +- .../AKSWindows2019+CustomVnet/CustomData | 24 +++-- .../CSECommand | 2 +- .../CustomData | 24 +++-- .../testdata/AKSWindows2019+K8S116/CSECommand | 2 +- .../testdata/AKSWindows2019+K8S116/CustomData | 24 +++-- .../testdata/AKSWindows2019+K8S117/CSECommand | 2 +- .../testdata/AKSWindows2019+K8S117/CustomData | 24 +++-- .../testdata/AKSWindows2019+K8S118/CSECommand | 2 +- .../testdata/AKSWindows2019+K8S118/CustomData | 24 +++-- .../AKSWindows2019+K8S119+CSI/CSECommand | 2 +- .../AKSWindows2019+K8S119+CSI/CustomData | 24 +++-- .../AKSWindows2019+K8S119+FIPS/CSECommand | 2 +- .../AKSWindows2019+K8S119+FIPS/CustomData | 24 +++-- .../testdata/AKSWindows2019+K8S119/CSECommand | 2 +- .../testdata/AKSWindows2019+K8S119/CustomData | 24 +++-- .../CSECommand | 2 +- .../CustomData | 24 +++-- .../AKSWindows2019+ManagedIdentity/CSECommand | 2 +- .../AKSWindows2019+ManagedIdentity/CustomData | 24 +++-- .../AKSWindows2019+SecurityProfile/CSECommand | 2 +- .../AKSWindows2019+SecurityProfile/CustomData | 24 +++-- pkg/templates/templates_generated.go | 95 ++++++++++++++++--- 29 files changed, 361 insertions(+), 158 deletions(-) diff --git a/parts/windows/csecmd.ps1 b/parts/windows/csecmd.ps1 index 267fc5e1e44..fde9cf9fc51 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: |C:\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 fae93f55810..826c565b073 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..fb0307cca56 100644 --- a/parts/windows/windowscsehelper.ps1 +++ b/parts/windows/windowscsehelper.ps1 @@ -2,6 +2,8 @@ # It is better to define functions in the scripts under staging/cse/windows. # Define all exit codes in Windows CSE +# It must match `[A-Z_]+` +$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 +66,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 +218,8 @@ function Set-ExitCode ) Write-Log "Set ExitCode to $ExitCode and exit. Error: $ErrorMessage" $global:ExitCode=$ExitCode - $global:ErrorMessage=$ErrorMessage + # we use | as the separator as a workaround since " or ' do not work as expected per the testings + $global:ErrorMessage=($ErrorMessage -replace '\|', '%7C') exit $ExitCode } diff --git a/parts/windows/windowscsehelper.tests.ps1 b/parts/windows/windowscsehelper.tests.ps1 index fa7419cd1e2..50f820696b2 100644 --- a/parts/windows/windowscsehelper.tests.ps1 +++ b/parts/windows/windowscsehelper.tests.ps1 @@ -126,5 +126,18 @@ Describe 'Get-WindowsVersion and Get-WindowsPauseVersion' { $expectedPauseVersion = "ltsc2022" $windowsPauseVersion | Should -Be $expectedPauseVersion } - -} \ No newline at end of file +} + +Describe 'Validate Exit Codes' { + It 'should succeed' { + for($i=0; $i -lt $global:ErrorCodeNames.Length; $i++) { + $name=$global:ErrorCodeNames[$i] + $name | Should -Match '[A-Z_]+' + + Write-Host "Validating $name" + $ErrorCode = Get-Variable "$name" -ValueOnly + $ErrorCode | Should -Be $i + Write-Host "Validated $name" + } + } +} diff --git a/pkg/agent/testdata/AKSWindows2019+CustomCloud/CSECommand b/pkg/agent/testdata/AKSWindows2019+CustomCloud/CSECommand index d837b942e90..48f43436640 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: |C:\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 39fedf9b5b6..c1651c0bca2 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..f903f048ca9 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: |C:\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 d5a0136293f..c567ca14f98 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..f903f048ca9 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: |C:\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 26564fb28fd..72aae03d0a7 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..f903f048ca9 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: |C:\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 20a02cb9005..da78841ba75 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..f903f048ca9 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: |C:\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 3d0fa622f85..475b9631369 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..f903f048ca9 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: |C:\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 6a985e9783e..daaa19b9c6f 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..f903f048ca9 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: |C:\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 67d817b08ee..7b6db5d4a6f 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 = "UEsDBBQACAAIAAAAAAAAAAAAAAAAAAAAAAAcAAAAd2luZG93cy93aW5kb3dzY3NlaGVscGVyLnBzMdR7bXPbutH2d/+KHVnTY88J5bc4OfEZPlOGgm3WEqkhKTtpkmFhCpbwhCJYALTj5s5/vwfgi0hZop2094fmg6JQe+0uFhd2FwCzC+GCChAxp5kEKiAXZAaSwYzc0ZTALRY0hlzSBO7yNJaUpWJnFxwte0ukJLwhXYsATUEuSKlXQJ7OCAch8Zym84NYkIMHms7Ygxjs7OzCsEDjJAHyjUqI2YxoFTeFENgB2unPE3aLk7Mbxx16N0FkByhCvu/50dS9cr0b1zyCXThnHPKUfMtILMkMCOeMQ4zz+ULC7aP2KcYyXsBtwuKvysbX/JbwlEgiSpcEkXk2yMRRh8mhd+OOPGsYnTsjFN044WXko9D/aB53gBz32rtCEfqA7GlovR8h86RDWmt2vTBCH5wgNF93iNqXyL6KrIkTBci/Rn5ke66L7NC5dsKP5mkHcmJNAxQ5Y+uiaetNB+IChVEwfe+iMJr46Nz5YL7tlHaRb4UoCr0r5Ebnnh9Z/tj8owPiovDG868ixw2Rf27ZKGh49u4FQGtoTULkN1BHhx2wseVaF2iM3DByJk1Q1/zb1sixPR1ux0aRZdve1A2b6C4i2J4bWo6L/KFGOG4QWqMRGppHXYRYQ/lT13XcC/OoixneBLlBcLluposSFeTc8dGNNRpprO25587F1FfgLnY47rU1cobRxPKtMVKz4LiR9fepj0oV5lEXXVwvGnr2FfKj0IveT53RsGRoPXbzqIs7ipy2FdnID51zx7ZCFJhHXZyp1/E66riLMmg8CT8+hXQRBrlqwUcBslUswlFgHncx5GIcWBH6MLHcYWT59qVzjczjLnIUgMLIxLtBfnCJRqNo4jvXzghdIPO4iyYaHaAw8tGFE4T+x2iC/LETBI7nmsddbHmKvLZGUxWNziSiUM544vlhZNsX6Bq5YWAed2aSNsS6up5MRtMLx63AnTnFC6Nzb+oO26vdPO7MJzWoYKI7Hb9HvnnSxYwVZuJ7146Kn+NeRIHtO5MwME+6KBKElq9SyBBFPlIhLVBRaAVX5kkXW1YsDlA0sewr6wKZJ110qRFX0/fId1GIghWwiykrU66zQnQxpEZcukE09oZTVfe6yNFYkzrJ1la66FGDNE9qSBcpGlFz1HR9+LjCvSxnrBJyBXzdRQ41p6E9iYYfXWvs2JHmsm+5CtdFjIJ+ZWJcz4evu4gxmaocsKrx5usuUhR2QuuiDensPFYheO+4lv+x6la6GFHFAX2wR9MhasWhixgKNx1ujl8XNyrcJnvdWSOyp0HojaOhFVpqgObrd7ALPpE5V/0tFVWDyWZE9ZKxIPFypnpHeFiQFOyzz9a/ck6GWOLPdi4kW6qvg1uawowRASmTquUV8hk3Ap0TpqMwGnkX5unhv+FFgHwi8kQOEjZ/uRO2N/mobEe2Nxqp1tJz66x22kVeHwXO31HkBdHQV1XstLPsTaaFmF91K5a2dG45qm857ayAW7ChM0beNDRPOwvgFvD1ONLuq7weTCeKOcqPzoq4RdXUL1qpAIXmaWdxnEyj4GoaOe65tyoo5mlnddxidLVPsZzR1EfmaWf71NRSNHKBc+FaoUZ25cRt9tEHG03UN/NNV2Z8LmboAzLfHO2ovaLrhegMrupN2zXhgrLGcopZKjFNoXffqy2OaUqXOHmCuqFyMcKSCGkXKMJnYELvaHD8x+CwB7twQ5ME4gVO5wSoVFtdvYVknJNYwn1pXC+zBwIizzLGJaTkod67xivNpXjtViDxbUJWpic4/ornRHlwfzR4Mzg+MrBauIOjg1uaYk6JOFipM9ZkjHL/auDl7M3rgcR8MP9Xb0ft8AkkepRdzqzHoe3M28GzvjREfs0VkAtcPxcgdHTAeu885+Md48cnl8e1q++ed/XdM67u7JQnI3c0kYQDJ0t2rxiWF3zgOJaEC9j7fLgPDwsaLwBzAjHOZM7JTKXhVIjlgHwjwHKZ5bIgScLmczIDueAsny8gYw+EiwVJkp3SkK8NuXmSCPgO/QgMTrIExwR++3z42yv47Tf4sVMJh3RJhMTLDL5Dr793QaQxxJKAcc74Ektg+2fQj3oaUR7NwA2nkhgjNt/rL4kQeE724fsOAEB/KeZgQvUY/melX/9eIL1iNEp4p6l3yB7ShOHZOU2Id0/4pZRZqXiCOV7u6a/qzyf9byIJ3xvjdIYl44/KruQ52f/ySUhO0/mXWrw/5cmrXwYPiZA0xcrFCZaLFyuiqWxoQd+otNmM6Cf7O/qvXTinXBF5QeKvKjMIQoDeAVacIfBA5aI4A8NLAqn6oAJwwgmePUKM4wWZASuOya4vh8UMKKSrRE345HgD5fGXs7MLIs/LH/ZUNEoH+oJgHi/AhL/u7esn9A72QiKkoYBQrRpb2RpSXs1zG6vsDKlKZ4w/royJvXX4q5V7rzQq0Cq8TMX2y9mZlSSVHkpE4dCPndqv0uLAZnkqwUgJHDYdqmkJvamg6byKUJUb2F0jOgbYLHtUUjrUd5wtoV9Z+HT4ZV9Nx/rU92pbCmw4kiyhDFQNBKMBeqJBr6uYlCNTnyQRpB3VOOdkwplkMUtEY2r0zzTdJPApeBSSLAcukYNA/U7lYyURPmbky9lZITEkdzhP5Ct4CUIkJyVP1J87xgmOF7DXz0o5laIqPSjNl8XUX+MkJ+J5l/abcwfVFD8dn5EyWWf02vY6eGPsfjdXgJb0j52n39oO83sakwmjqRzjFM8JVwFZG4Za62smV+Hqs2Q24WzOiRATTu4IJ2msVmX/6dMVaCPit4AmJJXJoypbNM3Jbw0zszJpqkTL1WIshzGkeJ4yIWksBoFk2QOWscoEgcRcuuShQSrJH9ei2cd8rpn1fcqpqRLGnzAmcsFmZu+CyN6f4OV6jZvrBP/R0uMTyR8Nmy2XOJ1B/aXnpPfsKzF8ImShtgeGpUwWhg2Fo0TAafH1cUgS/BiQmKUzAUeHq9krj+Lb3gdEGlW6hdW3fuOZ2u2MyyLVO8c0KQpuFUyVF9SoB6AldQncQJl28HWY9xorRhO6TIFWljmpoPOFFHZCSZm/+qoZWKdyn9yr301wyYPh3f5/1Sb2xjTmTLA7ObCyLKGxDnilcaD2ZYocqqcQA6TwIUnIUsWut0H5oKwQPTWHVdndKDjhLCNcUiI+9aoK0vuiaFyl0k2osZq/WHzqDXOuPR2LAtQOGEpwJshsTJOEimJ229q2BW8Qchx/1ePcK0zuN6bnmeW0eWVuKiNVZMisqBKKEtvrwo9WM9Mk4c6Lmxizu3no7j3MrS1Mk+/6aRGuxlADIqFeH2qI9T/UgiXfqFythaa2YujVRFUgs93u1D83gOZTp/TN3QrZjOaECZmxtEgZmEubLbNc9a9laBsjsTnBUi1gnIJCSLokILHQDRYv4EXLNC6dx4WNYsEFqmfIEzILsfhqFb8Y6BuJc0mgt+q2VV9eZK18qZZrb5Xe/tErvTRqN4uy/49eaTHjNI1phpNNRif1j8ZUEO7MIPgYhGgManwsVcUTygJlxXHRC/l5OiL3JIFLOl8QIbWZXZCczueEF0c8Ogasonq/+q3w4G/sNiwfGJYEqHcC+wNrNitT797R6b7KNUQtXzC8Wpe+vKXboghGGccq0sZqiI1QGJUDtWuqldLXvwpUBRXiKqj4Tn1mnN1T1eCpOW/Oq0/mVEjC151Rnzr/9Uo2GJXGHhhOmuWyTLqNYW0kGZm9iGNNHhc4o+6WfyEzPFnc53mSPL8xMft3OBGbNziVN1NRbtfnJCUcJ5DlPGOiXORFztAfqrIZLpOtvULlx/6WprwYO8wqayuE6i3X3VhVI8WnotVWn5r+tSis2Yb/V9TUIiGvN9fN1P4yL4pTTdFI8LuwkDITZwcHQuL4K7sn/C5hD4OYLQ/wwcnr09N3p6evD968e3t0/GY18WoQIVlmjGP+uDJebpszzIuSX3VvrZ2bwql/lS1bNYHQT8t9Xgm6yOnsy9mZSx7Ut1L6BdHb+xujaRnI0hOter9F3XYv92LeNjbE1zihMyyJy6SbJ4nH0TKTj3ubKFmaefFee7vqBRYLfQzU0K5azf+A6naNLnvW/xO9rQa4XIz6L0XZvT4FEw7/hD+hufKedvW7MGT6gDNhc9DttqCqJdJfl/ixPvgUJBVU0nsCMyxxS0djCWnHoE/hDPpxMV/tFpIX9wt/qacT/qpM1TKrRnpTF9+nv//eelDsD8GYkzrYm3aBcsHZA/Sj1g/tbYneAxlBQki2Lb4rULutK3cuRUOgTxdfvBI62rNa23M5vKXh05c2p0dUyBcqeLa9pKlsq08S9kBmlWRx7HC430Y8XQ2KmJ0y7a2dCUdb2a2mPllN/Z+aIFtKjZIFP091T9AIbx0mGAwGK7L+ZaNM/bMm3sgKQvTBCW1viPSZBE2fRmWdj02XGhaKhUFmkKcij2MixF2eJI/FgV/9/hq0bPa2MtiootdBZfUnLk8PNqy/tToJL3C96fimZf9kFem/fnZrjr4tcC5Up8VLQukivWG22n2WJQTh0lA7VqQr+MuXaddRsNKnKuOLk/zzZ8CbW6nSTquV+tnY1VrW7mg37VZVt19eN73PaTJz8+Ut4aXxMo/rLYFqIsozgUfoXV6NxmefA+88vLF89Lk+pPhcXV254Wc756qlKO/LevuD8oG2s82J6k6u7I9uGz6ZW5zVkuKBSn1G2UA0Y9g7evv2zUkPvleD6h39cfiu11gKvePDk9d/NCUSKeLjw+PjttTpybuW1PHJZUviez/SpUpLvuuBoeqfepYQ6J0cnrx72/vRgEsi5PHh8WlTRXlY+8LTrY7b/01vIW05BJMM7mg605uX8l4LdCwh1cE8a03G+qHYVlJNcC7If9+kbpL6yYndpOK/fWKdVEicJMbqGtV4jwWZGV5qrG7IjeZ8NxLvTyTd/spCfYX3U3DXeU/TIeW/BLVZevdLWBWDXwa2Xi/YKevELjjFPV+GhXy1updrhkdfDoIqyDD1R/qd+vL8ctObBFlx8T3QytE3vMwScga9anOLY2EsqSLSQF9zk9mcDFIiG9fg1Qv4B/eHg8PB6zebr8qL37bckSvbIatfeljmiaRZQjbc7ItX8ECApckjCFKcrZB0ljGaSlCd2KaA/CfGVvh40zD9NIZwq8gPrPk/AdovdmyeL6KaNt3z9Q56IFjj/Y8zbRbgaABluYRbssD3lPHinrgIQTXZpfTxQCURffi5wUuagmTzeUJ0D6XfoCjPd4BxWDB5R7/tlN1uO44onYkbKhd7vYNe3ZI0T3ZW0v5I0bCNLw894/WXLsxn3mLRMOXO3qcyml+erpD9gc2WGeYkZA2xX3hrZ19n9caN8ssLVBm0prxB/lnVk9al+fYgdL+ZUmto3XJ3vQrz1FT5lsmG12M0I3QHU9p5cnT2845v8vjq6fp4OqOKQHN9VshBLnCq2En+mePi6uUXZlYtLdn52tCGWJX/kakOyM6GsPzKyBIiRDGsf2co5dT9wlB+bCisqhy1H/y+Qc9OAX5a/MFog9d0GXUVbhRk/bQssM1iC0ZZPOsquvPjfwMAAP//UEsHCAAo+VtGEAAAYjYAAFBLAwQUAAgACAAAAAAAAAAAAAAAAAAAAAAAFAAAAHdpbmRvd3Mvc2VuZGxvZ3MucHMxrFNPT9tOEL3vp5jfkkMi/ezYQUSF1i00pWCVPxGGSi3lsI0n9or1rrU7dlshvnu1NiFQQOqhe/LMvHkzb2b8ZoMBAITZl5PTeZZmneXfRa2MyB0IUKaA743OFQIZoBKhNI5gaSxYJCuxFQpaKeCgQUefj49M4ULW037Yz2Zn6fw8PT35t8z+nYtr9DS1sKJCQgtmCQK+pnNYSoWgRdURN13B/+FHKRclSAcONa0qHhpHewVquqf1BX1k3FZd4MgUgDqvjdQUso237HJW5QrpvdS51MVwdMW6DoYdw6UjK3Vx1RmDuaCSjRiTSxj+NzxHR4F39YHRCG46mEVqrGa3jA0OjFAZCcI9WzhIYLdH8GOk0uQ84QdI/HXvu7CSJ7wkqnfG43j6KpxuhvFkO4yn40osSqlx/G5hqjopjFDOk64yD1HkaB1Pdm/4z6ByQYvWSaN5widRPAniONiM+C27fdAQJDAYpro11xicoaO+I9h91PEovDcZG/SbfknJvPkLJTubk63J9MEqVimp/igV8qSb5FNZ99t8Rt9WEG0HUXzHtAYtlERNwcJYi0qQNFr6Pl/C+fPiCd/7lM2y/blqCqlfgq7LR2EcRk9hRpOQGq0vuB55OFv5119p/mdyWwk/G2WKIMdamV8VavJEw2eZzozCVDsSeoFH0tEjh8ctZdHYTv6ddeL/o8DVShLwbyEfXUb9efsDeeYi1mv/HQAA//9QSwcIhV/jUSECAABeBAAAUEsBAhQAFAAIAAgAAAAAAAAo+VtGEAAAYjYAABwAAAAAAAAAAAAAAAAAAAAAAHdpbmRvd3Mvd2luZG93c2NzZWhlbHBlci5wczFQSwECFAAUAAgACAAAAAAAhV/jUSECAABeBAAAFAAAAAAAAAAAAAAAAACQEAAAd2luZG93cy9zZW5kbG9ncy5wczFQSwUGAAAAAAIAAgCMAAAA8xIAAAAA" +$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..f903f048ca9 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: |C:\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 f95b8987f43..8ae15e30fae 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..f903f048ca9 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: |C:\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 121739b16fa..cdad2aced53 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..f903f048ca9 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: |C:\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 e51295bc4d2..2fd02f5652f 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 = "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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+ManagedIdentity/CSECommand b/pkg/agent/testdata/AKSWindows2019+ManagedIdentity/CSECommand index 1300beb7a95..292421a72d2 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: |C:\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 1407bf2f7f2..680ef8d8cb9 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 = "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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+SecurityProfile/CSECommand b/pkg/agent/testdata/AKSWindows2019+SecurityProfile/CSECommand index a2b9043f044..f903f048ca9 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: |C:\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 13a0accfee2..534578af8c1 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 = "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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/templates/templates_generated.go b/pkg/templates/templates_generated.go index ad9454210f7..4377b51c411 100644 --- a/pkg/templates/templates_generated.go +++ b/pkg/templates/templates_generated.go @@ -7309,10 +7309,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: |C:\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 @@ -7401,7 +7401,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 @@ -7842,17 +7842,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|" + } } `) @@ -7932,6 +7936,8 @@ 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 +# It must match `+"`"+`[A-Z_]+`+"`"+` +$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 @@ -7994,6 +8000,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 @@ -8082,7 +8152,8 @@ 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', '') + $global:ErrorMessage=($ErrorMessage -replace '|', '%7C') exit $ExitCode }