Just run the following command in your Terminal to install the Agent:
curl -sSL https://gist.githubusercontent.com/shripadk/9d8db539e3d030579b81763549bb1a20/raw/d12a8ac8bd2941f8d02bc28a6ed5a90c22ef1433/install.sh | sudo bash| #!/bin/bash | |
| # | |
| # This script is meant for quick & easy install via: | |
| # curl -sSL https://repos.insights.digitalocean.com/install.sh | sudo bash | |
| # or: | |
| # wget -qO- https://repos.insights.digitalocean.com/install.sh | sudo bash | |
| # | |
| # To use the BETA branch of do-agent pass the BETA=1 flag to the script | |
| # curl -sSL https://repos.insights.digitalocean.com/install.sh | sudo BETA=1 bash | |
| # | |
| # vim: noexpandtab | |
| set -ueo pipefail | |
| UNSTABLE=${UNSTABLE:-0} | |
| BETA=${BETA:-0} | |
| REPO_HOST=https://repos.insights.digitalocean.com | |
| REPO_GPG_KEY=${REPO_HOST}/sonar-agent.asc | |
| repo="do-agent" | |
| [ "${UNSTABLE}" != 0 ] && repo="do-agent-unstable" | |
| [ "${BETA}" != 0 ] && repo="do-agent-beta" | |
| dist="unknown" | |
| deb_list=/etc/apt/sources.list.d/digitalocean-agent.list | |
| deb_keyfile=/usr/share/keyrings/digitalocean-agent-keyring.gpg | |
| rpm_repo=/etc/yum.repos.d/digitalocean-agent.repo | |
| function main() { | |
| [ "$(id -u)" != "0" ] && \ | |
| abort "This script must be executed as root." | |
| clean | |
| check_do | |
| check_dist | |
| case "${dist}" in | |
| debian|ubuntu) | |
| install_apt | |
| ;; | |
| centos|cloudlinux|fedora|almalinux|rocky|ol) | |
| install_rpm | |
| ;; | |
| *) | |
| not_supported | |
| ;; | |
| esac | |
| } | |
| function wait_for_apt() { | |
| while fuser /var/{lib/{dpkg,apt/lists},cache/apt/archives}/lock >/dev/null 2>&1; do | |
| echo "Waiting on apt.." | |
| sleep 2 | |
| done | |
| } | |
| function install_apt() { | |
| export DEBIAN_FRONTEND=noninteractive | |
| # forcefully remove any existing installations | |
| wait_for_apt && ( apt-get purge -y do-agent >/dev/null 2>&1 || : ) | |
| echo "Installing apt repository..." | |
| wait_for_apt && ( apt-get -qq update || true ) | |
| wait_for_apt && apt-get -qq install -y ca-certificates gnupg2 apt-utils apt-transport-https curl | |
| echo "deb [signed-by=${deb_keyfile}] ${REPO_HOST}/apt/${repo} main main" >"${deb_list}" | |
| echo -n "Installing gpg key..." | |
| curl -sL "${REPO_GPG_KEY}" | gpg --dearmor >"${deb_keyfile}" | |
| wait_for_apt && apt-get -qq update -o Dir::Etc::SourceParts=/dev/null -o APT::Get::List-Cleanup=no -o Dir::Etc::SourceList="sources.list.d/digitalocean-agent.list" | |
| wait_for_apt && apt-get -qq install -y do-agent | |
| } | |
| function install_rpm() { | |
| echo "Installing yum repository..." | |
| # forcefully remove any existing installations | |
| yum remove -y do-agent || : | |
| yum install -y gpgme ca-certificates | |
| cat <<-EOF > /etc/yum.repos.d/digitalocean-agent.repo | |
| [digitalocean-agent] | |
| name=DigitalOcean Agent | |
| baseurl=${REPO_HOST}/yum/${repo}/\$basearch | |
| repo_gpgcheck=0 | |
| gpgcheck=1 | |
| enabled=1 | |
| gpgkey=${REPO_GPG_KEY} | |
| sslverify=0 | |
| sslcacert=/etc/pki/tls/certs/ca-bundle.crt | |
| metadata_expire=300 | |
| EOF | |
| yum --disablerepo="*" --enablerepo="digitalocean-agent" makecache | |
| yum install -y do-agent | |
| } | |
| function clean() { | |
| echo -n "Cleaning up old sources..." | |
| if [ -f "$deb_list" ]; then | |
| rm -f "${deb_list}" | |
| elif [ -f "$rpm_repo" ]; then | |
| rm -f "${rpm_repo}" | |
| fi | |
| echo "OK" | |
| } | |
| function check_dist() { | |
| echo -n "Verifying compatibility with script..." | |
| if [ -f /etc/os-release ]; then | |
| dist=$(awk -F= '$1 == "ID" {gsub("\"", ""); print$2}' /etc/os-release) | |
| elif [ -f /etc/redhat-release ]; then | |
| dist=$(awk '{print tolower($1)}' /etc/redhat-release) | |
| else | |
| not_supported | |
| fi | |
| dist=$(echo "${dist}" | tr '[:upper:]' '[:lower:]') | |
| case "${dist}" in | |
| debian|ubuntu|centos|fedora|rocky|ol) | |
| echo "OK" | |
| ;; | |
| cloudlinux|almalinux) | |
| echo "WARN ${dist} is not officially supported. Attempting RPM install" | |
| ;; | |
| *) | |
| not_supported | |
| ;; | |
| esac | |
| } | |
| function check_do() { | |
| echo -n "Verifying machine compatibility..." | |
| # DigitalOcean embedded platform information in the DMI data. | |
| read -r sys_vendor < /sys/devices/virtual/dmi/id/bios_vendor | |
| if ! [ "$sys_vendor" = "DigitalOcean" ]; then | |
| cat <<-EOF | |
| The DigitalOcean Agent is only supported on DigitalOcean machines. | |
| If you are seeing this message on an older droplet, you may need to power-off | |
| and then power-on at http://cloud.digitalocean.com. After power-cycling, | |
| please re-run this script. | |
| EOF | |
| exit 1 | |
| fi | |
| echo "OK" | |
| } | |
| function not_supported() { | |
| cat <<-EOF | |
| This script does not support the OS/Distribution on this machine. | |
| If you feel that this is an error contact [email protected] | |
| or create an issue at https://github.com/digitalocean/do-agent/issues/new. | |
| EOF | |
| exit 1 | |
| } | |
| # abort with an error message | |
| function abort() { | |
| read -r line func file <<< "$(caller 0)" | |
| echo "ERROR in $file:$func:$line: $1" > /dev/stderr | |
| exit 1 | |
| } | |
| # leave this last to prevent any partial execution | |
| main |