Skip to content

Update Cluster Config

Igor Duarte edited this page May 20, 2026 · 1 revision

Update configuration on a live ScyllaDB cluster.

Prerequisites

Overview

The ScyllaDB Ansible roles are idempotent, re-running a playbook after changing your variables will apply only the difference in configuration. This means you can update a setting by editing your vars file and re-running the relevant playbook; unchanged settings will not be touched.

However, the responsibility of determining what follow-up action (if any) is needed after a configuration change belongs to the operator. The roles will write the updated configuration to disk, but whether that is sufficient or whether additional steps are needed depends on the nature of the change. The operator should apply their own reasoning, and consult the relevant documentation to decide what comes next.

For example, when changing scylla.yaml values, the appropriate follow-up depends on the specific setting being modified. Refer to the ScyllaDB documentation to determine whether a setting is live-updateable (requiring a SIGHUP) or requires a rolling restart to take effect.

For monitoring configuration changes, the role will always completely restart monitoring, so any config change takes immediate effect once the playbook finishes.

General Procedure

  1. Update the relevant variable in your vars file (inside your cluster metadata directory).
  2. Re-run the appropriate playbook (see examples below).
  3. Determine and perform any follow-up action if required.

Examples

Updating compaction_static_shares in scylla.yaml

This is a live-updateable value. Update the vars file for the scylla group:

scylla_yaml_params:
  compaction_static_shares: 100

Run the nodes playbook:

ANSIBLE_ROLES_PATH=$PATH_TO_YOUR_CLONED_REPO ansible-playbook -i inventory.ini $PATH_TO_YOUR_CLONED_REPO/example-playbooks/scylla_deploy/nodes.yml

Then either send SIGHUP to ScyllaDB on all nodes:

ansible -i inventory.ini scylla -b -m shell -a "pkill -HUP -f scylla"

Or perform a rolling restart.


Enabling authentication

Enabling authentication requires a rolling restart since it changes non-live-updateable values in scylla.yaml. Be aware that once authentication is enforced, all clients will stop working until they are updated with credentials. See the ScyllaDB documentation on enabling authentication for full details.

If this downtime is not acceptable, you can use the transitional authenticator approach to enable authentication without downtime:

  1. First, set the authenticator and authorizer to transitional mode in the vars file for the scylla group via scylla_yaml_params:
scylla_yaml_params:
  authenticator: com.scylladb.auth.TransitionalAuthenticator
  authorizer: com.scylladb.auth.TransitionalAuthorizer
  1. Run the nodes playbook:
ANSIBLE_ROLES_PATH=$PATH_TO_YOUR_CLONED_REPO ansible-playbook -i inventory.ini $PATH_TO_YOUR_CLONED_REPO/example-playbooks/scylla_deploy/nodes.yml
  1. Perform a rolling restart.

  2. In this transitional state, clients can connect with or without authentication. Update all your clients to use credentials.

  3. Once all clients are updated, remove the explicit scylla_yaml_params overrides and set scylla_authentication:

scylla_authentication: true
  1. Run the nodes playbook again and perform another rolling restart to enforce full authentication.

Updating Scylla Manager Agent config

Update the vars file for the scylla group with the desired agent configuration:

scylla_manager_agent_config:
  s3:
    access_key_id: NEW_KEY
    secret_access_key: NEW_SECRET
    endpoint: https://s3.amazonaws.com

Run the nodes playbook:

ANSIBLE_ROLES_PATH=$PATH_TO_YOUR_CLONED_REPO ansible-playbook -i inventory.ini $PATH_TO_YOUR_CLONED_REPO/example-playbooks/scylla_deploy/nodes.yml

No further action needed, the role restarts the agent service automatically when the config changes.


Updating Scylla Monitoring retention

Update the vars file for the scylla-monitor group:

scylla_monitoring_retention: "30d"

Run the monitoring playbook:

ANSIBLE_ROLES_PATH=$PATH_TO_YOUR_CLONED_REPO ansible-playbook -i inventory.ini $PATH_TO_YOUR_CLONED_REPO/example-playbooks/scylla_deploy/monitoring.yml

No further action needed, the monitoring playbook handles the service restart.

Clone this wiki locally