#!/bin/bash # # Script for adding SMTP credentials in the OpenSearch keystore. Runs the # directives on every OpenSearch node as of the current docker-compose.yml set -euo pipefail if [[ ! -f ".env" ]]; then echo >&2 "[ERROR] The script needs to be executed from the project directory!" exit 1 fi read -p "Enter the name of your STMP sender: " smtp_sender_name # SMTP sender name must not be empty if [ -z "$smtp_sender_name" ]; then echo >&2 "[ERROR] STMP sender name can not be empty." exit 1 fi # import to node 1 docker compose exec os-node-1 ./bin/opensearch-keystore add "plugins.alerting.destination.email.${smtp_sender_name}.username" docker compose exec os-node-1 ./bin/opensearch-keystore add "plugins.alerting.destination.email.${smtp_sender_name}.password" echo "[INFO] Imported SMTP Credentials to OpenSearch node-1 keystore." # import to node 2 docker compose exec os-node-2 ./bin/opensearch-keystore add "plugins.alerting.destination.email.${smtp_sender_name}.username" docker compose exec os-node-2 ./bin/opensearch-keystore add "plugins.alerting.destination.email.${smtp_sender_name}.password" echo "[INFO] Imported SMTP Credentials to OpenSearch node-2 keystore." # get credentials from .env for authentication with OpenSearch username=$(grep -E "^OPENSEARCH_ADMIN_USERNAME=" .env | cut -d '=' -f 2- || echo "admin") password=$(grep -E "^OPENSEARCH_ADMIN_PASSWORD=" .env | cut -d '=' -f 2- || echo "admin") # reload settings for changes to take effect response=$(docker compose exec os-node-1 curl -s \ -u "${username}:${password}" \ -w "\n%{http_code}" \ -X POST https://localhost:9200/_nodes/reload_secure_settings \ --cacert /usr/share/opensearch/config/root-ca.pem) # separate response message and HTTP status code response_message=$(echo "$response" | sed '$d') http_status=$(echo "$response" | tail -n1) echo "[INFO] Response Message: $response_message" if [ "$http_status" -eq 200 ]; then echo "[INFO] Reloaded secure settings, STMP Credentials were added successfully." else echo >&2 "[ERROR] Request failed with HTTP status code: $http_status" exit 1 fi