From 16b77a5246662a5f95fa789793a921f89df2e0d8 Mon Sep 17 00:00:00 2001 From: Erik Baranowski <39704712+erikbaranowski@users.noreply.github.com> Date: Wed, 10 Jan 2024 15:02:14 -0500 Subject: [PATCH] Add a new configurable option to the windows installer for static mode for expanding env vars (#5958) * Add a new configurable option to the windows installer for static mode for expanding env vars Signed-off-by: erikbaranowski <39704712+erikbaranowski@users.noreply.github.com> * Update docs/sources/static/set-up/install/install-agent-on-windows.md Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> --------- Signed-off-by: erikbaranowski <39704712+erikbaranowski@users.noreply.github.com> Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> --- CHANGELOG.md | 4 +++ .../install/install-agent-on-windows.md | 26 +++++++++++++- .../grafana-agent/windows/install_script.nsis | 36 ++++++++++++++----- 3 files changed, 57 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 254dd6dde669..0755d98cecda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,10 @@ Main (unreleased) - [GO-2023-2412](https://github.com/advisories/GHSA-7ww5-4wqc-m92c) - [CVE-2023-49568](https://github.com/advisories/GHSA-mw99-9chc-xw7r) +### Enhancements + +- Add an option to the windows static mode installer for expanding environment vars in the yaml config. (@erikbaranowski) + ### Bugfixes - Fix an issue in `remote.s3` where the exported content of an object would be an empty string if `remote.s3` failed to fully retrieve diff --git a/docs/sources/static/set-up/install/install-agent-on-windows.md b/docs/sources/static/set-up/install/install-agent-on-windows.md index 1ff2a05e61a4..ddda581a5355 100644 --- a/docs/sources/static/set-up/install/install-agent-on-windows.md +++ b/docs/sources/static/set-up/install/install-agent-on-windows.md @@ -30,7 +30,11 @@ To do a standard graphical install of Grafana Agent on Windows, perform the foll 1. Double-click on `grafana-agent-installer.exe` to install Grafana Agent. Grafana Agent is installed into the default directory `C:\Program Files\Grafana Agent`. - The [windows_exporter integration](/docs/agent/latest/static/configuration/integrations/windows-exporter-config) can be enabled with all default windows_exporter options. + + The following options are available: + + - The [windows_exporter integration][windows_exporter_config] can be enabled with all default windows_exporter options. + - The [-config.expand-env][flags] command line flag can be enabled. ## Silent install @@ -78,6 +82,24 @@ If you are using `remote_write` you must enable Windows Exporter and set the glo If you are using Powershell, make sure you use triple quotes `"""http://example.com"""` around the URL parameter. +## Silent install with `-config.expand_env` + +You can enable [-config.expand-env][flags] during a silent install. + +1. Navigate to the [latest release](https://github.com/grafana/agent/releases) on GitHub. + +1. Scroll down to the **Assets** section. + +1. Download the file called `grafana-agent-installer.exe.zip`. + +1. Unzip the downloaded file. + +1. Run the following command in PowerShell or Command Prompt: + + ```shell + PATH_TO_INSTALLER/grafana-agent-installer.exe /S /ExpandEnv true + ``` + ## Verify the installation 1. Make sure you can access `http://localhost:12345/-/healthy` and `http://localhost:12345/agent/api/v1/metrics/targets`. @@ -146,6 +168,8 @@ Refer to [windows_events](/docs/loki/latest/clients/promtail/configuration/#wind - [Configure Grafana Agent][configure] {{% docs/reference %}} +[flags]: "/docs/agent/ -> /docs/agent//static/configuration/flags" +[windows_exporter_config]: "/docs/agent/ -> /docs/agent//static/configuration/integrations/windows-exporter-config" [start]: "/docs/agent/ -> /docs/agent//static/set-up/start-agent" [start]: "/docs/grafana-cloud/ -> ../start-agent" [configure]: "/docs/agent/ -> /docs/agent//static/configuration/create-config-file" diff --git a/packaging/grafana-agent/windows/install_script.nsis b/packaging/grafana-agent/windows/install_script.nsis index 07f8986026da..b08a8216c691 100644 --- a/packaging/grafana-agent/windows/install_script.nsis +++ b/packaging/grafana-agent/windows/install_script.nsis @@ -24,17 +24,19 @@ outFile "${OUT}" LicenseData LICENSE # Everything must be global Vars +Var EnableOptionsDialog +Var PassedInParameters Var EnableExporterCheck Var EnableExporterValue -Var EnableExporterDialog -Var PassedInParameters Var Url Var Username Var Password +Var ExpandEnvCheck +Var ExpandEnvValue Page license Page directory -Page custom enableWindowsExporter enableWindowsExporterLeave +Page custom enableOptions enableOptionsLeave Page instfiles # Annoyingly macros need to be defined before use @@ -61,17 +63,18 @@ Section "install" ${GetOptions} $PassedInParameters "/Url" $Url ${GetOptions} $PassedInParameters "/Username" $Username ${GetOptions} $PassedInParameters "/Password" $Password + ${GetOptions} $PassedInParameters "/ExpandEnv" $ExpandEnvValue Call Install Return RunInstaller: Call Install SectionEnd -Function enableWindowsExporter +Function enableOptions nsDialogs::Create 1018 - Pop $EnableExporterDialog + Pop $EnableOptionsDialog - ${If} $EnableExporterDialog == error + ${If} $EnableOptionsDialog == error Abort ${EndIf} @@ -81,16 +84,29 @@ Function enableWindowsExporter ${NSD_CreateCheckBox} 0 13u 100% 12u "" Pop $EnableExporterCheck + ${NSD_CreateLabel} 0 26u 100% 12u "Expand Environment Variables" + Pop $0 + + ${NSD_CreateCheckBox} 0 39u 100% 12u "" + Pop $ExpandEnvCheck + nsDialogs::Show FunctionEnd -Function enableWindowsExporterLeave +Function enableOptionsLeave ${NSD_GetState} $EnableExporterCheck $EnableExporterValue ${If} $EnableExporterValue == ${BST_CHECKED} StrCpy $EnableExporterValue "true" ${Else} StrCpy $EnableExporterValue "false" ${EndIf} + + ${NSD_GetState} $ExpandEnvCheck $ExpandEnvValue + ${If} $ExpandEnvValue == ${BST_CHECKED} + StrCpy $ExpandEnvValue "true" + ${Else} + StrCpy $ExpandEnvValue "false" + ${EndIf} FunctionEnd Function Install @@ -128,7 +144,11 @@ Function Install nsExec::ExecToLog 'sc create "Grafana Agent" binpath= "\"$INSTDIR\grafana-agent-windows-amd64.exe\""' Pop $0 # These separate create and config commands are needed, on the config the binpath is required - nsExec::ExecToLog 'sc config "Grafana Agent" start= auto binpath= "\"$INSTDIR\grafana-agent-windows-amd64.exe\" -config.file=\"$INSTDIR\agent-config.yaml\""' + ${If} $ExpandEnvValue == "true" + nsExec::ExecToLog 'sc config "Grafana Agent" start= auto binpath= "\"$INSTDIR\grafana-agent-windows-amd64.exe\" -config.expand-env -config.file=\"$INSTDIR\agent-config.yaml\""' + ${Else} + nsExec::ExecToLog 'sc config "Grafana Agent" start= auto binpath= "\"$INSTDIR\grafana-agent-windows-amd64.exe\" -config.file=\"$INSTDIR\agent-config.yaml\""' + ${EndIf} Pop $0 nsExec::ExecToLog `sc start "Grafana Agent"` Pop $0