#!/bin/bash if (( EUID != 0 )); then echo "Run as root please." 1>&2 exit 100 fi if [[ -z "$1" ]]; then echo "Pass me the user. Example config.sh vincent 3.quickbrownfoxes.org glc_1234" 1>&2 exit 100 fi if [[ -z "$2" ]]; then echo "Pass me a hostname. Example config.sh vincent 3.quickbrownfoxes.org glc_1234" 1>&2 exit 100 fi if [[ -z "$3" ]]; then echo "Pass me a grafana secret. Example config.sh vincent 3.quickbrownfoxes.org glc_1234" 1>&2 exit 100 fi adduser "$1" && usermod -aG sudo "$1" && apt update && apt upgrade && apt-get -y install curl htop landscape-common update-notifier-common rsync vnstat ssl-cert; make-ssl-cert generate-default-snakeoil && curl -s https://config.quickbrownfoxes.org/sshd_config > /etc/ssh/sshd_config && systemctl reload sshd && mkdir -p /home/"$1"/.ssh/ && curl -s https://config.quickbrownfoxes.org/ssh > /home/"$1"/.ssh/authorized_keys && chown -R "$1":"$1" /home/"$1"/.ssh && chmod 700 /home/"$1"/.ssh && hostnamectl set-hostname "$2" && passwd -l root && echo "Setting up alloy grafana metrics" && GCLOUD_HOSTED_METRICS_URL="https://prometheus-prod-36-prod-us-west-0.grafana.net/api/prom/push" GCLOUD_HOSTED_METRICS_ID="2003590" GCLOUD_SCRAPE_INTERVAL="60s" GCLOUD_HOSTED_LOGS_URL="https://logs-prod-021.grafana.net/loki/api/v1/push" GCLOUD_HOSTED_LOGS_ID="1100050" GCLOUD_RW_API_KEY="$3" /bin/sh -c "$(curl -fsSL https://storage.googleapis.com/cloud-onboarding/alloy/scripts/install-linux.sh)" && echo "alloy node exporter" && sed -i '1i\prometheus.exporter.unix "local_system" { }\n\nprometheus.scrape "system_metrics" {\n targets = prometheus.exporter.unix.local_system.targets\n forward_to = [prometheus.remote_write.metrics_service.receiver]\n scrape_interval = "10s"\n}' /etc/alloy/config.alloy && echo "alloy docker logs to loki" && sed -i '1i\ discovery.docker "logs_integrations_docker" {\ host = "unix:///var/run/docker.sock"\ refresh_interval = "5s"\ }\ \ discovery.relabel "logs_integrations_docker" {\ targets = []\ \ rule {\ target_label = "job"\ replacement = "integrations/docker"\ }\ \ rule {\ target_label = "instance"\ replacement = constants.hostname\ }\ \ rule {\ source_labels = ["__meta_docker_container_name"]\ regex = "/(.*)" \ target_label = "container"\ }\ \ rule {\ source_labels = ["__meta_docker_container_log_stream"]\ target_label = "stream"\ }\ }\ \ loki.source.docker "logs_integrations_docker" {\ host = "unix:///var/run/docker.sock"\ targets = discovery.docker.logs_integrations_docker.targets\ forward_to = [loki.write.grafana_cloud_loki.receiver]\ relabel_rules = discovery.relabel.logs_integrations_docker.rules\ refresh_interval = "60s"\ }' /etc/alloy/config.alloy && usermod -aG docker alloy && systemctl restart alloy