diff --git a/.github/workflows/images_build_windows.yml b/.github/workflows/images_build_windows.yml index 05a0a0546..03507fdaa 100644 --- a/.github/workflows/images_build_windows.yml +++ b/.github/workflows/images_build_windows.yml @@ -9,6 +9,7 @@ on: - '[0-9]+.[0-9]+' - 'trunk' paths: + - 'build.json' - 'Dockerfiles/*/windows/*' - '!**/README.md' - '.github/workflows/images_build_windows.yml' diff --git a/Dockerfiles/agent/alpine/Dockerfile b/Dockerfiles/agent/alpine/Dockerfile index 9abd9d5d4..555405d89 100644 --- a/Dockerfiles/agent/alpine/Dockerfile +++ b/Dockerfiles/agent/alpine/Dockerfile @@ -69,7 +69,7 @@ RUN set -eux && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/modules && \ - mkdir -p ${ZABBIX_USER_HOME_DIR}/user_scripts && \ + mkdir -p ${ZBX_USERPARAMETERDIR} && \ chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_agentd_modules.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd_item_keys.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd.d/ \ diff --git a/Dockerfiles/agent/centos/Dockerfile b/Dockerfiles/agent/centos/Dockerfile index b84b2dc51..5e7cbb1d6 100644 --- a/Dockerfiles/agent/centos/Dockerfile +++ b/Dockerfiles/agent/centos/Dockerfile @@ -87,7 +87,7 @@ RUN --mount=type=tmpfs,target=/var/lib/dnf/ \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/modules && \ - mkdir -p ${ZABBIX_USER_HOME_DIR}/user_scripts && \ + mkdir -p ${ZBX_USERPARAMETERDIR} && \ chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_agentd_modules.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd_item_keys.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd.d/ \ diff --git a/Dockerfiles/agent/ol/Dockerfile b/Dockerfiles/agent/ol/Dockerfile index 10fb0f3ad..dd31d11b9 100644 --- a/Dockerfiles/agent/ol/Dockerfile +++ b/Dockerfiles/agent/ol/Dockerfile @@ -74,7 +74,7 @@ RUN --mount=type=tmpfs,target=/var/lib/dnf/ \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/modules && \ - mkdir -p ${ZABBIX_USER_HOME_DIR}/user_scripts && \ + mkdir -p ${ZBX_USERPARAMETERDIR} && \ chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_agentd_modules.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd_item_keys.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd.d/ \ diff --git a/Dockerfiles/agent/rhel/Dockerfile b/Dockerfiles/agent/rhel/Dockerfile index fa26ead10..847b69a10 100644 --- a/Dockerfiles/agent/rhel/Dockerfile +++ b/Dockerfiles/agent/rhel/Dockerfile @@ -112,7 +112,7 @@ RUN --mount=type=tmpfs,target=/var/lib/dnf/ \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/modules && \ - mkdir -p ${ZABBIX_USER_HOME_DIR}/user_scripts && \ + mkdir -p ${ZBX_USERPARAMETERDIR} && \ chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_agentd_modules.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd_item_keys.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd.d/ \ diff --git a/Dockerfiles/agent/ubuntu/Dockerfile b/Dockerfiles/agent/ubuntu/Dockerfile index d907b1ce6..231aeebd3 100644 --- a/Dockerfiles/agent/ubuntu/Dockerfile +++ b/Dockerfiles/agent/ubuntu/Dockerfile @@ -70,7 +70,7 @@ RUN --mount=type=cache,target=/var/cache/apt/,sharing=locked \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/modules && \ - mkdir -p ${ZABBIX_USER_HOME_DIR}/user_scripts && \ + mkdir -p ${ZBX_USERPARAMETERDIR} && \ chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_agentd_modules.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd_item_keys.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd.d/ \ diff --git a/Dockerfiles/agent/windows/Dockerfile b/Dockerfiles/agent/windows/Dockerfile index dba0e3ff9..3e4ef19be 100644 --- a/Dockerfiles/agent/windows/Dockerfile +++ b/Dockerfiles/agent/windows/Dockerfile @@ -14,6 +14,11 @@ ARG MAJOR_VERSION ARG ZBX_VERSION ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git +ENV ZABBIX_USER_HOME_DIR="C:\zabbix" ` + ZABBIX_CONF_DIR="C:\zabbix\conf" + +ENV ZBX_USERPARAMETERDIR="${ZABBIX_USER_HOME_DIR}\user_scripts" + LABEL org.opencontainers.image.title="Zabbix agent" ` org.opencontainers.image.authors="Alexey Pustovalov " ` org.opencontainers.image.vendor="Zabbix SIA" ` @@ -36,25 +41,25 @@ USER ContainerAdministrator RUN $env:PATH = [string]::Format('{0}\zabbix\sbin;{0}\zabbix\bin;', $env:SystemDrive) + $env:PATH; ` [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine); ` ` - $env:ZBX_HOME = [string]::Format('{0}\zabbix', $env:SystemDrive); ` - [Environment]::SetEnvironmentVariable('ZBX_HOME', $env:ZBX_HOME, [EnvironmentVariableTarget]::Machine); ` + [Environment]::SetEnvironmentVariable('ZABBIX_USER_HOME_DIR', $env:ZABBIX_USER_HOME_DIR, [EnvironmentVariableTarget]::Machine); ` ` Write-Host ('Verifying Zabbix agent {0} ...' -f $env:ZBX_VERSION); ` zabbix_agentd.exe -V; RUN Set-Location -Path $env:SystemDrive\.; ` ` - New-Item -Force -ItemType directory -Path $env:ZBX_HOME\conf\zabbix_agentd.d | Out-Null; ` - New-Item -Force -ItemType directory -Path $env:ZBX_HOME\enc | Out-Null; ` - New-Item -Force -ItemType directory -Path $env:ZBX_HOME\modules | Out-Null; ` - New-Item -Force -ItemType directory -Path $env:ZBX_HOME\buffer | Out-Null; ` + New-Item -Force -ItemType directory -Path $env:ZABBIX_CONF_DIR | Out-Null; ` + New-Item -Force -ItemType directory -Path $env:ZABBIX_CONF_DIR\zabbix_agentd.d | Out-Null; ` + New-Item -Force -ItemType directory -Path $env:ZABBIX_USER_HOME_DIR\enc | Out-Null; ` + New-Item -Force -ItemType directory -Path $env:ZABBIX_USER_HOME_DIR\buffer | Out-Null; ` + New-Item -Force -ItemType directory -Path $env:ZBX_USERPARAMETERDIR | Out-Null; ` ` net accounts /MaxPWAge:unlimited; ` net user /add zabbix /expire:never /passwordreq:no; ` - $acl = Get-Acl -Path $env:ZBX_HOME; ` + $acl = Get-Acl -Path $env:ZABBIX_USER_HOME_DIR; ` $ace = New-Object Security.AccessControl.FileSystemAccessRule ('zabbix', 'Modify', 'ContainerInherit, ObjectInherit', 'InheritOnly', 'Allow'); ` $acl.AddAccessRule($ace); ` - Set-Acl -AclObject $acl -Path $env:ZBX_HOME; + Set-Acl -AclObject $acl -Path $env:ZABBIX_USER_HOME_DIR; USER zabbix diff --git a/Dockerfiles/agent/windows/docker-entrypoint.ps1 b/Dockerfiles/agent/windows/docker-entrypoint.ps1 index 75f9628ba..d0ccd1c05 100644 --- a/Dockerfiles/agent/windows/docker-entrypoint.ps1 +++ b/Dockerfiles/agent/windows/docker-entrypoint.ps1 @@ -4,22 +4,19 @@ if ($env:DEBUG_MODE -eq "true") { Set-PSDebug -trace 1 } -# Default Zabbix installation name # Default Zabbix server host -if ([string]::IsNullOrWhitespace($env:ZBX_SERVER_HOST)) { +if ($env:ZBX_SERVER_HOST -eq $null) { $env:ZBX_SERVER_HOST="zabbix-server" } # Default Zabbix server port number -if ([string]::IsNullOrWhitespace($env:ZBX_SERVER_PORT)) { +if ($env:ZBX_SERVER_PORT -eq $null) { $env:ZBX_SERVER_PORT="10051" } # Default directories -# User 'zabbix' home directory -$ZabbixUserHomeDir="C:\zabbix" -# Configuration files directory -$ZabbixConfigDir="C:\zabbix\conf" +# Internal directory for TLS related files, used when TLS*File specified as plain text values +$ZabbixInternalEncDir="$env:ZABBIX_USER_HOME_DIR/enc_internal" function Update-Config-Var { Param ( @@ -119,109 +116,105 @@ function Update-Config-Multiple-Var { } } +function File-Process-From-Env { + Param ( + [Parameter(Mandatory=$true, Position=0)] + [ValidateNotNullOrEmpty()] + [string] $VarName, + [Parameter(Mandatory=$false, Position=1)] + [string]$FileName = $null, + [Parameter(Mandatory=$false, Position=2)] + [string]$VarValue = $null + ) + + if (![string]::IsNullOrEmpty($VarValue)) { + $VarValue | Set-Content "$ZabbixInternalEncDir\VarName" + $FileName="$ZabbixInternalEncDir\VarName" + } + + if (![string]::IsNullOrEmpty($FileName)) { + Set-Item env:$VarName -Value $FileName + } + + $VarName=$VarName -replace 'FILE$' + Set-Item env:$VarName -Value $null +} + function Prepare-Zbx-Agent-Config { - Write-Host "** Preparing Zabbix agent configuration file" - - $ZbxAgentConfig="$ZabbixConfigDir\zabbix_agentd.conf" - - if ([string]::IsNullOrWhitespace($env:ZBX_PASSIVESERVERS)) { + if ($env:ZBX_PASSIVESERVERS -eq $null) { $env:ZBX_PASSIVESERVERS="" } - else { - $env:ZBX_PASSIVESERVERS=",$env:ZBX_PASSIVESERVERS" - } - - $env:ZBX_PASSIVESERVERS=$env:ZBX_SERVER_HOST + $env:ZBX_PASSIVESERVERS - - if ([string]::IsNullOrWhitespace($env:ZBX_ACTIVESERVERS)) { + if ($env:ZBX_ACTIVESERVERS -eq $null) { $env:ZBX_ACTIVESERVERS="" } - else { - $env:ZBX_ACTIVESERVERS=",$env:ZBX_ACTIVESERVERS" + + if (![string]::IsNullOrEmpty($env:ZBX_SERVER_HOST) -And ![string]::IsNullOrEmpty($env:ZBX_PASSIVESERVERS)) { + $env:ZBX_PASSIVESERVERS="$env:ZBX_SERVER_HOST,$env:ZBX_PASSIVESERVERS" + } + elseif (![string]::IsNullOrEmpty($env:ZBX_SERVER_HOST)) { + $env:ZBX_PASSIVESERVERS=$env:ZBX_SERVER_HOST } - $env:ZBX_ACTIVESERVERS=$env:ZBX_SERVER_HOST + ":" + $env:ZBX_SERVER_PORT + $env:ZBX_ACTIVESERVERS - - Update-Config-Var $ZbxAgentConfig "LogType" "console" - Update-Config-Var $ZbxAgentConfig "LogFile" - Update-Config-Var $ZbxAgentConfig "LogFileSize" - Update-Config-Var $ZbxAgentConfig "DebugLevel" "$env:ZBX_DEBUGLEVEL" - Update-Config-Var $ZbxAgentConfig "SourceIP" - Update-Config-Var $ZbxAgentConfig "LogRemoteCommands" "$env:ZBX_LOGREMOTECOMMANDS" + if (![string]::IsNullOrEmpty($env:ZBX_SERVER_HOST)) { + if (![string]::IsNullOrEmpty($env:ZBX_SERVER_PORT) -And $env:ZBX_SERVER_PORT -ne "10051") { + $env:ZBX_SERVER_HOST="$env:ZBX_SERVER_HOST:$env:ZBX_SERVER_PORT" + } + if (![string]::IsNullOrEmpty($env:ZBX_ACTIVESERVERS)) { + $env:ZBX_ACTIVESERVERS="$env:ZBX_SERVER_HOST,$env:ZBX_ACTIVESERVERS" + } + else { + $env:ZBX_ACTIVESERVERS=$env:ZBX_SERVER_HOST + } + } if ([string]::IsNullOrWhitespace($env:ZBX_PASSIVE_ALLOW)) { $env:ZBX_PASSIVE_ALLOW="true" } if ($env:ZBX_PASSIVE_ALLOW -eq "true") { - Write-Host "** Using '$env:ZBX_PASSIVESERVERS' servers for passive checks" - Update-Config-Var $ZbxAgentConfig "Server" "$env:ZBX_PASSIVESERVERS" + Write-Host "** Using '$env:ZBX_PASSIVESERVERS' servers for passive checks" } else { - Update-Config-Var $ZbxAgentConfig "Server" + Set-Item env:ZBX_PASSIVESERVERS -Value $null } - Update-Config-Var $ZbxAgentConfig "ListenPort" "$env:ZBX_LISTENPORT" - Update-Config-Var $ZbxAgentConfig "ListenIP" "$env:ZBX_LISTENIP" - Update-Config-Var $ZbxAgentConfig "StartAgents" "$env:ZBX_STARTAGENTS" - if ([string]::IsNullOrWhitespace($env:ZBX_ACTIVE_ALLOW)) { $env:ZBX_ACTIVE_ALLOW="true" } if ($env:ZBX_ACTIVE_ALLOW -eq "true") { Write-Host "** Using '$env:ZBX_ACTIVESERVERS' servers for active checks" - Update-Config-Var $ZbxAgentConfig "ServerActive" "$env:ZBX_ACTIVESERVERS" } else { - Update-Config-Var $ZbxAgentConfig "ServerActive" + Set-Item env:ZBX_ACTIVESERVERS -Value $null } - Update-Config-Var $ZbxAgentConfig "HeartbeatFrequency" "$env:ZBX_HEARTBEAT_FREQUENCY" - Update-Config-Var $ZbxAgentConfig "HostInterface" "$env:ZBX_HOSTINTERFACE" - Update-Config-Var $ZbxAgentConfig "HostInterfaceItem" "$env:ZBX_HOSTINTERFACEITEM" + Update-Config-Multiple-Var "$env:ZABBIX_CONF_DIR\zabbix_agentd_item_keys.conf" "DenyKey" "$env:ZBX_DENYKEY" + Update-Config-Multiple-Var "$env:ZABBIX_CONF_DIR\zabbix_agentd_item_keys.conf" "AllowKey" "$env:ZBX_ALLOWKEY" - Update-Config-Var $ZbxAgentConfig "Hostname" "$env:ZBX_HOSTNAME" - Update-Config-Var $ZbxAgentConfig "HostnameItem" "$env:ZBX_HOSTNAMEITEM" - Update-Config-Var $ZbxAgentConfig "HostMetadata" "$env:ZBX_METADATA" - Update-Config-Var $ZbxAgentConfig "HostMetadataItem" "$env:ZBX_METADATAITEM" - Update-Config-Var $ZbxAgentConfig "RefreshActiveChecks" "$env:ZBX_REFRESHACTIVECHECKS" - Update-Config-Var $ZbxAgentConfig "BufferSend" "$env:ZBX_BUFFERSEND" - Update-Config-Var $ZbxAgentConfig "BufferSize" "$env:ZBX_BUFFERSIZE" - Update-Config-Var $ZbxAgentConfig "MaxLinesPerSecond" "$env:ZBX_MAXLINESPERSECOND" - # Please use include to enable Alias feature -# update_config_multiple_var $ZBX_AGENT_CONFIG "Alias" $env:ZBX_ALIAS - # Please use include to enable Perfcounter feature -# update_config_multiple_var $ZBX_AGENT_CONFIG "PerfCounter" $env:ZBX_PERFCOUNTER - Update-Config-Var $ZbxAgentConfig "Timeout" "$env:ZBX_TIMEOUT" - Update-Config-Var $ZbxAgentConfig "Include" "$ZabbixConfigDir\zabbix_agentd.d\*.conf" - Update-Config-Var $ZbxAgentConfig "UnsafeUserParameters" "$env:ZBX_UNSAFEUSERPARAMETERS" - Update-Config-Var $ZbxAgentConfig "UserParameterDir" "$ZabbixUserHomeDir\user_scripts\" - Update-Config-Var $ZbxAgentConfig "TLSConnect" "$env:ZBX_TLSCONNECT" - Update-Config-Var $ZbxAgentConfig "TLSAccept" "$env:ZBX_TLSACCEPT" - Update-Config-Var $ZbxAgentConfig "TLSCAFile" "$env:ZBX_TLSCAFILE" - Update-Config-Var $ZbxAgentConfig "TLSCRLFile" "$env:ZBX_TLSCRLFILE" - Update-Config-Var $ZbxAgentConfig "TLSServerCertIssuer" "$env:ZBX_TLSSERVERCERTISSUER" - Update-Config-Var $ZbxAgentConfig "TLSServerCertSubject" "$env:ZBX_TLSSERVERCERTSUBJECT" - Update-Config-Var $ZbxAgentConfig "TLSCertFile" "$env:ZBX_TLSCERTFILE" - Update-Config-Var $ZbxAgentConfig "TLSCipherAll" "$env:ZBX_TLSCIPHERALL" - Update-Config-Var $ZbxAgentConfig "TLSCipherAll13" "$env:ZBX_TLSCIPHERALL13" - Update-Config-Var $ZbxAgentConfig "TLSCipherCert" "$env:ZBX_TLSCIPHERCERT" - Update-Config-Var $ZbxAgentConfig "TLSCipherCert13" "$env:ZBX_TLSCIPHERCERT13" - Update-Config-Var $ZbxAgentConfig "TLSCipherPSK" "$env:ZBX_TLSCIPHERPSK" - Update-Config-Var $ZbxAgentConfig "TLSCipherPSK13" "$env:ZBX_TLSCIPHERPSK13" - Update-Config-Var $ZbxAgentConfig "TLSKeyFile" "$env:ZBX_TLSKEYFILE" - Update-Config-Var $ZbxAgentConfig "TLSPSKIdentity" "$env:ZBX_TLSPSKIDENTITY" - Update-Config-Var $ZbxAgentConfig "TLSPSKFile" "$env:ZBX_TLSPSKFILE" + File-Process-From-Env "ZBX_TLSCAFILE" "$env:ZBX_TLSCAFILE" "$env:ZBX_TLSCA" + File-Process-From-Env "ZBX_TLSCRLFILE" "$env:ZBX_TLSCRLFILE" "$env:ZBX_TLSCRL" + File-Process-From-Env "ZBX_TLSCERTFILE" "$env:ZBX_TLSCERTFILE" "$env:ZBX_TLSCERT" + File-Process-From-Env "ZBX_TLSKEYFILE" "$env:ZBX_TLSKEYFILE" "$env:ZBX_TLSKEY" + File-Process-From-Env "ZBX_TLSPSKFILE" "$env:ZBX_TLSPSKFILE" "$env:ZBX_TLSPSK" +} - Update-Config-Multiple-Var $ZbxAgentConfig "DenyKey" "$env:ZBX_DENYKEY" - Update-Config-Multiple-Var $ZbxAgentConfig "AllowKey" "$env:ZBX_ALLOWKEY" +function ClearZbxEnv() { + if ([string]::IsNullOrWhitespace($env:ZBX_CLEAR_ENV)) { + return + } + $env_vars=Get-ChildItem env:* | Where-Object {$_.Name -match "^ZABBIX_.*" } | foreach { $_.Name } + foreach ($env_var in $env_vars) { + Set-Item env:$env_var -Value $null + } } function PrepareAgent { Write-Host "** Preparing Zabbix agent" + Prepare-Zbx-Agent-Config + ClearZbxEnv } $commandArgs=$args diff --git a/Dockerfiles/agent2/alpine/Dockerfile b/Dockerfiles/agent2/alpine/Dockerfile index 87815e851..8ef67586c 100644 --- a/Dockerfiles/agent2/alpine/Dockerfile +++ b/Dockerfiles/agent2/alpine/Dockerfile @@ -68,7 +68,7 @@ RUN set -eux && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/buffer && \ - mkdir -p ${ZABBIX_USER_HOME_DIR}/user_scripts && \ + mkdir -p ${ZBX_USERPARAMETERDIR} && \ chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_agent2_item_keys.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd.d/ \ ${ZABBIX_CONF_DIR}/zabbix_agent2.d/ \ diff --git a/Dockerfiles/agent2/alpine/docker-entrypoint.sh b/Dockerfiles/agent2/alpine/docker-entrypoint.sh index 858335b9b..c27bb2f3c 100755 --- a/Dockerfiles/agent2/alpine/docker-entrypoint.sh +++ b/Dockerfiles/agent2/alpine/docker-entrypoint.sh @@ -175,12 +175,14 @@ prepare_zbx_agent_config() { if [ "${ZBX_ENABLEPERSISTENTBUFFER,,}" == "true" ]; then export ZBX_ENABLEPERSISTENTBUFFER=1 + else + unset ZBX_ENABLEPERSISTENTBUFFER fi if [ "${ZBX_ENABLESTATUSPORT,,}" == "true" ]; then export ZBX_STATUSPORT=${ZBX_STATUSPORT="31999"} else - unset ZBX_PERSISTENTBUFFERFILE + unset ZBX_STATUSPORT fi update_config_multiple_var "${ZABBIX_CONF_DIR}/zabbix_agentd_item_keys.conf" "DenyKey" "${ZBX_DENYKEY}" diff --git a/Dockerfiles/agent2/centos/Dockerfile b/Dockerfiles/agent2/centos/Dockerfile index 2103e5fd2..522b21a20 100644 --- a/Dockerfiles/agent2/centos/Dockerfile +++ b/Dockerfiles/agent2/centos/Dockerfile @@ -89,7 +89,7 @@ RUN --mount=type=tmpfs,target=/var/lib/dnf/ \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/buffer && \ - mkdir -p ${ZABBIX_USER_HOME_DIR}/user_scripts && \ + mkdir -p ${ZBX_USERPARAMETERDIR} && \ chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_agent2_item_keys.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd.d/ \ ${ZABBIX_CONF_DIR}/zabbix_agent2.d/ \ diff --git a/Dockerfiles/agent2/centos/docker-entrypoint.sh b/Dockerfiles/agent2/centos/docker-entrypoint.sh index 858335b9b..c27bb2f3c 100755 --- a/Dockerfiles/agent2/centos/docker-entrypoint.sh +++ b/Dockerfiles/agent2/centos/docker-entrypoint.sh @@ -175,12 +175,14 @@ prepare_zbx_agent_config() { if [ "${ZBX_ENABLEPERSISTENTBUFFER,,}" == "true" ]; then export ZBX_ENABLEPERSISTENTBUFFER=1 + else + unset ZBX_ENABLEPERSISTENTBUFFER fi if [ "${ZBX_ENABLESTATUSPORT,,}" == "true" ]; then export ZBX_STATUSPORT=${ZBX_STATUSPORT="31999"} else - unset ZBX_PERSISTENTBUFFERFILE + unset ZBX_STATUSPORT fi update_config_multiple_var "${ZABBIX_CONF_DIR}/zabbix_agentd_item_keys.conf" "DenyKey" "${ZBX_DENYKEY}" diff --git a/Dockerfiles/agent2/ol/Dockerfile b/Dockerfiles/agent2/ol/Dockerfile index 73bff7a32..1f7f5d616 100644 --- a/Dockerfiles/agent2/ol/Dockerfile +++ b/Dockerfiles/agent2/ol/Dockerfile @@ -76,7 +76,7 @@ RUN --mount=type=tmpfs,target=/var/lib/dnf/ \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/buffer && \ - mkdir -p ${ZABBIX_USER_HOME_DIR}/user_scripts && \ + mkdir -p ${ZBX_USERPARAMETERDIR} && \ chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_agent2_item_keys.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd.d/ \ ${ZABBIX_CONF_DIR}/zabbix_agent2.d/ \ diff --git a/Dockerfiles/agent2/ol/docker-entrypoint.sh b/Dockerfiles/agent2/ol/docker-entrypoint.sh index 858335b9b..c27bb2f3c 100755 --- a/Dockerfiles/agent2/ol/docker-entrypoint.sh +++ b/Dockerfiles/agent2/ol/docker-entrypoint.sh @@ -175,12 +175,14 @@ prepare_zbx_agent_config() { if [ "${ZBX_ENABLEPERSISTENTBUFFER,,}" == "true" ]; then export ZBX_ENABLEPERSISTENTBUFFER=1 + else + unset ZBX_ENABLEPERSISTENTBUFFER fi if [ "${ZBX_ENABLESTATUSPORT,,}" == "true" ]; then export ZBX_STATUSPORT=${ZBX_STATUSPORT="31999"} else - unset ZBX_PERSISTENTBUFFERFILE + unset ZBX_STATUSPORT fi update_config_multiple_var "${ZABBIX_CONF_DIR}/zabbix_agentd_item_keys.conf" "DenyKey" "${ZBX_DENYKEY}" diff --git a/Dockerfiles/agent2/rhel/Dockerfile b/Dockerfiles/agent2/rhel/Dockerfile index 581e0e96c..955acd125 100644 --- a/Dockerfiles/agent2/rhel/Dockerfile +++ b/Dockerfiles/agent2/rhel/Dockerfile @@ -110,7 +110,7 @@ RUN --mount=type=tmpfs,target=/var/lib/dnf/ \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/buffer && \ - mkdir -p ${ZABBIX_USER_HOME_DIR}/user_scripts && \ + mkdir -p ${ZBX_USERPARAMETERDIR} && \ chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_agent2_item_keys.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd.d/ \ ${ZABBIX_CONF_DIR}/zabbix_agent2.d/ \ diff --git a/Dockerfiles/agent2/rhel/docker-entrypoint.sh b/Dockerfiles/agent2/rhel/docker-entrypoint.sh index 858335b9b..c27bb2f3c 100755 --- a/Dockerfiles/agent2/rhel/docker-entrypoint.sh +++ b/Dockerfiles/agent2/rhel/docker-entrypoint.sh @@ -175,12 +175,14 @@ prepare_zbx_agent_config() { if [ "${ZBX_ENABLEPERSISTENTBUFFER,,}" == "true" ]; then export ZBX_ENABLEPERSISTENTBUFFER=1 + else + unset ZBX_ENABLEPERSISTENTBUFFER fi if [ "${ZBX_ENABLESTATUSPORT,,}" == "true" ]; then export ZBX_STATUSPORT=${ZBX_STATUSPORT="31999"} else - unset ZBX_PERSISTENTBUFFERFILE + unset ZBX_STATUSPORT fi update_config_multiple_var "${ZABBIX_CONF_DIR}/zabbix_agentd_item_keys.conf" "DenyKey" "${ZBX_DENYKEY}" diff --git a/Dockerfiles/agent2/ubuntu/Dockerfile b/Dockerfiles/agent2/ubuntu/Dockerfile index dfbf3a891..dfa7681d7 100644 --- a/Dockerfiles/agent2/ubuntu/Dockerfile +++ b/Dockerfiles/agent2/ubuntu/Dockerfile @@ -72,7 +72,7 @@ RUN --mount=type=cache,target=/var/cache/apt/,sharing=locked \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \ mkdir -p ${ZABBIX_USER_HOME_DIR}/buffer && \ - mkdir -p ${ZABBIX_USER_HOME_DIR}/user_scripts && \ + mkdir -p ${ZBX_USERPARAMETERDIR} && \ chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_agent2_item_keys.conf \ ${ZABBIX_CONF_DIR}/zabbix_agentd.d/ \ ${ZABBIX_CONF_DIR}/zabbix_agent2.d/ \ diff --git a/Dockerfiles/agent2/ubuntu/docker-entrypoint.sh b/Dockerfiles/agent2/ubuntu/docker-entrypoint.sh index 858335b9b..c27bb2f3c 100755 --- a/Dockerfiles/agent2/ubuntu/docker-entrypoint.sh +++ b/Dockerfiles/agent2/ubuntu/docker-entrypoint.sh @@ -175,12 +175,14 @@ prepare_zbx_agent_config() { if [ "${ZBX_ENABLEPERSISTENTBUFFER,,}" == "true" ]; then export ZBX_ENABLEPERSISTENTBUFFER=1 + else + unset ZBX_ENABLEPERSISTENTBUFFER fi if [ "${ZBX_ENABLESTATUSPORT,,}" == "true" ]; then export ZBX_STATUSPORT=${ZBX_STATUSPORT="31999"} else - unset ZBX_PERSISTENTBUFFERFILE + unset ZBX_STATUSPORT fi update_config_multiple_var "${ZABBIX_CONF_DIR}/zabbix_agentd_item_keys.conf" "DenyKey" "${ZBX_DENYKEY}" diff --git a/Dockerfiles/agent2/windows/Dockerfile b/Dockerfiles/agent2/windows/Dockerfile index f146b6279..cc36970bf 100644 --- a/Dockerfiles/agent2/windows/Dockerfile +++ b/Dockerfiles/agent2/windows/Dockerfile @@ -14,6 +14,12 @@ ARG MAJOR_VERSION ARG ZBX_VERSION ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git +ENV ZABBIX_USER_HOME_DIR="C:\zabbix" ` + ZABBIX_CONF_DIR="C:\zabbix\conf" + +ENV ZBX_PERSISTENTBUFFERFILE="$ZABBIX_USER_HOME_DIR\buffer\agent2.db" ` + ZBX_USERPARAMETERDIR="${ZABBIX_USER_HOME_DIR}\user_scripts" + LABEL org.opencontainers.image.title="Zabbix agent 2" ` org.opencontainers.image.authors="Alexey Pustovalov " ` org.opencontainers.image.vendor="Zabbix SIA" ` @@ -36,24 +42,27 @@ USER ContainerAdministrator RUN $env:PATH = [string]::Format('{0}\zabbix\sbin;{0}\zabbix\bin;', $env:SystemDrive) + $env:PATH; ` [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine); ` ` - $env:ZBX_HOME = [string]::Format('{0}\zabbix', $env:SystemDrive); ` - [Environment]::SetEnvironmentVariable('ZBX_HOME', $env:ZBX_HOME, [EnvironmentVariableTarget]::Machine); ` + [Environment]::SetEnvironmentVariable('ZABBIX_USER_HOME_DIR', $env:ZABBIX_USER_HOME_DIR, [EnvironmentVariableTarget]::Machine); ` ` Write-Host ('Verifying Zabbix agent 2 {0} ...' -f $env:ZBX_VERSION); ` zabbix_agent2.exe -V; RUN Set-Location -Path $env:SystemDrive\.; ` ` - New-Item -Force -ItemType directory -Path $env:ZBX_HOME\conf\zabbix_agentd.d | Out-Null; ` - New-Item -Force -ItemType directory -Path $env:ZBX_HOME\enc | Out-Null; ` - New-Item -Force -ItemType directory -Path $env:ZBX_HOME\buffer | Out-Null; ` + New-Item -Force -ItemType directory -Path $env:ZABBIX_CONF_DIR | Out-Null; ` + New-Item -Force -ItemType directory -Path $env:ZABBIX_CONF_DIR\zabbix_agentd.d | Out-Null; ` + New-Item -Force -ItemType directory -Path $env:ZABBIX_CONF_DIR\zabbix_agent2.d | Out-Null; ` + New-Item -Force -ItemType directory -Path $env:ZABBIX_USER_HOME_DIR\enc | Out-Null; ` + New-Item -Force -ItemType directory -Path $env:ZABBIX_USER_HOME_DIR\enc_internal | Out-Null; ` + New-Item -Force -ItemType directory -Path $env:ZABBIX_USER_HOME_DIR\buffer | Out-Null; ` + New-Item -Force -ItemType directory -Path $env:ZBX_USERPARAMETERDIR | Out-Null; ` ` net accounts /MaxPWAge:unlimited; ` net user /add zabbix /expire:never /passwordreq:no; ` - $acl = Get-Acl -Path $env:ZBX_HOME; ` + $acl = Get-Acl -Path $env:ZABBIX_USER_HOME_DIR; ` $ace = New-Object Security.AccessControl.FileSystemAccessRule ('zabbix', 'Modify', 'ContainerInherit, ObjectInherit', 'InheritOnly', 'Allow'); ` $acl.AddAccessRule($ace); ` - Set-Acl -AclObject $acl -Path $env:ZBX_HOME; + Set-Acl -AclObject $acl -Path $env:ZABBIX_USER_HOME_DIR; USER zabbix diff --git a/Dockerfiles/agent2/windows/docker-entrypoint.ps1 b/Dockerfiles/agent2/windows/docker-entrypoint.ps1 index 91a0fe4b9..1fe53477d 100644 --- a/Dockerfiles/agent2/windows/docker-entrypoint.ps1 +++ b/Dockerfiles/agent2/windows/docker-entrypoint.ps1 @@ -4,22 +4,18 @@ if ($env:DEBUG_MODE -eq "true") { Set-PSDebug -trace 1 } -# Default Zabbix installation name # Default Zabbix server host -if ([string]::IsNullOrWhitespace($env:ZBX_SERVER_HOST)) { +if ($env:ZBX_SERVER_HOST -eq $null) { $env:ZBX_SERVER_HOST="zabbix-server" } # Default Zabbix server port number -if ([string]::IsNullOrWhitespace($env:ZBX_SERVER_PORT)) { +if ($env:ZBX_SERVER_PORT -eq $null) { $env:ZBX_SERVER_PORT="10051" } - # Default directories -# User 'zabbix' home directory -$ZabbixUserHomeDir="C:\zabbix" -# Configuration files directory -$ZabbixConfigDir="C:\zabbix\conf" +# Internal directory for TLS related files, used when TLS*File specified as plain text values +$ZabbixInternalEncDir="$env:ZABBIX_USER_HOME_DIR/enc_internal" function Update-Config-Var { Param ( @@ -97,7 +93,7 @@ function Update-Config-Var { Write-Host "added" } else { - Add-Content -Path $ConfigPath -Value "$VarName=$VarValue" + Add-Content -Path $ConfigPath -Value "$VarName=$VarValue" Write-Host "added at the end" } } @@ -119,75 +115,90 @@ function Update-Config-Multiple-Var { } } +function File-Process-From-Env { + Param ( + [Parameter(Mandatory=$true, Position=0)] + [ValidateNotNullOrEmpty()] + [string] $VarName, + [Parameter(Mandatory=$false, Position=1)] + [string]$FileName = $null, + [Parameter(Mandatory=$false, Position=2)] + [string]$VarValue = $null + ) + + if (![string]::IsNullOrEmpty($VarValue)) { + $VarValue | Set-Content "$ZabbixInternalEncDir\VarName" + $FileName="$ZabbixInternalEncDir\VarName" + } + + if (![string]::IsNullOrEmpty($FileName)) { + Set-Item env:$VarName -Value $FileName + } + + $VarName=$VarName -replace 'FILE$' + Set-Item env:$VarName -Value $null +} + function Prepare-Zbx-Agent-Config { - Write-Host "** Preparing Zabbix agent 2 configuration file" - - $ZbxAgentConfig="$ZabbixConfigDir\zabbix_agent2.conf" - - if ([string]::IsNullOrWhitespace($env:ZBX_PASSIVESERVERS)) { + if ($env:ZBX_PASSIVESERVERS -eq $null) { $env:ZBX_PASSIVESERVERS="" } - else { - $env:ZBX_PASSIVESERVERS=",$env:ZBX_PASSIVESERVERS" - } - - $env:ZBX_PASSIVESERVERS=$env:ZBX_SERVER_HOST + $env:ZBX_PASSIVESERVERS - - if ([string]::IsNullOrWhitespace($env:ZBX_ACTIVESERVERS)) { + if ($env:ZBX_ACTIVESERVERS -eq $null) { $env:ZBX_ACTIVESERVERS="" } - else { - $env:ZBX_ACTIVESERVERS=",$env:ZBX_ACTIVESERVERS" + + if (![string]::IsNullOrEmpty($env:ZBX_SERVER_HOST) -And ![string]::IsNullOrEmpty($env:ZBX_PASSIVESERVERS)) { + $env:ZBX_PASSIVESERVERS="$env:ZBX_SERVER_HOST,$env:ZBX_PASSIVESERVERS" + } + elseif (![string]::IsNullOrEmpty($env:ZBX_SERVER_HOST)) { + $env:ZBX_PASSIVESERVERS=$env:ZBX_SERVER_HOST } - $env:ZBX_ACTIVESERVERS=$env:ZBX_SERVER_HOST + ":" + $env:ZBX_SERVER_PORT + $env:ZBX_ACTIVESERVERS - - Update-Config-Var $ZbxAgentConfig "LogType" "console" - Update-Config-Var $ZbxAgentConfig "LogFile" - Update-Config-Var $ZbxAgentConfig "LogFileSize" - Update-Config-Var $ZbxAgentConfig "DebugLevel" "$env:ZBX_DEBUGLEVEL" - Update-Config-Var $ZbxAgentConfig "SourceIP" + if (![string]::IsNullOrEmpty($env:ZBX_SERVER_HOST)) { + if (![string]::IsNullOrEmpty($env:ZBX_SERVER_PORT) -And $env:ZBX_SERVER_PORT -ne "10051") { + $env:ZBX_SERVER_HOST="$env:ZBX_SERVER_HOST:$env:ZBX_SERVER_PORT" + } + if (![string]::IsNullOrEmpty($env:ZBX_ACTIVESERVERS)) { + $env:ZBX_ACTIVESERVERS="$env:ZBX_SERVER_HOST,$env:ZBX_ACTIVESERVERS" + } + else { + $env:ZBX_ACTIVESERVERS=$env:ZBX_SERVER_HOST + } + } if ([string]::IsNullOrWhitespace($env:ZBX_PASSIVE_ALLOW)) { $env:ZBX_PASSIVE_ALLOW="true" } if ($env:ZBX_PASSIVE_ALLOW -eq "true") { - Write-Host "** Using '$env:ZBX_PASSIVESERVERS' servers for passive checks" - Update-Config-Var $ZbxAgentConfig "Server" "$env:ZBX_PASSIVESERVERS" + Write-Host "** Using '$env:ZBX_PASSIVESERVERS' servers for passive checks" } else { - Update-Config-Var $ZbxAgentConfig "Server" + Set-Item env:ZBX_PASSIVESERVERS -Value $null } - Update-Config-Var $ZbxAgentConfig "ListenPort" "$env:ZBX_LISTENPORT" - Update-Config-Var $ZbxAgentConfig "ListenIP" "$env:ZBX_LISTENIP" - if ([string]::IsNullOrWhitespace($env:ZBX_ACTIVE_ALLOW)) { $env:ZBX_ACTIVE_ALLOW="true" } - if ($env:ZBX_PASSIVE_ALLOW -eq "true") { + if ($env:ZBX_ACTIVE_ALLOW -eq "true") { Write-Host "** Using '$env:ZBX_ACTIVESERVERS' servers for active checks" - Update-Config-Var $ZbxAgentConfig "ServerActive" "$env:ZBX_ACTIVESERVERS" } else { - Update-Config-Var $ZbxAgentConfig "ServerActive" + Set-Item env:ZBX_ACTIVESERVERS -Value $null } - Update-Config-Var $ZbxAgentConfig "HeartbeatFrequency" "$env:ZBX_HEARTBEAT_FREQUENCY" - Update-Config-Var $ZbxAgentConfig "ForceActiveChecksOnStart" "$env:ZBX_FORCEACTIVECHECKSONSTART" + Set-Item env:ZBX_SERVER_HOST -Value $null + Set-Item env:ZBX_SERVER_PORT -Value $null if ([string]::IsNullOrWhitespace($env:ZBX_ENABLEPERSISTENTBUFFER)) { $env:ZBX_ENABLEPERSISTENTBUFFER="true" } if ($env:ZBX_ENABLEPERSISTENTBUFFER -eq "true") { - Update-Config-Var $ZbxAgentConfig "EnablePersistentBuffer" "1" - Update-Config-Var $ZbxAgentConfig "PersistentBufferFile" "$ZabbixUserHomeDir\buffer\agent2.db" - Update-Config-Var $ZbxAgentConfig "PersistentBufferPeriod" "$env:ZBX_PERSISTENTBUFFERPERIOD" + $env:ZBX_ENABLEPERSISTENTBUFFER="1" } else { - Update-Config-Var $ZbxAgentConfig "EnablePersistentBuffer" "0" + Set-Item env:ZBX_ENABLEPERSISTENTBUFFER -Value $null } if ([string]::IsNullOrWhitespace($env:ZBX_ENABLESTATUSPORT)) { @@ -195,65 +206,48 @@ function Prepare-Zbx-Agent-Config { } if ($env:ZBX_ENABLESTATUSPORT -eq "true") { - Update-Config-Var $ZbxAgentConfig "StatusPort" "31999" + $env:ZBX_STATUSPORT="31999" } - Update-Config-Var $ZbxAgentConfig "Hostname" "$env:ZBX_HOSTNAME" - Update-Config-Var $ZbxAgentConfig "HostnameItem" "$env:ZBX_HOSTNAMEITEM" - Update-Config-Var $ZbxAgentConfig "HostMetadata" "$env:ZBX_METADATA" - Update-Config-Var $ZbxAgentConfig "HostMetadataItem" "$env:ZBX_METADATAITEM" - Update-Config-Var $ZbxAgentConfig "HostInterface" "$env:ZBX_HOSTINTERFACE" - Update-Config-Var $ZbxAgentConfig "HostInterfaceItem" "$env:ZBX_HOSTINTERFACEITEM" - Update-Config-Var $ZbxAgentConfig "RefreshActiveChecks" "$env:ZBX_REFRESHACTIVECHECKS" - Update-Config-Var $ZbxAgentConfig "BufferSend" "$env:ZBX_BUFFERSEND" - Update-Config-Var $ZbxAgentConfig "BufferSize" "$env:ZBX_BUFFERSIZE" - # Please use include to enable Alias feature -# update_config_multiple_var $ZBX_AGENT_CONFIG "Alias" $env:ZBX_ALIAS - # Please use include to enable Perfcounter feature -# update_config_multiple_var $ZBX_AGENT_CONFIG "PerfCounter" $env:ZBX_PERFCOUNTER - Update-Config-Var $ZbxAgentConfig "Timeout" "$env:ZBX_TIMEOUT" - Update-Config-Var $ZbxAgentConfig "Include" ".\zabbix_agent2.d\plugins.d\*.conf" - Update-Config-Var $ZbxAgentConfig "Include" ".\zabbix_agentd.d\*.conf" $true - Update-Config-Var $ZbxAgentConfig "UnsafeUserParameters" "$env:ZBX_UNSAFEUSERPARAMETERS" - Update-Config-Var $ZbxAgentConfig "UserParameterDir" "$ZabbixUserHomeDir\user_scripts\" - Update-Config-Var $ZbxAgentConfig "TLSConnect" "$env:ZBX_TLSCONNECT" - Update-Config-Var $ZbxAgentConfig "TLSAccept" "$env:ZBX_TLSACCEPT" - Update-Config-Var $ZbxAgentConfig "TLSCAFile" "$env:ZBX_TLSCAFILE" - Update-Config-Var $ZbxAgentConfig "TLSCRLFile" "$env:ZBX_TLSCRLFILE" - Update-Config-Var $ZbxAgentConfig "TLSServerCertIssuer" "$env:ZBX_TLSSERVERCERTISSUER" - Update-Config-Var $ZbxAgentConfig "TLSServerCertSubject" "$env:ZBX_TLSSERVERCERTSUBJECT" - Update-Config-Var $ZbxAgentConfig "TLSCertFile" "$env:ZBX_TLSCERTFILE" - Update-Config-Var $ZbxAgentConfig "TLSCipherAll" "$env:ZBX_TLSCIPHERALL" - Update-Config-Var $ZbxAgentConfig "TLSCipherAll13" "$env:ZBX_TLSCIPHERALL13" - Update-Config-Var $ZbxAgentConfig "TLSCipherCert" "$env:ZBX_TLSCIPHERCERT" - Update-Config-Var $ZbxAgentConfig "TLSCipherCert13" "$env:ZBX_TLSCIPHERCERT13" - Update-Config-Var $ZbxAgentConfig "TLSCipherPSK" "$env:ZBX_TLSCIPHERPSK" - Update-Config-Var $ZbxAgentConfig "TLSCipherPSK13" "$env:ZBX_TLSCIPHERPSK13" - Update-Config-Var $ZbxAgentConfig "TLSKeyFile" "$env:ZBX_TLSKEYFILE" - Update-Config-Var $ZbxAgentConfig "TLSPSKIdentity" "$env:ZBX_TLSPSKIDENTITY" - Update-Config-Var $ZbxAgentConfig "TLSPSKFile" "$env:ZBX_TLSPSKFILE" - - Update-Config-Multiple-Var $ZbxAgentConfig "DenyKey" "$env:ZBX_DENYKEY" - Update-Config-Multiple-Var $ZbxAgentConfig "AllowKey" "$env:ZBX_ALLOWKEY" + Update-Config-Multiple-Var "$env:ZABBIX_CONF_DIR\zabbix_agent2_item_keys.conf" "DenyKey" "$env:ZBX_DENYKEY" + Update-Config-Multiple-Var "$env:ZABBIX_CONF_DIR\zabbix_agent2_item_keys.conf" "AllowKey" "$env:ZBX_ALLOWKEY" + File-Process-From-Env "ZBX_TLSCAFILE" "$env:ZBX_TLSCAFILE" "$env:ZBX_TLSCA" + File-Process-From-Env "ZBX_TLSCRLFILE" "$env:ZBX_TLSCRLFILE" "$env:ZBX_TLSCRL" + File-Process-From-Env "ZBX_TLSCERTFILE" "$env:ZBX_TLSCERTFILE" "$env:ZBX_TLSCERT" + File-Process-From-Env "ZBX_TLSKEYFILE" "$env:ZBX_TLSKEYFILE" "$env:ZBX_TLSKEY" + File-Process-From-Env "ZBX_TLSPSKFILE" "$env:ZBX_TLSPSKFILE" "$env:ZBX_TLSPSK" } function Prepare-Zbx-Agent-Plugins-Config { Write-Host "** Preparing Zabbix agent 2 (plugins) configuration files" - Update-Config-Var "$ZabbixConfigDir\zabbix_agent2.d\plugins.d\mongodb.conf" "Plugins.MongoDB.System.Path" "$ZabbixUserHomeDir\zabbix-agent2-plugin\mongodb.exe" - Update-Config-Var "$ZabbixConfigDir\zabbix_agent2.d\plugins.d\postgresql.conf" "Plugins.PostgreSQL.System.Path" "$ZabbixUserHomeDir\zabbix-agent2-plugin\postgresql.exe" - Update-Config-Var "$ZabbixConfigDir\zabbix_agent2.d\plugins.d\mssql.conf" "Plugins.MSSQL.System.Path" "$ZabbixUserHomeDir\zabbix-agent2-plugin\mssql.exe" - Update-Config-Var "$ZabbixConfigDir\zabbix_agent2.d\plugins.d\ember.conf" "Plugins.EmberPlus.System.Path" "$ZabbixUserHomeDir\zabbix-agent2-plugin\ember-plus.exe" + Update-Config-Var "$env:ZABBIX_CONF_DIR\zabbix_agent2.d\plugins.d\mongodb.conf" "Plugins.MongoDB.System.Path" "$env:ZABBIX_USER_HOME_DIR\zabbix-agent2-plugin\mongodb.exe" + Update-Config-Var "$env:ZABBIX_CONF_DIR\zabbix_agent2.d\plugins.d\postgresql.conf" "Plugins.PostgreSQL.System.Path" "$env:ZABBIX_USER_HOME_DIR\zabbix-agent2-plugin\postgresql.exe" + Update-Config-Var "$env:ZABBIX_CONF_DIR\zabbix_agent2.d\plugins.d\mssql.conf" "Plugins.MSSQL.System.Path" "$env:ZABBIX_USER_HOME_DIR\zabbix-agent2-plugin\mssql.exe" + Update-Config-Var "$env:ZABBIX_CONF_DIR\zabbix_agent2.d\plugins.d\ember.conf" "Plugins.EmberPlus.System.Path" "$env:ZABBIX_USER_HOME_DIR\zabbix-agent2-plugin\ember-plus.exe" if (Get-Command nvidia-smi.exe -errorAction SilentlyContinue) { - Update-Config-Var "$ZabbixConfigDir\zabbix_agent2.d\plugins.d\nvidia.conf" "Plugins.NVIDIA.System.Path" "$ZabbixUserHomeDir\zabbix-agent2-plugin\nvidia-gpu.exe" + Update-Config-Var "$env:ZABBIX_CONF_DIR\zabbix_agent2.d\plugins.d\nvidia.conf" "Plugins.NVIDIA.System.Path" "$env:ZABBIX_USER_HOME_DIR\zabbix-agent2-plugin\nvidia-gpu.exe" + } +} + +function ClearZbxEnv() { + if ([string]::IsNullOrWhitespace($env:ZBX_CLEAR_ENV)) { + return + } + + $env_vars=Get-ChildItem env:* | Where-Object {$_.Name -match "^ZABBIX_.*" } | foreach { $_.Name } + foreach ($env_var in $env_vars) { + Set-Item env:$env_var -Value $null } } function PrepareAgent { Write-Host "** Preparing Zabbix agent 2" + Prepare-Zbx-Agent-Config Prepare-Zbx-Agent-Plugins-Config + ClearZbxEnv } $commandArgs=$args diff --git a/Dockerfiles/build-mysql/windows/Dockerfile.agent b/Dockerfiles/build-mysql/windows/Dockerfile.agent index e545c3715..808577b66 100644 --- a/Dockerfiles/build-mysql/windows/Dockerfile.agent +++ b/Dockerfiles/build-mysql/windows/Dockerfile.agent @@ -11,7 +11,7 @@ SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPref ARG MAJOR_VERSION ARG ZBX_VERSION ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git -ARG GIT_BRANCH=master +ARG GIT_BRANCH ARG ZABBIX_VERSION_RC_NUM=2400 ENV ZBX_SOURCES=$ZBX_SOURCES MAJOR_VERSION=$MAJOR_VERSION ZBX_VERSION=$ZBX_VERSION GIT_BRANCH=${GIT_BRANCH:-$ZBX_VERSION} ` @@ -73,5 +73,5 @@ RUN Set-Location -Path $env:SystemDrive\.; ` Copy-Item -Path $env:ZBX_SOURCES_DIR\bin\win64\zabbix_get.exe $env:ZBX_OUTPUT_DIR\bin; ` Copy-Item -Path $env:ZBX_SOURCES_DIR\bin\win64\zabbix_sender.exe $env:ZBX_OUTPUT_DIR\bin; ` Copy-Item -Path $env:ZBX_SOURCES_DIR\conf\zabbix_agentd.win.conf $env:ZBX_OUTPUT_DIR\conf\zabbix_agentd.conf_template; ` - Copy-Item -Recurse -Path $env:SystemDrive\config_templates\agent $env:ZBX_OUTPUT_DIR\conf\; ` + Copy-Item -Recurse -Path $env:SystemDrive\config_templates\agent\* $env:ZBX_OUTPUT_DIR\conf\; ` Write-Host 'Zabbix binaries are compiled...'; diff --git a/Dockerfiles/build-mysql/windows/Dockerfile.agent2 b/Dockerfiles/build-mysql/windows/Dockerfile.agent2 index d4af05afb..d62fa0a83 100644 --- a/Dockerfiles/build-mysql/windows/Dockerfile.agent2 +++ b/Dockerfiles/build-mysql/windows/Dockerfile.agent2 @@ -17,7 +17,7 @@ ARG POSTGRESQL_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/postgresql.git ARG MSSQL_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/mssql.git ARG EMBER_PLUS_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/ember-plus.git ARG NVIDIA_GPU_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/nvidia-gpu.git -ARG GIT_BRANCH=master +ARG GIT_BRANCH ARG ZBX_PLUGINS_VERSION=${GIT_BRANCH:-$ZBX_VERSION} @@ -76,7 +76,7 @@ RUN Set-Location -Path $env:SystemDrive\.; ` Copy-Item -Path $env:ZBX_SOURCES_DIR\bin\win64\zabbix_agent2.exe $env:ZBX_OUTPUT_DIR\sbin; ` Copy-Item -Path $env:ZBX_SOURCES_DIR\src\go\conf\zabbix_agent2.win.conf $env:ZBX_OUTPUT_DIR\conf\zabbix_agent2.conf_template; ` Copy-Item -Recurse -Path $env:ZBX_SOURCES_DIR\src\go\conf\zabbix_agent2.d $env:ZBX_OUTPUT_DIR\conf\zabbix_agent2.d; ` - Copy-Item -Recurse -Path $env:SystemDrive\config_templates\agent2 $env:ZBX_OUTPUT_DIR\conf; ` + Copy-Item -Recurse -Path $env:SystemDrive\config_templates\agent2\* $env:ZBX_OUTPUT_DIR\conf; ` mingw32-make -s clean; ` ` Write-Host ('Building Zabbix MongoDB plugin {0} version ...' -f $env:MONGODB_PLUGIN_VERSION); ` diff --git a/Dockerfiles/build-mysql/windows/Dockerfile_llvm_clang.agent2 b/Dockerfiles/build-mysql/windows/Dockerfile_llvm_clang.agent2 index bfb149758..fdb68a139 100644 --- a/Dockerfiles/build-mysql/windows/Dockerfile_llvm_clang.agent2 +++ b/Dockerfiles/build-mysql/windows/Dockerfile_llvm_clang.agent2 @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1 # escape=` ARG MAJOR_VERSION=7.2 -ARG ZBX_VERSION=${MAJOR_VERSION} +ARG ZBX_VERSION=${MAJOR_VERSION}.1 ARG BUILD_BASE_IMAGE=zabbix-build-base:ltsc2022-agent2-${ZBX_VERSION} FROM ${BUILD_BASE_IMAGE} as builder @@ -9,14 +9,14 @@ FROM ${BUILD_BASE_IMAGE} as builder SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] ARG MAJOR_VERSION=7.2 -ARG ZBX_VERSION=${MAJOR_VERSION} +ARG ZBX_VERSION=${MAJOR_VERSION}.1 ARG ZABBIX_VERSION_RC_NUM=2400 ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git ARG MONGODB_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/mongodb.git ARG POSTGRESQL_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/postgresql.git ARG MSSQL_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/mssql.git ARG EMBER_PLUS_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/ember-plus.git -ARG GIT_BRANCH=master +ARG GIT_BRANCH ARG ZBX_PLUGINS_VERSION=${GIT_BRANCH:-$ZBX_VERSION} diff --git a/Dockerfiles/build-mysql/windows/Dockerfile_vcpkg.agent2 b/Dockerfiles/build-mysql/windows/Dockerfile_vcpkg.agent2 index 1b448c541..b19ddca0d 100644 --- a/Dockerfiles/build-mysql/windows/Dockerfile_vcpkg.agent2 +++ b/Dockerfiles/build-mysql/windows/Dockerfile_vcpkg.agent2 @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1 # escape=` ARG MAJOR_VERSION=7.2 -ARG ZBX_VERSION=${MAJOR_VERSION} +ARG ZBX_VERSION=${MAJOR_VERSION}.1 ARG BUILD_BASE_IMAGE=zabbix-build-base:ltsc2022-agent2-${ZBX_VERSION} FROM ${BUILD_BASE_IMAGE} as builder @@ -9,14 +9,14 @@ FROM ${BUILD_BASE_IMAGE} as builder SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] ARG MAJOR_VERSION=7.2 -ARG ZBX_VERSION=${MAJOR_VERSION} +ARG ZBX_VERSION=${MAJOR_VERSION}.1 ARG ZABBIX_VERSION_RC_NUM=2400 ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git ARG MONGODB_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/mongodb.git ARG POSTGRESQL_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/postgresql.git ARG MSSQL_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/mssql.git ARG EMBER_PLUS_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/ember-plus.git -ARG GIT_BRANCH=master +ARG GIT_BRANCH ARG ZBX_PLUGINS_VERSION=${GIT_BRANCH:-$ZBX_VERSION}