#!/bin/sh # # Copyright (c) 2024 Netdata Inc. # SPDX-License-Identifier: GPL-3.0-or-later # # %%NEW_CLAIMING_METHOD%% set -e warning() { printf "WARNING: %s\n" "${1}" 1>&2 } error() { printf "ERROR: %s\n" "${1}" 1>&2 exit "${2}" } get_templated_value() { value="$1" default="$2" override="$3" if [ -n "${override}" ]; then echo "${override}" elif [ -z "${value}" ]; then error "Expected templated value not present" elif (echo "${value}" | grep -q '@'); then echo "${default}" else echo "${value}" fi } config_dir="$(get_templated_value "@configdir_POST@" "/etc/netdata" "${NETDATA_CLAIM_CONFIG_DIR}")" claim_config="${config_dir}/claim.conf" netdatacli="$(get_templated_value "@sbindir_POST@/netdatacli" "$(command -v netdatacli 2>/dev/null)" "${NETDATA_CLAIM_NETDATACLI_PATH}")" netdata_group="$(get_templated_value "@netdata_group_POST@" "netdata" "${NETDATA_CLAIM_CONFIG_GROUP}")" write_config() { config="[global]" config="${config}\n url = ${NETDATA_CLAIM_URL}" config="${config}\n token = ${NETDATA_CLAIM_TOKEN}" if [ -n "${NETDATA_CLAIM_ROOMS}" ]; then config="${config}\n rooms = ${NETDATA_CLAIM_ROOMS}" fi if [ -n "${NETDATA_CLAIM_PROXY}" ]; then config="${config}\n proxy = ${NETDATA_CLAIM_PROXY}" fi if [ -n "${NETDATA_CLAIM_INSECURE}" ]; then config="${config}\n insecure = ${NETDATA_CLAIM_INSECURE}" fi touch "${claim_config}.tmp" chmod 0660 "${claim_config}.tmp" chown "root:${netdata_group}" "${claim_config}.tmp" echo "${config}" > "${claim_config}.tmp" chmod 0640 "${claim_config}.tmp" mv -f "${claim_config}.tmp" "${claim_config}" } reload_claiming() { if [ -z "${NORELOAD}" ]; then "${netdatacli}" reload-claiming-state fi } parse_args() { while [ -n "${1}" ]; do case "${1}" in --claim-token) NETDATA_CLAIM_TOKEN="${2}"; shift 1 ;; -token=*) NETDATA_CLAIM_TOKEN="$(echo "${1}" | sed 's/^-token=//')" ;; --claim-rooms) NETDATA_CLAIM_ROOMS="${2}"; shift 1 ;; -rooms=*) NETDATA_CLAIM_ROOMS="$(echo "${1}" | sed 's/^-rooms=//')" ;; --claim-url) NETDATA_CLAIM_URL="${2}"; shift 1 ;; -url=*) NETDATA_CLAIM_URL="$(echo "${1}" | sed 's/^-url=//')" ;; --claim-proxy) NETDATA_CLAIM_PROXY="${2}"; shift 1 ;; -proxy=*) NETDATA_CLAIM_PROXY="$(echo "${1}" | sed 's/-proxy=//')" ;; -noproxy|--noproxy) NETDATA_CLAIM_PROXY="none" ;; -noreload|--noreload) NORELOAD=1 ;; -insecure|--insecure) NETDATA_CLAIM_INSECURE=yes ;; -verbose) true ;; -daemon-not-running) true ;; -id=*) warning "-id option is no longer supported. Remove the node ID file instead." ;; -hostname=*) warning "-hostname option is no longer supported. Update the main netdata configuration manually instead." ;; -user=*) warning "-user option is no longer supported." ;; *) warning "Ignoring unrecognized option ${1}";; esac shift 1 done if [ -z "${NETDATA_CLAIM_TOKEN}" ]; then error "Claim token must be specified" 1 fi if [ -z "${NETDATA_CLAIM_URL}" ]; then NETDATA_CLAIM_URL="https://app.netdata.cloud/" fi } [ -z "$EUID" ] && EUID="$(id -u)" if [ "${EUID}" != "0" ] && [ ! -w "${config_dir}" ]; then error "Script must be run by a user with write access to ${config_dir}." 32 fi warning "This script is deprecated and will be officially unsupported in the near future. Please either use the kickstart script with the appropriate '--claim-*' options, or directly write out the claiming configuration instead." parse_args "${@}" write_config reload_claiming