From 7c3a77cc408112cb378ef8fb21da3c96f06ca960 Mon Sep 17 00:00:00 2001 From: Stanislas Date: Tue, 31 Mar 2026 14:03:33 +0200 Subject: [PATCH 01/11] Remove ddot install if version >=7.78 (installer side) --- install_script.sh.template | 39 +++++++++++++++++++++----------------- test/dockertest.sh | 1 + 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/install_script.sh.template b/install_script.sh.template index 90e5c344..3c9d406c 100644 --- a/install_script.sh.template +++ b/install_script.sh.template @@ -1241,9 +1241,12 @@ if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then report_telemetry exit 1; fi - # Starting from 7.78.0, DDOT is installed by the Agent post-install script + + # For version < 7.78, DDOT is not installed by the Agent post-install script + ddot_installed_by_agent=false + # Starting from 7.78.0, DDOT is installed by the Agent post-install script => no need to install it manually after if [ -n "$agent_minor_version_without_patch" ] && [ "${agent_minor_version_without_patch}" -ge 78 ]; then - DD_OTELCOLLECTOR_ENABLED= + ddot_installed_by_agent=true fi fi @@ -1335,7 +1338,7 @@ if [ "$OS" == "Red Hat" ]; then # if some packages were previously pinned (using excludepkgs) # this will unpin them as a side effect $sudo_cmd sh -c "echo -e '[datadog]\nname = Datadog, Inc.\nbaseurl = https://${yum_url}/${yum_version_path}/${ARCHI}/\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\npriority=1\ngpgkey=${gpgkeys}' > /etc/yum.repos.d/datadog.repo" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then $sudo_cmd sh -c "echo -e '[datadog-ddot]\nname = Datadog, Inc.\nbaseurl = https://${yum_url}/${ddot_yum_version_path}/${ARCHI}/\nenabled=0\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\npriority=1\ngpgkey=${gpgkeys}' > /etc/yum.repos.d/datadog-ddot.repo" fi @@ -1383,15 +1386,15 @@ END # packages can be empty if no_agent is set if [ ${#packages[@]} -ne 0 ]; then - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" fi # yum has a default retry of 10 https://github.com/Distrotech/yum/blob/f4e54aeed297158c563828aa3ebb93d0c8ce7e38/docs/yum.conf.5#L364-L366 - $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then + $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) + if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog-ddot' install $dnf_flag ${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) fi @@ -1456,7 +1459,7 @@ elif [ "$OS" == "Debian" ]; then $sudo_cmd sh -c "echo 'deb [signed-by=${apt_usr_share_keyring}] https://${apt_url}/ ${apt_repo_version}' > /etc/apt/sources.list.d/datadog.list" $sudo_cmd sh -c "chmod a+r /etc/apt/sources.list.d/datadog.list" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then printf "\033[34m\n* Installing APT package sources for Datadog DDOT\n\033[0m\n" $sudo_cmd sh -c "echo 'deb [signed-by=${apt_usr_share_keyring}] https://${apt_url}/ ${ddot_apt_repo_version}' > /etc/apt/sources.list.d/datadog-ddot.list" $sudo_cmd sh -c "chmod a+r /etc/apt/sources.list.d/datadog-ddot.list" @@ -1507,7 +1510,7 @@ If the failing repository is Datadog, please contact Datadog support. ***** " $sudo_cmd apt-get update -o Dir::Etc::sourcelist="sources.list.d/datadog.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then $sudo_cmd apt-get update -o Dir::Etc::sourcelist="sources.list.d/datadog-ddot.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list /etc/apt/sources.list.d/datadog-ddot.list.disabled fi @@ -1546,7 +1549,7 @@ If the cause is unclear, please contact Datadog support. $sudo_cmd rm -rf "/opt/datadog-agent/python-scripts/__pycache__" fi - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" @@ -1567,8 +1570,8 @@ END )" start_stage "install_agent_packages" - $sudo_cmd bash -c "POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${packages[*]} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then + $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${packages[*]} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" + if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list.disabled /etc/apt/sources.list.d/datadog-ddot.list $sudo_cmd bash -c "POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${ddot_package} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list /etc/apt/sources.list.d/datadog-ddot.list.disabled @@ -1653,7 +1656,7 @@ elif [ "$OS" == "SUSE" ]; then echo -e "\033[34m\n* Installing YUM Repository for Datadog\n\033[0m" $sudo_cmd sh -c "echo -e '[datadog]\nname=datadog\nenabled=1\nbaseurl=https://${yum_url}/suse/${yum_version_path}/${ARCHI}\ntype=rpm-md\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\ngpgkey=${gpgkeys}' > /etc/zypp/repos.d/datadog.repo" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then echo -e "\033[34m\n* Installing YUM Repository for DDOT\n\033[0m" $sudo_cmd sh -c "echo -e '[datadog-ddot]\nname=datadog-ddot\nenabled=0\nbaseurl=https://${yum_url}/suse/${ddot_yum_version_path}/${ARCHI}\ntype=rpm-md\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\ngpgkey=${gpgkeys}' > /etc/zypp/repos.d/datadog-ddot.repo" fi @@ -1661,7 +1664,7 @@ elif [ "$OS" == "SUSE" ]; then echo -e "\033[34m\n* Refreshing repositories\n\033[0m" $sudo_cmd zypper --non-interactive --no-gpg-checks refresh datadog - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then $sudo_cmd zypper --non-interactive --no-gpg-checks refresh datadog-ddot fi @@ -1731,19 +1734,19 @@ END )" start_stage "install_agent_packages" if [ ${#packages[@]} -ne 0 ]; then - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" fi # Not yet retry mechanism in zypper, see https://github.com/openSUSE/zypper/issues/420 if [ -z "$sudo_cmd" ]; then - ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: + DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: else - $sudo_cmd ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE="${SYSTEMD_OFFLINE:-0}" zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: + $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' ZYPP_RPM_DEBUG='${ZYPP_RPM_DEBUG:-0}' SYSTEMD_OFFLINE='${SYSTEMD_OFFLINE:-0}' zypper --non-interactive --no-refresh install ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: fi - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then if [ -z "$sudo_cmd" ]; then ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: else @@ -2222,6 +2225,8 @@ elif [ ! "$no_agent" ]; then fi # DDOT configuration update +# Even if DDOT is installed by the agent, update_ddot still needs to run +# to enable otelcollector in datadog.yaml after datadog.yaml is written. if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then update_ddot "$sudo_cmd" "$config_file" manage_otel_config "$sudo_cmd" "$otel_config_file" "$apikey" "$site" diff --git a/test/dockertest.sh b/test/dockertest.sh index 7632ba34..fdb26af0 100755 --- a/test/dockertest.sh +++ b/test/dockertest.sh @@ -84,6 +84,7 @@ docker run --rm --platform "$PLATFORM" \ -e DD_COMPLIANCE_CONFIG_ENABLED="${DD_COMPLIANCE_CONFIG_ENABLED}" \ -e DD_RUNTIME_SECURITY_CONFIG_ENABLED="${DD_RUNTIME_SECURITY_CONFIG_ENABLED}" \ -e DD_SYSTEM_PROBE_SERVICE_MONITORING_ENABLED="${DD_SYSTEM_PROBE_SERVICE_MONITORING_ENABLED}" \ + -e DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" \ -e DD_INSTALL_ONLY=true \ -e DD_AGENT_MINOR_VERSION="${MINOR_VERSION}" \ -e DD_AGENT_FLAVOR="${FLAVOR}" \ From 7e7b0b8921d3bc465c7df634a211a522a97f1a5e Mon Sep 17 00:00:00 2001 From: Stanislas Date: Tue, 31 Mar 2026 14:15:02 +0200 Subject: [PATCH 02/11] change condition format --- install_script.sh.template | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/install_script.sh.template b/install_script.sh.template index 3c9d406c..cc7f8528 100644 --- a/install_script.sh.template +++ b/install_script.sh.template @@ -1338,7 +1338,7 @@ if [ "$OS" == "Red Hat" ]; then # if some packages were previously pinned (using excludepkgs) # this will unpin them as a side effect $sudo_cmd sh -c "echo -e '[datadog]\nname = Datadog, Inc.\nbaseurl = https://${yum_url}/${yum_version_path}/${ARCHI}/\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\npriority=1\ngpgkey=${gpgkeys}' > /etc/yum.repos.d/datadog.repo" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then $sudo_cmd sh -c "echo -e '[datadog-ddot]\nname = Datadog, Inc.\nbaseurl = https://${yum_url}/${ddot_yum_version_path}/${ARCHI}/\nenabled=0\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\npriority=1\ngpgkey=${gpgkeys}' > /etc/yum.repos.d/datadog-ddot.repo" fi @@ -1386,7 +1386,7 @@ END # packages can be empty if no_agent is set if [ ${#packages[@]} -ne 0 ]; then - if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" @@ -1394,7 +1394,7 @@ END # yum has a default retry of 10 https://github.com/Distrotech/yum/blob/f4e54aeed297158c563828aa3ebb93d0c8ce7e38/docs/yum.conf.5#L364-L366 $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) - if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog-ddot' install $dnf_flag ${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) fi @@ -1459,7 +1459,7 @@ elif [ "$OS" == "Debian" ]; then $sudo_cmd sh -c "echo 'deb [signed-by=${apt_usr_share_keyring}] https://${apt_url}/ ${apt_repo_version}' > /etc/apt/sources.list.d/datadog.list" $sudo_cmd sh -c "chmod a+r /etc/apt/sources.list.d/datadog.list" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then printf "\033[34m\n* Installing APT package sources for Datadog DDOT\n\033[0m\n" $sudo_cmd sh -c "echo 'deb [signed-by=${apt_usr_share_keyring}] https://${apt_url}/ ${ddot_apt_repo_version}' > /etc/apt/sources.list.d/datadog-ddot.list" $sudo_cmd sh -c "chmod a+r /etc/apt/sources.list.d/datadog-ddot.list" @@ -1510,7 +1510,7 @@ If the failing repository is Datadog, please contact Datadog support. ***** " $sudo_cmd apt-get update -o Dir::Etc::sourcelist="sources.list.d/datadog.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then $sudo_cmd apt-get update -o Dir::Etc::sourcelist="sources.list.d/datadog-ddot.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list /etc/apt/sources.list.d/datadog-ddot.list.disabled fi @@ -1549,7 +1549,7 @@ If the cause is unclear, please contact Datadog support. $sudo_cmd rm -rf "/opt/datadog-agent/python-scripts/__pycache__" fi - if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" @@ -1571,7 +1571,7 @@ END start_stage "install_agent_packages" $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${packages[*]} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list.disabled /etc/apt/sources.list.d/datadog-ddot.list $sudo_cmd bash -c "POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${ddot_package} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list /etc/apt/sources.list.d/datadog-ddot.list.disabled @@ -1656,7 +1656,7 @@ elif [ "$OS" == "SUSE" ]; then echo -e "\033[34m\n* Installing YUM Repository for Datadog\n\033[0m" $sudo_cmd sh -c "echo -e '[datadog]\nname=datadog\nenabled=1\nbaseurl=https://${yum_url}/suse/${yum_version_path}/${ARCHI}\ntype=rpm-md\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\ngpgkey=${gpgkeys}' > /etc/zypp/repos.d/datadog.repo" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then echo -e "\033[34m\n* Installing YUM Repository for DDOT\n\033[0m" $sudo_cmd sh -c "echo -e '[datadog-ddot]\nname=datadog-ddot\nenabled=0\nbaseurl=https://${yum_url}/suse/${ddot_yum_version_path}/${ARCHI}\ntype=rpm-md\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\ngpgkey=${gpgkeys}' > /etc/zypp/repos.d/datadog-ddot.repo" fi @@ -1664,7 +1664,7 @@ elif [ "$OS" == "SUSE" ]; then echo -e "\033[34m\n* Refreshing repositories\n\033[0m" $sudo_cmd zypper --non-interactive --no-gpg-checks refresh datadog - if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then $sudo_cmd zypper --non-interactive --no-gpg-checks refresh datadog-ddot fi @@ -1734,7 +1734,7 @@ END )" start_stage "install_agent_packages" if [ ${#packages[@]} -ne 0 ]; then - if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" @@ -1746,7 +1746,7 @@ END $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' ZYPP_RPM_DEBUG='${ZYPP_RPM_DEBUG:-0}' SYSTEMD_OFFLINE='${SYSTEMD_OFFLINE:-0}' zypper --non-interactive --no-refresh install ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: fi - if [ -n "$DD_OTELCOLLECTOR_ENABLED" -a "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then if [ -z "$sudo_cmd" ]; then ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: else From 9fdec78ee5cb7cf220898da97eb5f1b2ca238f3a Mon Sep 17 00:00:00 2001 From: Stanislas Date: Tue, 31 Mar 2026 16:15:39 +0200 Subject: [PATCH 03/11] Add ddot_oci_tag --- install_script.sh.template | 56 ++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/install_script.sh.template b/install_script.sh.template index cc7f8528..19205973 100644 --- a/install_script.sh.template +++ b/install_script.sh.template @@ -1233,6 +1233,8 @@ if [[ "$agent_flavor" == "datadog-fips-agent" ]]; then fi fi +ddot_use_installer= +ddot_oci_tag="latest" if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then if [ "$agent_major_version" != "7" ] || { [ -n "$agent_minor_version_without_patch" ] && [ "${agent_minor_version_without_patch}" -lt 69 ]; } then ERROR_MESSAGE="The datadog-agent-ddot is only available since version AGENT_MAJOR_VERSION_PLACEHOLDER.69.3 and requested minor version is $agent_minor_version" @@ -1242,13 +1244,27 @@ if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then exit 1; fi - # For version < 7.78, DDOT is not installed by the Agent post-install script - ddot_installed_by_agent=false - # Starting from 7.78.0, DDOT is installed by the Agent post-install script => no need to install it manually after - if [ -n "$agent_minor_version_without_patch" ] && [ "${agent_minor_version_without_patch}" -ge 78 ]; then - ddot_installed_by_agent=true + # For version < 7.78, DDOT is not installed by the agent installer + # Starting from 7.78.0, DDOT is installed via datadog-installer extension install => no need to install it manually + if [ -z "$agent_minor_version_without_patch" ] || [ "${agent_minor_version_without_patch}" -ge 78 ]; then + ddot_use_installer=true + if [ -n "$agent_minor_version_without_patch" ]; then + if echo "${agent_minor_version}" | grep -q '~'; then + ddot_oci_tag="${agent_major_version}.$(echo "${agent_minor_version}" | sed 's/~/-/')" + else + ddot_oci_tag="${agent_major_version}.${agent_minor_version}-1" + fi + fi fi fi +if [ -n "$TESTING_DDOT_OCI_TAG" ]; then + ddot_oci_tag="$TESTING_DDOT_OCI_TAG" +fi +if [ -n "$TESTING_APT_URL" ] || [ -n "$TESTING_YUM_URL" ]; then + ddot_oci_registry=${DD_INSTALLER_REGISTRY_URL_AGENT_PACKAGE:-"installtesting.datad0g.com"} +else + ddot_oci_registry=${DD_INSTALLER_REGISTRY_URL_AGENT_PACKAGE:-$([[ "$DD_SITE" == "datad0g.com" ]] && echo "install.datad0g.com" || echo "install.datadoghq.com")} +fi if [ -n "$remote_updates" ] && { [ -n "$agent_minor_version_without_patch" ] && [ "$agent_minor_version_without_patch" -lt 69 ]; }; then echo -e "\033[33mWarning: Remote Agent Management is not supported for Agent versions less than 7.69 (General Availability).\n\033[0m" @@ -1338,7 +1354,7 @@ if [ "$OS" == "Red Hat" ]; then # if some packages were previously pinned (using excludepkgs) # this will unpin them as a side effect $sudo_cmd sh -c "echo -e '[datadog]\nname = Datadog, Inc.\nbaseurl = https://${yum_url}/${yum_version_path}/${ARCHI}/\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\npriority=1\ngpgkey=${gpgkeys}' > /etc/yum.repos.d/datadog.repo" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then $sudo_cmd sh -c "echo -e '[datadog-ddot]\nname = Datadog, Inc.\nbaseurl = https://${yum_url}/${ddot_yum_version_path}/${ARCHI}/\nenabled=0\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\npriority=1\ngpgkey=${gpgkeys}' > /etc/yum.repos.d/datadog-ddot.repo" fi @@ -1386,15 +1402,15 @@ END # packages can be empty if no_agent is set if [ ${#packages[@]} -ne 0 ]; then - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" fi # yum has a default retry of 10 https://github.com/Distrotech/yum/blob/f4e54aeed297158c563828aa3ebb93d0c8ce7e38/docs/yum.conf.5#L364-L366 - $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog-ddot' install $dnf_flag ${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) fi @@ -1459,7 +1475,7 @@ elif [ "$OS" == "Debian" ]; then $sudo_cmd sh -c "echo 'deb [signed-by=${apt_usr_share_keyring}] https://${apt_url}/ ${apt_repo_version}' > /etc/apt/sources.list.d/datadog.list" $sudo_cmd sh -c "chmod a+r /etc/apt/sources.list.d/datadog.list" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then printf "\033[34m\n* Installing APT package sources for Datadog DDOT\n\033[0m\n" $sudo_cmd sh -c "echo 'deb [signed-by=${apt_usr_share_keyring}] https://${apt_url}/ ${ddot_apt_repo_version}' > /etc/apt/sources.list.d/datadog-ddot.list" $sudo_cmd sh -c "chmod a+r /etc/apt/sources.list.d/datadog-ddot.list" @@ -1510,7 +1526,7 @@ If the failing repository is Datadog, please contact Datadog support. ***** " $sudo_cmd apt-get update -o Dir::Etc::sourcelist="sources.list.d/datadog.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then $sudo_cmd apt-get update -o Dir::Etc::sourcelist="sources.list.d/datadog-ddot.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list /etc/apt/sources.list.d/datadog-ddot.list.disabled fi @@ -1549,7 +1565,7 @@ If the cause is unclear, please contact Datadog support. $sudo_cmd rm -rf "/opt/datadog-agent/python-scripts/__pycache__" fi - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" @@ -1570,8 +1586,8 @@ END )" start_stage "install_agent_packages" - $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${packages[*]} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${packages[*]} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list.disabled /etc/apt/sources.list.d/datadog-ddot.list $sudo_cmd bash -c "POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${ddot_package} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list /etc/apt/sources.list.d/datadog-ddot.list.disabled @@ -1656,7 +1672,7 @@ elif [ "$OS" == "SUSE" ]; then echo -e "\033[34m\n* Installing YUM Repository for Datadog\n\033[0m" $sudo_cmd sh -c "echo -e '[datadog]\nname=datadog\nenabled=1\nbaseurl=https://${yum_url}/suse/${yum_version_path}/${ARCHI}\ntype=rpm-md\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\ngpgkey=${gpgkeys}' > /etc/zypp/repos.d/datadog.repo" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then echo -e "\033[34m\n* Installing YUM Repository for DDOT\n\033[0m" $sudo_cmd sh -c "echo -e '[datadog-ddot]\nname=datadog-ddot\nenabled=0\nbaseurl=https://${yum_url}/suse/${ddot_yum_version_path}/${ARCHI}\ntype=rpm-md\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\ngpgkey=${gpgkeys}' > /etc/zypp/repos.d/datadog-ddot.repo" fi @@ -1664,7 +1680,7 @@ elif [ "$OS" == "SUSE" ]; then echo -e "\033[34m\n* Refreshing repositories\n\033[0m" $sudo_cmd zypper --non-interactive --no-gpg-checks refresh datadog - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then $sudo_cmd zypper --non-interactive --no-gpg-checks refresh datadog-ddot fi @@ -1734,19 +1750,19 @@ END )" start_stage "install_agent_packages" if [ ${#packages[@]} -ne 0 ]; then - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" fi # Not yet retry mechanism in zypper, see https://github.com/openSUSE/zypper/issues/420 if [ -z "$sudo_cmd" ]; then - DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: + DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" DD_INSTALLER_REGISTRY_URL="${DD_INSTALLER_REGISTRY_URL}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: else - $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' ZYPP_RPM_DEBUG='${ZYPP_RPM_DEBUG:-0}' SYSTEMD_OFFLINE='${SYSTEMD_OFFLINE:-0}' zypper --non-interactive --no-refresh install ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: + $sudo_cmd DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" DD_INSTALLER_REGISTRY_URL="${DD_INSTALLER_REGISTRY_URL}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE="${SYSTEMD_OFFLINE:-0}" zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: fi - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then if [ -z "$sudo_cmd" ]; then ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: else From a42a1bf31ee7a5de654010b4a659ea591b9df120 Mon Sep 17 00:00:00 2001 From: Stanislas Date: Tue, 31 Mar 2026 17:59:32 +0200 Subject: [PATCH 04/11] Revert "Add ddot_oci_tag" This reverts commit 9fdec78ee5cb7cf220898da97eb5f1b2ca238f3a. --- install_script.sh.template | 56 ++++++++++++++------------------------ 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/install_script.sh.template b/install_script.sh.template index 19205973..cc7f8528 100644 --- a/install_script.sh.template +++ b/install_script.sh.template @@ -1233,8 +1233,6 @@ if [[ "$agent_flavor" == "datadog-fips-agent" ]]; then fi fi -ddot_use_installer= -ddot_oci_tag="latest" if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then if [ "$agent_major_version" != "7" ] || { [ -n "$agent_minor_version_without_patch" ] && [ "${agent_minor_version_without_patch}" -lt 69 ]; } then ERROR_MESSAGE="The datadog-agent-ddot is only available since version AGENT_MAJOR_VERSION_PLACEHOLDER.69.3 and requested minor version is $agent_minor_version" @@ -1244,27 +1242,13 @@ if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then exit 1; fi - # For version < 7.78, DDOT is not installed by the agent installer - # Starting from 7.78.0, DDOT is installed via datadog-installer extension install => no need to install it manually - if [ -z "$agent_minor_version_without_patch" ] || [ "${agent_minor_version_without_patch}" -ge 78 ]; then - ddot_use_installer=true - if [ -n "$agent_minor_version_without_patch" ]; then - if echo "${agent_minor_version}" | grep -q '~'; then - ddot_oci_tag="${agent_major_version}.$(echo "${agent_minor_version}" | sed 's/~/-/')" - else - ddot_oci_tag="${agent_major_version}.${agent_minor_version}-1" - fi - fi + # For version < 7.78, DDOT is not installed by the Agent post-install script + ddot_installed_by_agent=false + # Starting from 7.78.0, DDOT is installed by the Agent post-install script => no need to install it manually after + if [ -n "$agent_minor_version_without_patch" ] && [ "${agent_minor_version_without_patch}" -ge 78 ]; then + ddot_installed_by_agent=true fi fi -if [ -n "$TESTING_DDOT_OCI_TAG" ]; then - ddot_oci_tag="$TESTING_DDOT_OCI_TAG" -fi -if [ -n "$TESTING_APT_URL" ] || [ -n "$TESTING_YUM_URL" ]; then - ddot_oci_registry=${DD_INSTALLER_REGISTRY_URL_AGENT_PACKAGE:-"installtesting.datad0g.com"} -else - ddot_oci_registry=${DD_INSTALLER_REGISTRY_URL_AGENT_PACKAGE:-$([[ "$DD_SITE" == "datad0g.com" ]] && echo "install.datad0g.com" || echo "install.datadoghq.com")} -fi if [ -n "$remote_updates" ] && { [ -n "$agent_minor_version_without_patch" ] && [ "$agent_minor_version_without_patch" -lt 69 ]; }; then echo -e "\033[33mWarning: Remote Agent Management is not supported for Agent versions less than 7.69 (General Availability).\n\033[0m" @@ -1354,7 +1338,7 @@ if [ "$OS" == "Red Hat" ]; then # if some packages were previously pinned (using excludepkgs) # this will unpin them as a side effect $sudo_cmd sh -c "echo -e '[datadog]\nname = Datadog, Inc.\nbaseurl = https://${yum_url}/${yum_version_path}/${ARCHI}/\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\npriority=1\ngpgkey=${gpgkeys}' > /etc/yum.repos.d/datadog.repo" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then $sudo_cmd sh -c "echo -e '[datadog-ddot]\nname = Datadog, Inc.\nbaseurl = https://${yum_url}/${ddot_yum_version_path}/${ARCHI}/\nenabled=0\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\npriority=1\ngpgkey=${gpgkeys}' > /etc/yum.repos.d/datadog-ddot.repo" fi @@ -1402,15 +1386,15 @@ END # packages can be empty if no_agent is set if [ ${#packages[@]} -ne 0 ]; then - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" fi # yum has a default retry of 10 https://github.com/Distrotech/yum/blob/f4e54aeed297158c563828aa3ebb93d0c8ce7e38/docs/yum.conf.5#L364-L366 - $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then + $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog-ddot' install $dnf_flag ${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) fi @@ -1475,7 +1459,7 @@ elif [ "$OS" == "Debian" ]; then $sudo_cmd sh -c "echo 'deb [signed-by=${apt_usr_share_keyring}] https://${apt_url}/ ${apt_repo_version}' > /etc/apt/sources.list.d/datadog.list" $sudo_cmd sh -c "chmod a+r /etc/apt/sources.list.d/datadog.list" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then printf "\033[34m\n* Installing APT package sources for Datadog DDOT\n\033[0m\n" $sudo_cmd sh -c "echo 'deb [signed-by=${apt_usr_share_keyring}] https://${apt_url}/ ${ddot_apt_repo_version}' > /etc/apt/sources.list.d/datadog-ddot.list" $sudo_cmd sh -c "chmod a+r /etc/apt/sources.list.d/datadog-ddot.list" @@ -1526,7 +1510,7 @@ If the failing repository is Datadog, please contact Datadog support. ***** " $sudo_cmd apt-get update -o Dir::Etc::sourcelist="sources.list.d/datadog.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then $sudo_cmd apt-get update -o Dir::Etc::sourcelist="sources.list.d/datadog-ddot.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list /etc/apt/sources.list.d/datadog-ddot.list.disabled fi @@ -1565,7 +1549,7 @@ If the cause is unclear, please contact Datadog support. $sudo_cmd rm -rf "/opt/datadog-agent/python-scripts/__pycache__" fi - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" @@ -1586,8 +1570,8 @@ END )" start_stage "install_agent_packages" - $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${packages[*]} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then + $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${packages[*]} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list.disabled /etc/apt/sources.list.d/datadog-ddot.list $sudo_cmd bash -c "POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${ddot_package} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list /etc/apt/sources.list.d/datadog-ddot.list.disabled @@ -1672,7 +1656,7 @@ elif [ "$OS" == "SUSE" ]; then echo -e "\033[34m\n* Installing YUM Repository for Datadog\n\033[0m" $sudo_cmd sh -c "echo -e '[datadog]\nname=datadog\nenabled=1\nbaseurl=https://${yum_url}/suse/${yum_version_path}/${ARCHI}\ntype=rpm-md\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\ngpgkey=${gpgkeys}' > /etc/zypp/repos.d/datadog.repo" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then echo -e "\033[34m\n* Installing YUM Repository for DDOT\n\033[0m" $sudo_cmd sh -c "echo -e '[datadog-ddot]\nname=datadog-ddot\nenabled=0\nbaseurl=https://${yum_url}/suse/${ddot_yum_version_path}/${ARCHI}\ntype=rpm-md\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\ngpgkey=${gpgkeys}' > /etc/zypp/repos.d/datadog-ddot.repo" fi @@ -1680,7 +1664,7 @@ elif [ "$OS" == "SUSE" ]; then echo -e "\033[34m\n* Refreshing repositories\n\033[0m" $sudo_cmd zypper --non-interactive --no-gpg-checks refresh datadog - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then $sudo_cmd zypper --non-interactive --no-gpg-checks refresh datadog-ddot fi @@ -1750,19 +1734,19 @@ END )" start_stage "install_agent_packages" if [ ${#packages[@]} -ne 0 ]; then - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" fi # Not yet retry mechanism in zypper, see https://github.com/openSUSE/zypper/issues/420 if [ -z "$sudo_cmd" ]; then - DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" DD_INSTALLER_REGISTRY_URL="${DD_INSTALLER_REGISTRY_URL}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: + DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: else - $sudo_cmd DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" DD_INSTALLER_REGISTRY_URL="${DD_INSTALLER_REGISTRY_URL}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE="${SYSTEMD_OFFLINE:-0}" zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: + $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' ZYPP_RPM_DEBUG='${ZYPP_RPM_DEBUG:-0}' SYSTEMD_OFFLINE='${SYSTEMD_OFFLINE:-0}' zypper --non-interactive --no-refresh install ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: fi - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_use_installer" ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then if [ -z "$sudo_cmd" ]; then ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: else From 3be32cebc01b1013f1024310745a1b9dcdaf82e8 Mon Sep 17 00:00:00 2001 From: Stanislas Date: Tue, 31 Mar 2026 18:04:55 +0200 Subject: [PATCH 05/11] update format --- install_script.sh.template | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/install_script.sh.template b/install_script.sh.template index cc7f8528..22bf6a99 100644 --- a/install_script.sh.template +++ b/install_script.sh.template @@ -1243,7 +1243,7 @@ if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then fi # For version < 7.78, DDOT is not installed by the Agent post-install script - ddot_installed_by_agent=false + ddot_installed_by_agent= # Starting from 7.78.0, DDOT is installed by the Agent post-install script => no need to install it manually after if [ -n "$agent_minor_version_without_patch" ] && [ "${agent_minor_version_without_patch}" -ge 78 ]; then ddot_installed_by_agent=true @@ -1338,7 +1338,7 @@ if [ "$OS" == "Red Hat" ]; then # if some packages were previously pinned (using excludepkgs) # this will unpin them as a side effect $sudo_cmd sh -c "echo -e '[datadog]\nname = Datadog, Inc.\nbaseurl = https://${yum_url}/${yum_version_path}/${ARCHI}/\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\npriority=1\ngpgkey=${gpgkeys}' > /etc/yum.repos.d/datadog.repo" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then $sudo_cmd sh -c "echo -e '[datadog-ddot]\nname = Datadog, Inc.\nbaseurl = https://${yum_url}/${ddot_yum_version_path}/${ARCHI}/\nenabled=0\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\npriority=1\ngpgkey=${gpgkeys}' > /etc/yum.repos.d/datadog-ddot.repo" fi @@ -1386,7 +1386,7 @@ END # packages can be empty if no_agent is set if [ ${#packages[@]} -ne 0 ]; then - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" @@ -1394,7 +1394,7 @@ END # yum has a default retry of 10 https://github.com/Distrotech/yum/blob/f4e54aeed297158c563828aa3ebb93d0c8ce7e38/docs/yum.conf.5#L364-L366 $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog-ddot' install $dnf_flag ${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) fi @@ -1459,7 +1459,7 @@ elif [ "$OS" == "Debian" ]; then $sudo_cmd sh -c "echo 'deb [signed-by=${apt_usr_share_keyring}] https://${apt_url}/ ${apt_repo_version}' > /etc/apt/sources.list.d/datadog.list" $sudo_cmd sh -c "chmod a+r /etc/apt/sources.list.d/datadog.list" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then printf "\033[34m\n* Installing APT package sources for Datadog DDOT\n\033[0m\n" $sudo_cmd sh -c "echo 'deb [signed-by=${apt_usr_share_keyring}] https://${apt_url}/ ${ddot_apt_repo_version}' > /etc/apt/sources.list.d/datadog-ddot.list" $sudo_cmd sh -c "chmod a+r /etc/apt/sources.list.d/datadog-ddot.list" @@ -1510,7 +1510,7 @@ If the failing repository is Datadog, please contact Datadog support. ***** " $sudo_cmd apt-get update -o Dir::Etc::sourcelist="sources.list.d/datadog.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then $sudo_cmd apt-get update -o Dir::Etc::sourcelist="sources.list.d/datadog-ddot.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list /etc/apt/sources.list.d/datadog-ddot.list.disabled fi @@ -1549,7 +1549,7 @@ If the cause is unclear, please contact Datadog support. $sudo_cmd rm -rf "/opt/datadog-agent/python-scripts/__pycache__" fi - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" @@ -1571,7 +1571,7 @@ END start_stage "install_agent_packages" $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${packages[*]} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list.disabled /etc/apt/sources.list.d/datadog-ddot.list $sudo_cmd bash -c "POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${ddot_package} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list /etc/apt/sources.list.d/datadog-ddot.list.disabled @@ -1656,7 +1656,7 @@ elif [ "$OS" == "SUSE" ]; then echo -e "\033[34m\n* Installing YUM Repository for Datadog\n\033[0m" $sudo_cmd sh -c "echo -e '[datadog]\nname=datadog\nenabled=1\nbaseurl=https://${yum_url}/suse/${yum_version_path}/${ARCHI}\ntype=rpm-md\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\ngpgkey=${gpgkeys}' > /etc/zypp/repos.d/datadog.repo" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then echo -e "\033[34m\n* Installing YUM Repository for DDOT\n\033[0m" $sudo_cmd sh -c "echo -e '[datadog-ddot]\nname=datadog-ddot\nenabled=0\nbaseurl=https://${yum_url}/suse/${ddot_yum_version_path}/${ARCHI}\ntype=rpm-md\ngpgcheck=1\nrepo_gpgcheck=${rpm_repo_gpgcheck}\ngpgkey=${gpgkeys}' > /etc/zypp/repos.d/datadog-ddot.repo" fi @@ -1664,7 +1664,7 @@ elif [ "$OS" == "SUSE" ]; then echo -e "\033[34m\n* Refreshing repositories\n\033[0m" $sudo_cmd zypper --non-interactive --no-gpg-checks refresh datadog - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then $sudo_cmd zypper --non-interactive --no-gpg-checks refresh datadog-ddot fi @@ -1734,7 +1734,7 @@ END )" start_stage "install_agent_packages" if [ ${#packages[@]} -ne 0 ]; then - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then echo -e " \033[33mInstalling package(s): ${packages[*]} ${ddot_package}\n\033[0m" else echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" @@ -1743,10 +1743,10 @@ END if [ -z "$sudo_cmd" ]; then DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: else - $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' ZYPP_RPM_DEBUG='${ZYPP_RPM_DEBUG:-0}' SYSTEMD_OFFLINE='${SYSTEMD_OFFLINE:-0}' zypper --non-interactive --no-refresh install ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: + $sudo_cmd DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE="${SYSTEMD_OFFLINE:-0}" zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: fi - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ "$ddot_installed_by_agent" = false ]; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then if [ -z "$sudo_cmd" ]; then ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: else From 3c908ccc43c13c17e5fe377b5cd97c4acee28ae3 Mon Sep 17 00:00:00 2001 From: Stanislas Date: Tue, 31 Mar 2026 18:11:50 +0200 Subject: [PATCH 06/11] Add DD_INSTALLER_REGISTRY_URL in install env --- install_script.sh.template | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install_script.sh.template b/install_script.sh.template index 22bf6a99..a65a3e47 100644 --- a/install_script.sh.template +++ b/install_script.sh.template @@ -1393,7 +1393,7 @@ END fi # yum has a default retry of 10 https://github.com/Distrotech/yum/blob/f4e54aeed297158c563828aa3ebb93d0c8ce7e38/docs/yum.conf.5#L364-L366 - $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) + $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog-ddot' install $dnf_flag ${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) fi @@ -1570,7 +1570,7 @@ END )" start_stage "install_agent_packages" - $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${packages[*]} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" + $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${packages[*]} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list.disabled /etc/apt/sources.list.d/datadog-ddot.list $sudo_cmd bash -c "POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${ddot_package} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" @@ -1741,9 +1741,9 @@ END fi # Not yet retry mechanism in zypper, see https://github.com/openSUSE/zypper/issues/420 if [ -z "$sudo_cmd" ]; then - DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: + DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" DD_INSTALLER_REGISTRY_URL="${DD_INSTALLER_REGISTRY_URL}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: else - $sudo_cmd DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE="${SYSTEMD_OFFLINE:-0}" zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: + $sudo_cmd DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" DD_INSTALLER_REGISTRY_URL="${DD_INSTALLER_REGISTRY_URL}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE="${SYSTEMD_OFFLINE:-0}" zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: fi if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then From 7ab22b07382e4f9cc3510e8880fb0eca8ddc98fe Mon Sep 17 00:00:00 2001 From: Stanislas Date: Wed, 1 Apr 2026 09:24:16 +0200 Subject: [PATCH 07/11] Uninstall datadog-agent-ddot RPM package before upgrade for 7.78+ --- install_script.sh.template | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/install_script.sh.template b/install_script.sh.template index a65a3e47..4ee2d9a4 100644 --- a/install_script.sh.template +++ b/install_script.sh.template @@ -1392,6 +1392,14 @@ END echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" fi + # When upgrading to 7.78+, DDOT is managed via OCI extension install. + # Remove the legacy datadog-agent-ddot RPM first to avoid strict version + # dependency conflict that prevent yum from upgrading datadog-agent. + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ] && rpm -q datadog-agent-ddot &>/dev/nul; then + echo -e " \033[33mRemoving legacy datadog-agent-ddot RPM package before upgrade...\n\033[0m" + $sudo_cmd yum -y remove datadog-agent-ddot + fi + # yum has a default retry of 10 https://github.com/Distrotech/yum/blob/f4e54aeed297158c563828aa3ebb93d0c8ce7e38/docs/yum.conf.5#L364-L366 $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then From 8ee994e857a0dda14617afb56acfd40421c9fd73 Mon Sep 17 00:00:00 2001 From: Stanislas Date: Wed, 1 Apr 2026 18:25:39 +0200 Subject: [PATCH 08/11] Add remove_existing_datadog_agent_ddot_package function to clean package and prevent errors --- install_script.sh.template | 56 ++++++++++++++++++++++++++++++++------ 1 file changed, 48 insertions(+), 8 deletions(-) diff --git a/install_script.sh.template b/install_script.sh.template index 4ee2d9a4..47222d5f 100644 --- a/install_script.sh.template +++ b/install_script.sh.template @@ -691,6 +691,45 @@ function remove_existing_datadog_installer_package() { return "$exit_status" } +function remove_existing_datadog_agent_ddot_package() { + local sudo_cmd="$1" + local os="$2" + + local exit_status=0 + # find if datadog-agent-ddot is installed + if [ "$os" == "Debian" ]; then + $sudo_cmd apt list --installed "datadog-agent-ddot" 2>/dev/null | grep -q "datadog-agent-ddot" || exit_status=$? + elif [ "$os" == "Red Hat" ]; then + $sudo_cmd yum list installed "datadog-agent-ddot" || exit_status=$? + elif [ "$os" == "SUSE" ]; then + $sudo_cmd zypper search -i "datadog-agent-ddot" || exit_status=$? + else + return 0 + fi + + if [ "$exit_status" -ne 0 ]; then + return 0 + fi + + echo -e "\033[34m\n* Removing the datadog-agent-ddot package\n\033[0m" + exit_status=0 + if [ "$os" == "Debian" ]; then + $sudo_cmd apt-get remove -y --force-yes "datadog-agent-ddot" || exit_status=$? + elif [ "$os" == "Red Hat" ]; then + $sudo_cmd yum -y --disablerepo='*' --enablerepo='datadog' remove "datadog-agent-ddot" || $sudo_cmd yum -y remove "datadog-agent-ddot" || exit_status=$? + elif [ "$os" == "SUSE" ]; then + $sudo_cmd zypper --non-interactive --no-refresh remove "datadog-agent-ddot" || exit_status=$? + else + return 0 + fi + + if [ "$exit_status" -ne 0 ]; then + echo -e "\033[31m\n* Failed to remove existing datadog-agent-ddot package. Please manually remove it and try again\n\033[0m" + exit "$exit_status" + fi + return "$exit_status" +} + function remove_existing_packages_for_fips_flavor() { local sudo_cmd="$1" local os="$2" @@ -1376,6 +1415,9 @@ if [ "$OS" == "Red Hat" ]; then remove_existing_packages_for_fips_flavor "$sudo_cmd" "$OS" fi remove_existing_datadog_installer_package "$sudo_cmd" "$OS" + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ]; then + remove_existing_datadog_agent_ddot_package "$sudo_cmd" "$OS" + fi # Complete package_sources_setup end_stage 0 "$(cat <<-END | tr -d '\n' @@ -1392,14 +1434,6 @@ END echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" fi - # When upgrading to 7.78+, DDOT is managed via OCI extension install. - # Remove the legacy datadog-agent-ddot RPM first to avoid strict version - # dependency conflict that prevent yum from upgrading datadog-agent. - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ] && rpm -q datadog-agent-ddot &>/dev/nul; then - echo -e " \033[33mRemoving legacy datadog-agent-ddot RPM package before upgrade...\n\033[0m" - $sudo_cmd yum -y remove datadog-agent-ddot - fi - # yum has a default retry of 10 https://github.com/Distrotech/yum/blob/f4e54aeed297158c563828aa3ebb93d0c8ce7e38/docs/yum.conf.5#L364-L366 $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then @@ -1551,6 +1585,9 @@ If the cause is unclear, please contact Datadog support. remove_existing_packages_for_fips_flavor "$sudo_cmd" "$OS" fi remove_existing_datadog_installer_package "$sudo_cmd" "$OS" + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ]; then + remove_existing_datadog_agent_ddot_package "$sudo_cmd" "$OS" + fi if [ "$agent_flavor" == "datadog-agent" ]; then # Old version of the install scripts created a __pycache__ directory in the python-scripts directory @@ -1734,6 +1771,9 @@ elif [ "$OS" == "SUSE" ]; then remove_existing_packages_for_fips_flavor "$sudo_cmd" "$OS" fi remove_existing_datadog_installer_package "$sudo_cmd" "$OS" + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ]; then + remove_existing_datadog_agent_ddot_package "$sudo_cmd" "$OS" + fi # Complete package_sources_setup end_stage 0 "$(cat <<-END | tr -d '\n' From bb16cd47f45053b0194af9290264e66cacd7ca68 Mon Sep 17 00:00:00 2001 From: Stanislas Date: Thu, 2 Apr 2026 11:56:47 +0200 Subject: [PATCH 09/11] Revert "Add remove_existing_datadog_agent_ddot_package function to clean package and prevent errors" This reverts commit 8ee994e857a0dda14617afb56acfd40421c9fd73. --- install_script.sh.template | 56 ++++++-------------------------------- 1 file changed, 8 insertions(+), 48 deletions(-) diff --git a/install_script.sh.template b/install_script.sh.template index 47222d5f..4ee2d9a4 100644 --- a/install_script.sh.template +++ b/install_script.sh.template @@ -691,45 +691,6 @@ function remove_existing_datadog_installer_package() { return "$exit_status" } -function remove_existing_datadog_agent_ddot_package() { - local sudo_cmd="$1" - local os="$2" - - local exit_status=0 - # find if datadog-agent-ddot is installed - if [ "$os" == "Debian" ]; then - $sudo_cmd apt list --installed "datadog-agent-ddot" 2>/dev/null | grep -q "datadog-agent-ddot" || exit_status=$? - elif [ "$os" == "Red Hat" ]; then - $sudo_cmd yum list installed "datadog-agent-ddot" || exit_status=$? - elif [ "$os" == "SUSE" ]; then - $sudo_cmd zypper search -i "datadog-agent-ddot" || exit_status=$? - else - return 0 - fi - - if [ "$exit_status" -ne 0 ]; then - return 0 - fi - - echo -e "\033[34m\n* Removing the datadog-agent-ddot package\n\033[0m" - exit_status=0 - if [ "$os" == "Debian" ]; then - $sudo_cmd apt-get remove -y --force-yes "datadog-agent-ddot" || exit_status=$? - elif [ "$os" == "Red Hat" ]; then - $sudo_cmd yum -y --disablerepo='*' --enablerepo='datadog' remove "datadog-agent-ddot" || $sudo_cmd yum -y remove "datadog-agent-ddot" || exit_status=$? - elif [ "$os" == "SUSE" ]; then - $sudo_cmd zypper --non-interactive --no-refresh remove "datadog-agent-ddot" || exit_status=$? - else - return 0 - fi - - if [ "$exit_status" -ne 0 ]; then - echo -e "\033[31m\n* Failed to remove existing datadog-agent-ddot package. Please manually remove it and try again\n\033[0m" - exit "$exit_status" - fi - return "$exit_status" -} - function remove_existing_packages_for_fips_flavor() { local sudo_cmd="$1" local os="$2" @@ -1415,9 +1376,6 @@ if [ "$OS" == "Red Hat" ]; then remove_existing_packages_for_fips_flavor "$sudo_cmd" "$OS" fi remove_existing_datadog_installer_package "$sudo_cmd" "$OS" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ]; then - remove_existing_datadog_agent_ddot_package "$sudo_cmd" "$OS" - fi # Complete package_sources_setup end_stage 0 "$(cat <<-END | tr -d '\n' @@ -1434,6 +1392,14 @@ END echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" fi + # When upgrading to 7.78+, DDOT is managed via OCI extension install. + # Remove the legacy datadog-agent-ddot RPM first to avoid strict version + # dependency conflict that prevent yum from upgrading datadog-agent. + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ] && rpm -q datadog-agent-ddot &>/dev/nul; then + echo -e " \033[33mRemoving legacy datadog-agent-ddot RPM package before upgrade...\n\033[0m" + $sudo_cmd yum -y remove datadog-agent-ddot + fi + # yum has a default retry of 10 https://github.com/Distrotech/yum/blob/f4e54aeed297158c563828aa3ebb93d0c8ce7e38/docs/yum.conf.5#L364-L366 $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then @@ -1585,9 +1551,6 @@ If the cause is unclear, please contact Datadog support. remove_existing_packages_for_fips_flavor "$sudo_cmd" "$OS" fi remove_existing_datadog_installer_package "$sudo_cmd" "$OS" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ]; then - remove_existing_datadog_agent_ddot_package "$sudo_cmd" "$OS" - fi if [ "$agent_flavor" == "datadog-agent" ]; then # Old version of the install scripts created a __pycache__ directory in the python-scripts directory @@ -1771,9 +1734,6 @@ elif [ "$OS" == "SUSE" ]; then remove_existing_packages_for_fips_flavor "$sudo_cmd" "$OS" fi remove_existing_datadog_installer_package "$sudo_cmd" "$OS" - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ]; then - remove_existing_datadog_agent_ddot_package "$sudo_cmd" "$OS" - fi # Complete package_sources_setup end_stage 0 "$(cat <<-END | tr -d '\n' From 7135fa3b9a4ee92a934bfdcc3cf3b12ce7838714 Mon Sep 17 00:00:00 2001 From: Stanislas167 Date: Fri, 3 Apr 2026 09:43:43 +0200 Subject: [PATCH 10/11] Apply suggestion from @swang392 Co-authored-by: Sarah Wang --- install_script.sh.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install_script.sh.template b/install_script.sh.template index 4ee2d9a4..7aeed79e 100644 --- a/install_script.sh.template +++ b/install_script.sh.template @@ -1395,7 +1395,7 @@ END # When upgrading to 7.78+, DDOT is managed via OCI extension install. # Remove the legacy datadog-agent-ddot RPM first to avoid strict version # dependency conflict that prevent yum from upgrading datadog-agent. - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ] && rpm -q datadog-agent-ddot &>/dev/nul; then + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ] && rpm -q datadog-agent-ddot &>/dev/null; then echo -e " \033[33mRemoving legacy datadog-agent-ddot RPM package before upgrade...\n\033[0m" $sudo_cmd yum -y remove datadog-agent-ddot fi From 35c60467feb7eeee8469cabd794bc85a246f2673 Mon Sep 17 00:00:00 2001 From: Stanislas Date: Fri, 10 Apr 2026 15:13:53 +0200 Subject: [PATCH 11/11] assume latest version if no minor set, remove legacy package for each os --- install_script.sh.template | 52 +++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/install_script.sh.template b/install_script.sh.template index 7aeed79e..092cec77 100644 --- a/install_script.sh.template +++ b/install_script.sh.template @@ -691,6 +691,38 @@ function remove_existing_datadog_installer_package() { return "$exit_status" } +function remove_existing_datadog_agent_ddot_package() { + local sudo_cmd="$1" + local os="$2" + + local exit_status=0 + if [ "$os" == "Debian" ]; then + $sudo_cmd apt list --installed "datadog-agent-ddot" 2>/dev/null | grep -q "datadog-agent-ddot" || exit_status=$? + elif [ "$os" == "Red Hat" ]; then + rpm -q datadog-agent-ddot || exit_status=$? + elif [ "$os" == "SUSE" ]; then + rpm -q datadog-agent-ddot || exit_status=$? + else + return 0 + fi + + if [ "$exit_status" -ne 0 ]; then + return 0 + fi + + echo -e "\033[33mRemoving legacy datadog-agent-ddot package before upgrade...\n\033[0m" + exit_status=0 + if [ "$os" == "Debian" ]; then + $sudo_cmd apt-get remove -y --force-yes "datadog-agent-ddot" || exit_status=$? + elif [ "$os" == "Red Hat" ]; then + $sudo_cmd yum -y remove "datadog-agent-ddot" || exit_status=$? + elif [ "$os" == "SUSE" ]; then + $sudo_cmd zypper --non-interactive --no-refresh remove "datadog-agent-ddot" || exit_status=$? + fi + + return "$exit_status" +} + function remove_existing_packages_for_fips_flavor() { local sudo_cmd="$1" local os="$2" @@ -1245,7 +1277,8 @@ if [ -n "$DD_OTELCOLLECTOR_ENABLED" ]; then # For version < 7.78, DDOT is not installed by the Agent post-install script ddot_installed_by_agent= # Starting from 7.78.0, DDOT is installed by the Agent post-install script => no need to install it manually after - if [ -n "$agent_minor_version_without_patch" ] && [ "${agent_minor_version_without_patch}" -ge 78 ]; then + # If the agent version is not set, we consider that this is the latest version, thus >= 78 + if [ -z "$agent_minor_version_without_patch" ] || [ "${agent_minor_version_without_patch}" -ge 78 ]; then ddot_installed_by_agent=true fi fi @@ -1376,6 +1409,9 @@ if [ "$OS" == "Red Hat" ]; then remove_existing_packages_for_fips_flavor "$sudo_cmd" "$OS" fi remove_existing_datadog_installer_package "$sudo_cmd" "$OS" + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ]; then + remove_existing_datadog_agent_ddot_package "$sudo_cmd" "$OS" + fi # Complete package_sources_setup end_stage 0 "$(cat <<-END | tr -d '\n' @@ -1392,14 +1428,6 @@ END echo -e " \033[33mInstalling package(s): ${packages[*]}\n\033[0m" fi - # When upgrading to 7.78+, DDOT is managed via OCI extension install. - # Remove the legacy datadog-agent-ddot RPM first to avoid strict version - # dependency conflict that prevent yum from upgrading datadog-agent. - if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ] && rpm -q datadog-agent-ddot &>/dev/null; then - echo -e " \033[33mRemoving legacy datadog-agent-ddot RPM package before upgrade...\n\033[0m" - $sudo_cmd yum -y remove datadog-agent-ddot - fi - # yum has a default retry of 10 https://github.com/Distrotech/yum/blob/f4e54aeed297158c563828aa3ebb93d0c8ce7e38/docs/yum.conf.5#L364-L366 $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} yum -y --disablerepo='*' --enablerepo='datadog' install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) || $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} yum -y install $dnf_flag ${packages[*]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then @@ -1551,6 +1579,9 @@ If the cause is unclear, please contact Datadog support. remove_existing_packages_for_fips_flavor "$sudo_cmd" "$OS" fi remove_existing_datadog_installer_package "$sudo_cmd" "$OS" + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ]; then + remove_existing_datadog_agent_ddot_package "$sudo_cmd" "$OS" + fi if [ "$agent_flavor" == "datadog-agent" ]; then # Old version of the install scripts created a __pycache__ directory in the python-scripts directory @@ -1734,6 +1765,9 @@ elif [ "$OS" == "SUSE" ]; then remove_existing_packages_for_fips_flavor "$sudo_cmd" "$OS" fi remove_existing_datadog_installer_package "$sudo_cmd" "$OS" + if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -n "$ddot_installed_by_agent" ]; then + remove_existing_datadog_agent_ddot_package "$sudo_cmd" "$OS" + fi # Complete package_sources_setup end_stage 0 "$(cat <<-END | tr -d '\n'