From d58fc84a2ba018a9aa6f6b5ed5cb8d6e09727520 Mon Sep 17 00:00:00 2001 From: Carlos Bordon Date: Tue, 9 Dec 2025 18:08:41 -0300 Subject: [PATCH] Updated multi node deployment --- .../config/wazuh_dashboard_config.sh | 60 +++++++++---------- .../config/etc/cont-init.d/0-wazuh-init | 3 +- multi-node/config.yml | 25 ++++++++ multi-node/docker-compose.yml | 15 +++-- single-node/docker-compose.yml | 3 + 5 files changed, 69 insertions(+), 37 deletions(-) create mode 100644 multi-node/config.yml diff --git a/build-docker-images/wazuh-dashboard/config/wazuh_dashboard_config.sh b/build-docker-images/wazuh-dashboard/config/wazuh_dashboard_config.sh index bbaff92d..5e8b9067 100644 --- a/build-docker-images/wazuh-dashboard/config/wazuh_dashboard_config.sh +++ b/build-docker-images/wazuh-dashboard/config/wazuh_dashboard_config.sh @@ -47,36 +47,36 @@ DASHBOARD_CONFIG_FILE="${DASHBOARD_CONFIG_FILE:-/usr/share/wazuh-dashboard/confi # Map of configuration keys to their values declare -A CONFIG_MAP=( - [server.host]="$SERVER_HOST" - [server.port]="$SERVER_PORT" - [opensearch.hosts]="$OPENSEARCH_HOSTS" - [opensearch.ssl.verificationMode]="$OPENSEARCH_SSL_VERIFICATION_MODE" - [opensearch.username]="$OPENSEARCH_USERNAME" - [opensearch.password]="$OPENSEARCH_PASSWORD" - [opensearch.requestHeadersAllowlist]="$OPENSEARCH_REQUEST_HEADERS_ALLOWLIST" - [opensearch_security.multitenancy.enabled]="$OPENSEARCH_SECURITY_MULTITENANCY_ENABLED" - [opensearch_security.readonly_mode.roles]="$OPENSEARCH_SECURITY_READONLY_MODE_ROLES" - [server.ssl.enabled]="$SERVER_SSL_ENABLED" - [server.ssl.key]="\"$SERVER_SSL_KEY\"" - [server.ssl.certificate]="\"$SERVER_SSL_CERTIFICATE\"" - [opensearch.ssl.certificateAuthorities]="$OPENSEARCH_SSL_CERTIFICATE_AUTHORITIES" - [uiSettings.overrides.defaultRoute]="$UI_SETTINGS_OVERRIDES_DEFAULT_ROUTE" - [opensearch_security.cookie.ttl]="$OPENSEARCH_SECURITY_COOKIE_TTL" - [opensearch_security.session.ttl]="$OPENSEARCH_SECURITY_SESSION_TTL" - [opensearch_security.session.keepalive]="$OPENSEARCH_SECURITY_SESSION_KEEPALIVE" - [pattern]="$PATTERN" - [checks.pattern]="$CHECKS_PATTERN" - [checks.template]="$CHECKS_TEMPLATE" - [checks.api]="$CHECKS_API" - [checks.setup]="$CHECKS_SETUP" - [timeout]="$APP_TIMEOUT" - [api.selector]="$API_SELECTOR" - [ip.selector]="$IP_SELECTOR" - [ip.ignore]="$IP_IGNORE" - [wazuh.monitoring.enabled]="$WAZUH_MONITORING_ENABLED" - [wazuh.monitoring.frequency]="$WAZUH_MONITORING_FREQUENCY" - [wazuh.monitoring.shards]="$WAZUH_MONITORING_SHARDS" - [wazuh.monitoring.replicas]="$WAZUH_MONITORING_REPLICAS" + [server.host]="$SERVER_HOST" + [server.port]="$SERVER_PORT" + [opensearch.hosts]="$OPENSEARCH_HOSTS" + [opensearch.ssl.verificationMode]="$OPENSEARCH_SSL_VERIFICATION_MODE" + [opensearch.username]="$OPENSEARCH_USERNAME" + [opensearch.password]="$OPENSEARCH_PASSWORD" + [opensearch.requestHeadersAllowlist]="$OPENSEARCH_REQUEST_HEADERS_ALLOWLIST" + [opensearch_security.multitenancy.enabled]="$OPENSEARCH_SECURITY_MULTITENANCY_ENABLED" + [opensearch_security.readonly_mode.roles]="$OPENSEARCH_SECURITY_READONLY_MODE_ROLES" + [server.ssl.enabled]="$SERVER_SSL_ENABLED" + [server.ssl.key]="\"$SERVER_SSL_KEY\"" + [server.ssl.certificate]="\"$SERVER_SSL_CERTIFICATE\"" + [opensearch.ssl.certificateAuthorities]="$OPENSEARCH_SSL_CERTIFICATE_AUTHORITIES" + [uiSettings.overrides.defaultRoute]="$UI_SETTINGS_OVERRIDES_DEFAULT_ROUTE" + [opensearch_security.cookie.ttl]="$OPENSEARCH_SECURITY_COOKIE_TTL" + [opensearch_security.session.ttl]="$OPENSEARCH_SECURITY_SESSION_TTL" + [opensearch_security.session.keepalive]="$OPENSEARCH_SECURITY_SESSION_KEEPALIVE" + [pattern]="$PATTERN" + [checks.pattern]="$CHECKS_PATTERN" + [checks.template]="$CHECKS_TEMPLATE" + [checks.api]="$CHECKS_API" + [checks.setup]="$CHECKS_SETUP" + [timeout]="$APP_TIMEOUT" + [api.selector]="$API_SELECTOR" + [ip.selector]="$IP_SELECTOR" + [ip.ignore]="$IP_IGNORE" + [wazuh.monitoring.enabled]="$WAZUH_MONITORING_ENABLED" + [wazuh.monitoring.frequency]="$WAZUH_MONITORING_FREQUENCY" + [wazuh.monitoring.shards]="$WAZUH_MONITORING_SHARDS" + [wazuh.monitoring.replicas]="$WAZUH_MONITORING_REPLICAS" ) # Replace configuration values in the dashboard config file diff --git a/build-docker-images/wazuh-manager/config/etc/cont-init.d/0-wazuh-init b/build-docker-images/wazuh-manager/config/etc/cont-init.d/0-wazuh-init index 3b4a01ca..334283fa 100644 --- a/build-docker-images/wazuh-manager/config/etc/cont-init.d/0-wazuh-init +++ b/build-docker-images/wazuh-manager/config/etc/cont-init.d/0-wazuh-init @@ -188,7 +188,8 @@ if [[ -n "$WAZUH_INDEXER_HOSTS" ]]; then TMP_HOSTS=$(mktemp) { echo " " - for NODE in $WAZUH_INDEXER_HOSTS; do + IFS=',' read -ra NODES <<< "$WAZUH_INDEXER_HOSTS" + for NODE in "${NODES[@]}"; do IP="${NODE%:*}" PORT="${NODE#*:}" echo " https://$IP:$PORT" diff --git a/multi-node/config.yml b/multi-node/config.yml new file mode 100644 index 00000000..894882cf --- /dev/null +++ b/multi-node/config.yml @@ -0,0 +1,25 @@ +nodes: + # Wazuh indexer nodes + indexer: + - name: wazuh1.indexer + ip: wazuh1.indexer + - name: wazuh2.indexer + ip: wazuh2.indexer + - name: wazuh3.indexer + ip: wazuh3.indexer + + # Wazuh server nodes + # If there is more than one Wazuh server + # node, each one must have a node_type + server: + - name: wazuh.master + ip: wazuh.master + node_type: master + - name: wazuh.worker + ip: wazuh.worker + node_type: worker + + # Wazuh dashboard nodes + dashboard: + - name: wazuh.dashboard + ip: wazuh.dashboard diff --git a/multi-node/docker-compose.yml b/multi-node/docker-compose.yml index 969af678..2a05bec7 100644 --- a/multi-node/docker-compose.yml +++ b/multi-node/docker-compose.yml @@ -1,7 +1,7 @@ # Wazuh App Copyright (C) 2017, Wazuh Inc. (License GPLv2) services: wazuh.master: - image: wazuh/wazuh-manager:5.0.0 + image: 966237403726.dkr.ecr.us-west-1.amazonaws.com/wazuh/wazuh-manager:5.0.0 hostname: wazuh.master restart: always ulimits: @@ -37,7 +37,7 @@ services: - ./wazuh-certificates/wazuh.master.pem:/etc/ssl/wazuh.master.pem - ./wazuh-certificates/wazuh.master-key.pem:/etc/ssl/wazuh.master.key wazuh.worker: - image: wazuh/wazuh-manager:5.0.0 + image: 966237403726.dkr.ecr.us-west-1.amazonaws.com/wazuh/wazuh-manager:5.0.0 hostname: wazuh.worker restart: always ulimits: @@ -70,7 +70,7 @@ services: - ./wazuh-certificates/wazuh.worker-key.pem:/etc/wazuh/certs/wazuh.worker.key wazuh1.indexer: - image: wazuh/wazuh-indexer:5.0.0 + image: 966237403726.dkr.ecr.us-west-1.amazonaws.com/wazuh/wazuh-indexer:5.0.0 hostname: wazuh1.indexer restart: always ports: @@ -101,7 +101,7 @@ services: - ./wazuh-certificates/admin-key.pem:/usr/share/wazuh-indexer/config/certs/admin-key.pem wazuh2.indexer: - image: wazuh/wazuh-indexer:5.0.0 + image: 966237403726.dkr.ecr.us-west-1.amazonaws.com/wazuh/wazuh-indexer:5.0.0 hostname: wazuh2.indexer restart: always environment: @@ -128,7 +128,7 @@ services: - ./wazuh-certificates/wazuh2.indexer.pem:/usr/share/wazuh-indexer/config/certs/indexer.pem wazuh3.indexer: - image: wazuh/wazuh-indexer:5.0.0 + image: 966237403726.dkr.ecr.us-west-1.amazonaws.com/wazuh/wazuh-indexer:5.0.0 hostname: wazuh3.indexer restart: always environment: @@ -155,7 +155,7 @@ services: - ./wazuh-certificates/wazuh3.indexer.pem:/usr/share/wazuh-indexer/config/certs/indexer.pem wazuh.dashboard: - image: wazuh/wazuh-dashboard:5.0.0 + image: 966237403726.dkr.ecr.us-west-1.amazonaws.com/wazuh/wazuh-dashboard:5.0.0 hostname: wazuh.dashboard restart: always ports: @@ -171,6 +171,9 @@ services: - DASHBOARD_PASSWORD=kibanaserver - API_USERNAME=wazuh-wui - API_PASSWORD=MyS3cr37P450r.*- + - SERVER_SSL_CERTIFICATE=/usr/share/wazuh-dashboard/config/certs/wazuh-dashboard.pem + - SERVER_SSL_KEY=/usr/share/wazuh-dashboard/config/certs/wazuh-dashboard-key.pem + - OPENSEARCH_SSL_CERTIFICATE_AUTHORITIES=/usr/share/wazuh-dashboard/config/certs/root-ca.pem volumes: - ./wazuh-certificates/wazuh.dashboard.pem:/usr/share/wazuh-dashboard/config/certs/wazuh-dashboard.pem - ./wazuh-certificates/wazuh.dashboard-key.pem:/usr/share/wazuh-dashboard/config/certs/wazuh-dashboard-key.pem diff --git a/single-node/docker-compose.yml b/single-node/docker-compose.yml index 3857b15e..7a7afd33 100644 --- a/single-node/docker-compose.yml +++ b/single-node/docker-compose.yml @@ -83,6 +83,9 @@ services: - DASHBOARD_PASSWORD=kibanaserver - API_USERNAME=wazuh-wui - API_PASSWORD=MyS3cr37P450r.*- + - SERVER_SSL_CERTIFICATE=/usr/share/wazuh-dashboard/config/certs/dashboard.pem + - SERVER_SSL_KEY=/usr/share/wazuh-dashboard/config/certs/dashboard-key.pem + - OPENSEARCH_SSL_CERTIFICATE_AUTHORITIES=/usr/share/wazuh-dashboard/config/certs/root-ca.pem volumes: - ./wazuh-certificates/wazuh.dashboard.pem:/usr/share/wazuh-dashboard/config/certs/dashboard.pem - ./wazuh-certificates/wazuh.dashboard-key.pem:/usr/share/wazuh-dashboard/config/certs/dashboard-key.pem