#!/bin/bash set -euo pipefail # # Helper functions # declare -i term_width=80 h1() { declare border padding text border='\e[1;34m'"$(printf '=%.0s' $(seq 1 "$term_width"))"'\e[0m' padding="$(printf ' %.0s' $(seq 1 $(((term_width - $(wc -m <<<"$*")) / 2))))" text="\\e[1m$*\\e[0m" echo -e "$border" echo -e "${padding}${text}${padding}" echo -e "$border" } h2() { printf '\e[1;33m==>\e[37;1m %s\e[0m\n' "$*" } etcd_version="${1:-v3.4.16}"; shift || true h1 "Install etcd" h2 "Version: ${etcd_version}" # install the binaries. url="https://github.com/etcd-io/etcd/releases/download/$etcd_version/etcd-$etcd_version-linux-amd64.tar.gz" filename="$(basename "$url")" wget -q "$url" rm -rf etcd && mkdir etcd tar xf "$filename" --strip-components 1 -C etcd install etcd/etcdctl /usr/local/bin rm -rf "$filename" etcd h2 "Configure envs to access etcd" cat >/etc/profile.d/etcdctl.sh <<'EOF' export ETCDCTL_CACERT=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt export ETCDCTL_CERT=/var/lib/rancher/rke2/server/tls/etcd/server-client.crt export ETCDCTL_KEY=/var/lib/rancher/rke2/server/tls/etcd/server-client.key EOF