ssulav opened a new pull request, #9247: URL: https://github.com/apache/ozone/pull/9247
## What changes were proposed in this pull request? HDDS-13870: Bare Metal Ozone Installer with support for multiple node deployment. Please describe your PR in detail: Single node support HA mode support Service User creation Passwordless SSH JAVA 17/21 Configure Installation ## What is the link to the Apache JIRA [HDDS-13870 ](https://issues.apache.org/jira/browse/HDDS-13870) (Please replace this section with the link to the Apache JIRA) ## How was this patch tested? Deployed redhat8 9 node cluster and tested the installation. ``` ./apache-ozone-installer.sh -H host-1.domain,host-2.domain,host-3.domain,host-4.domain,host-5.domain,host-6.domain,host-7.domain,host-8.domain,host-9.domain -p cloudera -i /opt/ozone -d /data/ozone -v 2.0.0 -x -J 17 -C /Users/ssulav/Work/github/ssulav/ozone/tools/installer/configs/unsecure/ha -u ozone-om ------------------------------------------- Apache Ozone Upstream Installer ------------------------------------------- ------------------------------------------- Started at | 2025-11-04T16:26:39Z -------------------+------------------- Property | Value -------------------+------------------- Ozone version | 2.0.0 Install directory | /opt/ozone Data directory | /data/ozone JDK version | 17 Deployment Mode | ha Service User | ozone-om -------------------+------------------- Config directory | configs/unsecure/ha Host Map file | host-map.yml -------------------+------------------- Configuring passwordless SSH to all nodes (parallel)... Setting up passwordless SSH to [email protected]:22... Setting up passwordless SSH to [email protected]:22... Setting up passwordless SSH to [email protected]:22... Setting up passwordless SSH to [email protected]:22... Setting up passwordless SSH to [email protected]:22... Setting up passwordless SSH to [email protected]:22... Setting up passwordless SSH to [email protected]:22... Setting up passwordless SSH to [email protected]:22... Setting up passwordless SSH to [email protected]:22... Passwordless SSH is configured. Testing... Passwordless SSH is configured. Testing... Passwordless SSH is configured. Testing... Passwordless SSH is configured. Testing... Passwordless SSH is configured. Testing... Passwordless SSH is configured. Testing... Passwordless SSH is configured. Testing... Passwordless SSH is configured. Testing... Passwordless SSH is configured. Testing... Generating runtime SSH keypair for cluster and deploying to all nodes... ozone_cluster_id_ed25519 100% 411 1.2KB/s 00:00 ozone_cluster_id_ed25519 100% 411 1.2KB/s 00:00 ozone_cluster_id_ed25519 100% 411 1.2KB/s 00:00 ozone_cluster_id_ed25519 100% 411 1.2KB/s 00:00 ozone_cluster_id_ed25519 100% 411 1.2KB/s 00:00 ozone_cluster_id_ed25519 100% 411 1.2KB/s 00:00 ozone_cluster_id_ed25519 100% 411 1.2KB/s 00:00 ozone_cluster_id_ed25519 100% 411 1.2KB/s 00:00 ozone_cluster_id_ed25519.pub 100% 101 0.3KB/s 00:00 ozone_cluster_id_ed25519.pub 100% 101 0.3KB/s 00:00 ozone_cluster_id_ed25519.pub 100% 101 0.3KB/s 00:00 ozone_cluster_id_ed25519.pub 100% 101 0.3KB/s 00:00 ozone_cluster_id_ed25519.pub 100% 101 0.3KB/s 00:00 ozone_cluster_id_ed25519.pub 100% 101 0.3KB/s 00:00 ozone_cluster_id_ed25519.pub 100% 101 0.3KB/s 00:00 ozone_cluster_id_ed25519.pub 100% 101 0.3KB/s 00:00 ozone_cluster_id_ed25519.pub 100% 101 0.3KB/s 00:00 [host-1.domain] Cleaning install and data dirs... [host-2.domain] Cleaning install and data dirs... [host-3.domain] Cleaning install and data dirs... [host-4.domain] Cleaning install and data dirs... [host-5.domain] Cleaning install and data dirs... [host-6.domain] Cleaning install and data dirs... [host-7.domain] Cleaning install and data dirs... [host-8.domain] Cleaning install and data dirs... [host-9.domain] Cleaning install and data dirs... Cleaning install base: /opt/ozone and data base: /data/ozone... Cleaning install base: /opt/ozone and data base: /data/ozone... Cleaning install base: /opt/ozone and data base: /data/ozone... Cleaning install base: /opt/ozone and data base: /data/ozone... Cleaning install base: /opt/ozone and data base: /data/ozone... Cleaning install base: /opt/ozone and data base: /data/ozone... Cleaning install base: /opt/ozone and data base: /data/ozone... Cleaning install base: /opt/ozone and data base: /data/ozone... Cleaning install base: /opt/ozone and data base: /data/ozone... Stopping Ozone processes (if any)... Stopping Ozone processes (if any)... Stopping Ozone processes (if any)... [host-4.domain] Creating service user ozone-om... Stopping Ozone processes (if any)... Stopping Ozone processes (if any)... Stopping Ozone processes (if any)... [host-7.domain] Creating service user ozone-om... [host-6.domain] Creating service user ozone-om... [host-5.domain] Creating service user ozone-om... [host-9.domain] Creating service user ozone-om... [host-2.domain] Creating service user ozone-om... Stopping Ozone processes (if any)... Stopping Ozone processes (if any)... Stopping Ozone processes (if any)... [host-3.domain] Creating service user ozone-om... [host-8.domain] Creating service user ozone-om... [host-1.domain] Creating service user ozone-om... Service user ozone-om already exists [host-4.domain] Installing JDK 17 (if needed)... Creating service user: ozone-om... Service user ozone-om already exists [host-5.domain] Installing JDK 17 (if needed)... Creating service user: ozone-om... Creating service user: ozone-om... Creating service user: ozone-om... Service user ozone-om created successfully [host-9.domain] Installing JDK 17 (if needed)... Service user ozone-om created successfully Service user ozone-om created successfully [host-7.domain] Installing JDK 17 (if needed)... [host-2.domain] Installing JDK 17 (if needed)... Service user ozone-om created successfully [host-6.domain] Installing JDK 17 (if needed)... Service user ozone-om already exists [host-3.domain] Installing JDK 17 (if needed)... Creating service user: ozone-om... Service user ozone-om created successfully [host-8.domain] Installing JDK 17 (if needed)... Service user ozone-om already exists [host-1.domain] Installing JDK 17 (if needed)... Whether to install Java: no, Current Default Java version: 17 [host-4.domain] Setting JAVA_HOME... Whether to install Java: no, Current Default Java version: 17 [host-9.domain] Setting JAVA_HOME... Whether to install Java: no, Current Default Java version: 17 [host-5.domain] Setting JAVA_HOME... Whether to install Java: no, Current Default Java version: 17 [host-2.domain] Setting JAVA_HOME... Whether to install Java: no, Current Default Java version: 17 [host-7.domain] Setting JAVA_HOME... Whether to install Java: no, Current Default Java version: 17 [host-6.domain] Setting JAVA_HOME... Whether to install Java: no, Current Default Java version: 17 [host-3.domain] Setting JAVA_HOME... Whether to install Java: no, Current Default Java version: 17 [host-8.domain] Setting JAVA_HOME... Whether to install Java: no, Current Default Java version: 17 [host-1.domain] Setting JAVA_HOME... Whether to update JAVA_HOME: no [host-4.domain] Preparing directories... Whether to update JAVA_HOME: yes JAVA_HOME_DIR: /usr/lib/jvm/java-17-openjdk [host-9.domain] Preparing directories... Whether to update JAVA_HOME: yes JAVA_HOME_DIR: /usr/lib/jvm/java-17-openjdk [host-2.domain] Preparing directories... Whether to update JAVA_HOME: yes JAVA_HOME_DIR: /usr/lib/jvm/java-17-openjdk Whether to update JAVA_HOME: yes [host-7.domain] Preparing directories... JAVA_HOME_DIR: /usr/lib/jvm/java-17-openjdk [host-6.domain] Preparing directories... Whether to update JAVA_HOME: yes Whether to update JAVA_HOME: no [host-5.domain] Preparing directories... JAVA_HOME_DIR: /usr/lib/jvm/java-17-openjdk [host-8.domain] Preparing directories... Whether to update JAVA_HOME: no [host-3.domain] Preparing directories... Whether to update JAVA_HOME: no [host-1.domain] Preparing directories... [host-4.domain] Downloading Ozone 2.0.0... [host-9.domain] Downloading Ozone 2.0.0... [host-7.domain] Downloading Ozone 2.0.0... [host-2.domain] Downloading Ozone 2.0.0... [host-6.domain] Downloading Ozone 2.0.0... [host-5.domain] Downloading Ozone 2.0.0... [host-8.domain] Downloading Ozone 2.0.0... [host-3.domain] Downloading Ozone 2.0.0... [host-1.domain] Downloading Ozone 2.0.0... Running curl to download <</opt/ozone/ozone-2.0.0.tar.gz>> from <<https://dlcdn.apache.org/ozone/2.0.0/ozone-2.0.0.tar.gz>>... Running curl to download <</opt/ozone/ozone-2.0.0.tar.gz>> from <<https://dlcdn.apache.org/ozone/2.0.0/ozone-2.0.0.tar.gz>>... Running curl to download <</opt/ozone/ozone-2.0.0.tar.gz>> from <<https://dlcdn.apache.org/ozone/2.0.0/ozone-2.0.0.tar.gz>>... Running curl to download <</opt/ozone/ozone-2.0.0.tar.gz>> from <<https://dlcdn.apache.org/ozone/2.0.0/ozone-2.0.0.tar.gz>>... Running curl to download <</opt/ozone/ozone-2.0.0.tar.gz>> from <<https://dlcdn.apache.org/ozone/2.0.0/ozone-2.0.0.tar.gz>>... Running curl to download <</opt/ozone/ozone-2.0.0.tar.gz>> from <<https://dlcdn.apache.org/ozone/2.0.0/ozone-2.0.0.tar.gz>>... Running curl to download <</opt/ozone/ozone-2.0.0.tar.gz>> from <<https://dlcdn.apache.org/ozone/2.0.0/ozone-2.0.0.tar.gz>>... Running curl to download <</opt/ozone/ozone-2.0.0.tar.gz>> from <<https://dlcdn.apache.org/ozone/2.0.0/ozone-2.0.0.tar.gz>>... Running curl to download <</opt/ozone/ozone-2.0.0.tar.gz>> from <<https://dlcdn.apache.org/ozone/2.0.0/ozone-2.0.0.tar.gz>>... Downloaded <</opt/ozone/ozone-2.0.0.tar.gz>> Downloaded <</opt/ozone/ozone-2.0.0.tar.gz>> Downloaded <</opt/ozone/ozone-2.0.0.tar.gz>> Downloaded <</opt/ozone/ozone-2.0.0.tar.gz>> Downloaded <</opt/ozone/ozone-2.0.0.tar.gz>> Downloaded <</opt/ozone/ozone-2.0.0.tar.gz>> Downloaded <</opt/ozone/ozone-2.0.0.tar.gz>> Downloaded <</opt/ozone/ozone-2.0.0.tar.gz>> Downloaded <</opt/ozone/ozone-2.0.0.tar.gz>> Extracted to <</opt/ozone/ozone-2.0.0>> Linked <</opt/ozone/current>> to <</opt/ozone/ozone-2.0.0>> Chowning <</opt/ozone>> to <<ozone-om>>... [host-2.domain] Setting environment... Extracted to <</opt/ozone/ozone-2.0.0>> Linked <</opt/ozone/current>> to <</opt/ozone/ozone-2.0.0>> Chowning <</opt/ozone>> to <<ozone-om>>... [host-7.domain] Setting environment... Extracted to <</opt/ozone/ozone-2.0.0>> Extracted to <</opt/ozone/ozone-2.0.0>> Extracted to <</opt/ozone/ozone-2.0.0>> Linked <</opt/ozone/current>> to <</opt/ozone/ozone-2.0.0>> Chowning <</opt/ozone>> to <<ozone-om>>... [host-5.domain] Setting environment... Linked <</opt/ozone/current>> to <</opt/ozone/ozone-2.0.0>> Chowning <</opt/ozone>> to <<ozone-om>>... [host-4.domain] Setting environment... Extracted to <</opt/ozone/ozone-2.0.0>> Linked <</opt/ozone/current>> to <</opt/ozone/ozone-2.0.0>> Chowning <</opt/ozone>> to <<ozone-om>>... [host-8.domain] Setting environment... Linked <</opt/ozone/current>> to <</opt/ozone/ozone-2.0.0>> Chowning <</opt/ozone>> to <<ozone-om>>... [host-6.domain] Setting environment... Extracted to <</opt/ozone/ozone-2.0.0>> Linked <</opt/ozone/current>> to <</opt/ozone/ozone-2.0.0>> Chowning <</opt/ozone>> to <<ozone-om>>... [host-9.domain] Setting environment... Extracted to <</opt/ozone/ozone-2.0.0>> Linked <</opt/ozone/current>> to <</opt/ozone/ozone-2.0.0>> Chowning <</opt/ozone>> to <<ozone-om>>... [host-3.domain] Setting environment... Extracted to <</opt/ozone/ozone-2.0.0>> Linked <</opt/ozone/current>> to <</opt/ozone/ozone-2.0.0>> Chowning <</opt/ozone>> to <<ozone-om>>... [host-1.domain] Setting environment... [host-2.domain] Generating HA configs... [host-7.domain] Generating HA configs... [host-5.domain] Generating HA configs... [host-4.domain] Generating HA configs... [host-8.domain] Generating HA configs... [host-6.domain] Generating HA configs... [host-9.domain] Generating HA configs... [host-3.domain] Generating HA configs... [host-1.domain] Generating HA configs... core-site.xml 100% 209 0.6KB/s 00:00 ozone-site.xml 100% 2341 6.5KB/s 00:00 ozone-env.sh 100% 68 0.2KB/s 00:00 ozone-env.sh 100% 68 0.2KB/s 00:00 ozone-site.xml 100% 2341 6.7KB/s 00:00 core-site.xml 100% 209 0.6KB/s 00:00 ozone-site.xml 100% 2341 6.8KB/s 00:00 core-site.xml 100% 209 0.6KB/s 00:00 ozone-env.sh 100% 68 0.2KB/s 00:00 ozone-site.xml 100% 2341 6.8KB/s 00:00 ozone-site.xml 100% 2341 6.8KB/s 00:00 core-site.xml 100% 209 0.6KB/s 00:00 ozone-env.sh 100% 68 0.2KB/s 00:00 core-site.xml 100% 209 0.6KB/s 00:00 core-site.xml 100% 209 0.6KB/s 00:00 ozone-site.xml 100% 2341 6.8KB/s 00:00 ozone-site.xml 100% 2341 6.8KB/s 00:00 ozone-env.sh 100% 68 0.2KB/s 00:00 ozone-site.xml 100% 2341 6.8KB/s 00:00 core-site.xml 100% 209 0.6KB/s 00:00 ozone-env.sh 100% 68 0.2KB/s 00:00 ozone-env.sh 100% 68 0.2KB/s 00:00 ozone-site.xml 100% 2341 6.9KB/s 00:00 Initializing and starting Ozone (HA) across nodes... Initializing SCM on <<host-1.domain>> Starting SCM on <<host-1.domain>> Bootstrapping SCM on <<host-2.domain>> Bootstrapping SCM on <<host-3.domain>> Starting SCM on <<host-2.domain>> Starting SCM on <<host-3.domain>> Initializing OM on <<host-1.domain>> Starting OM on <<host-1.domain>> Bootstrapping OM on <<host-3.domain>> Bootstrapping OM on <<host-2.domain>> Starting OM on <<host-2.domain>> Starting OM on <<host-3.domain>> Starting Datanode on <<host-4.domain>> Starting Datanode on <<host-2.domain>> Starting Datanode on <<host-3.domain>> Starting Datanode on <<host-9.domain>> Starting Datanode on <<host-7.domain>> Starting Datanode on <<host-1.domain>> Starting Datanode on <<host-5.domain>> Starting Datanode on <<host-8.domain>> Starting Datanode on <<host-6.domain>> ------------------------------------------- Running sample test from <<host-1.domain>>... Waiting 15s for services to settle... Verifying safemode status... SCM is out of safe mode. Creating temporary file: <</home/ozone-om/ozone_smoke_20251104215937.txt>> Smoke test: created demovol/demobuck and uploaded demokey. ------------------------------------------- Done (HA mode - configs & binaries distributed to all nodes). Initialization and start (manual steps, follow HA docs) if you didn't use --start: - SCM HA: initialize first SCM, then bootstrap others, then start SCMs - OM HA: initialize first OM service, then join others, then start OMs - Finally start datanodes (or use start-ozone.sh after HA init) Configs generated per node: /opt/ozone/current/etc/hadoop/ozone-site.xml (HA settings) /opt/ozone/current/etc/hadoop/core-site.xml (fs.defaultFS=ofs://omservice) /opt/ozone/current/etc/hadoop/ozone-env.sh (Ozone environment variables) /opt/ozone/current/etc/hadoop/ozone-hosts.yaml (roles) /opt/ozone/current/etc/hadoop/workers (datanodes list) ------------------------------------------- Completed at: 2025-11-04T16:29:37Z Total execution time: 02:58 >> 178 seconds ------------------------------------------- ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
