From aafe17ff8aeb4ce893f94d2e6b292e3d4010eced Mon Sep 17 00:00:00 2001 From: Konstantin Date: Tue, 17 Feb 2026 00:09:51 +0100 Subject: [PATCH] feat: Add 2-node quorum support for RustFS cluster MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Configure RustFS erasure coding to allow cluster operation with 2 out of 3 nodes (EC:1 = 1 parity drive). Changes: - Add rustfs_storage_class_standard variable (default: EC:1) - Add RUSTFS_STORAGE_CLASS_STANDARD to cluster config template - Add config tag to config task for targeted updates Apply config changes with: ansible-playbook -i inventory/ plays/install-rustfs.yml --tags config 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- ansible/roles/rustfs/defaults/main.yml | 4 ++++ ansible/roles/rustfs/tasks/main.yml | 3 +++ ansible/roles/rustfs/templates/rustfs.cluster.j2 | 2 ++ 3 files changed, 9 insertions(+) diff --git a/ansible/roles/rustfs/defaults/main.yml b/ansible/roles/rustfs/defaults/main.yml index fa180b34..0cd98e44 100644 --- a/ansible/roles/rustfs/defaults/main.yml +++ b/ansible/roles/rustfs/defaults/main.yml @@ -16,3 +16,7 @@ rustfs_secret_key: "rustfsadmin" rustfs_console_enable: true rustfs_obs_logger_level: "error" +# Erasure coding - EC:1 allows 2-node quorum (1 parity drive) +# With 3 nodes, this means the cluster can operate with 2 nodes up +rustfs_storage_class_standard: "EC:1" + diff --git a/ansible/roles/rustfs/tasks/main.yml b/ansible/roles/rustfs/tasks/main.yml index 2385067f..775e9856 100644 --- a/ansible/roles/rustfs/tasks/main.yml +++ b/ansible/roles/rustfs/tasks/main.yml @@ -80,6 +80,9 @@ src: rustfs.cluster.j2 dest: "{{ rustfs_config_file }}" notify: Restart rustfs + tags: + - config + - rustfs-config - name: Create RustFS systemd service template: diff --git a/ansible/roles/rustfs/templates/rustfs.cluster.j2 b/ansible/roles/rustfs/templates/rustfs.cluster.j2 index 67d8d815..9087134e 100644 --- a/ansible/roles/rustfs/templates/rustfs.cluster.j2 +++ b/ansible/roles/rustfs/templates/rustfs.cluster.j2 @@ -7,3 +7,5 @@ RUSTFS_CONSOLE_ADDRESS=":{{ rustfs_console_port }}" RUSTFS_CONSOLE_ENABLE={{ rustfs_console_enable | lower }} RUSTFS_OBS_LOGGER_LEVEL={{ rustfs_obs_logger_level }} RUSTFS_OBS_LOG_DIRECTORY="{{ rustfs_log_dir }}/" +# Erasure coding for 2-node quorum support +RUSTFS_STORAGE_CLASS_STANDARD="{{ rustfs_storage_class_standard }}"