Skip to content

Commit 254dc7f

Browse files
Configure Cassandra Sidecar (#308)
* Configure Cassandra Sidecar with proper directory structure and JVM flags - Add sidecar configuration constants to Constants.kt - Extract sidecar config resource during init for user customization - Update packer provisioning to create /etc/cassandra-sidecar/ directory - Create /mnt/cassandra/import staging directory with proper ownership - Add JVM flag to systemd service: -Dsidecar.config=file:///etc/cassandra-sidecar/cassandra-sidecar.yaml - Remove packer config file (config deployed via update-config command) - Add cassandra-sidecar.yaml resource for local template Configuration follows project pattern: - Packer creates directory structure during AMI build - Init extracts local template for user editing - Users run update-config to deploy changes to remote nodes Addresses #303 * Remove empty config directory provisioner from packer The config directory is no longer needed since cassandra-sidecar.yaml is now deployed via update-config command rather than baked into the AMI. * Add update-config to end-to-end test Test the update-config workflow which deploys configurations including cassandra-sidecar.yaml to remote nodes. * Add list command to end-to-end test Verify that Cassandra versions are available before selecting one. * Add restart command to end-to-end test Verify that Cassandra and sidecar can be restarted successfully.
1 parent fb6e4bd commit 254dc7f

File tree

6 files changed

+25
-8
lines changed

6 files changed

+25
-8
lines changed

bin/end-to-end-test

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,21 @@ echo "=== Building project ==="
88
echo "=== Initializing cluster ==="
99
bin/easy-cass-lab init -c 2 -i t3a.xlarge test --clean --up
1010

11+
echo "=== Updating configuration ==="
12+
bin/easy-cass-lab update-config
13+
14+
echo "=== Listing available Cassandra versions ==="
15+
bin/easy-cass-lab list
16+
1117
echo "=== Setting Cassandra version to 5.0 ==="
1218
bin/easy-cass-lab use 5.0
1319

1420
echo "=== Starting Cassandra ==="
1521
bin/easy-cass-lab start
1622

23+
echo "=== Restarting Cassandra ==="
24+
bin/easy-cass-lab restart
25+
1726
echo "=== Tearing down cluster ==="
1827
bin/easy-cass-lab down --yes
1928

packer/cassandra/cassandra.pkr.hcl

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,6 @@ build {
7272
destination = "environment"
7373
}
7474

75-
provisioner "file" {
76-
source = "config"
77-
destination = "config"
78-
}
79-
80-
81-
8275
provisioner "shell" {
8376
inline = ["sudo mv environment /etc/environment"]
8477
}
@@ -117,7 +110,11 @@ build {
117110
}
118111

119112
provisioner "shell" {
120-
inline = ["sudo mv config/cassandra-sidecar.yaml /usr/local/cassandra-sidecar/conf/sidecar.yaml"]
113+
inline = [
114+
"sudo mkdir -p /etc/cassandra-sidecar",
115+
"sudo mkdir -p /mnt/cassandra/import",
116+
"sudo chown ubuntu:ubuntu /mnt/cassandra/import"
117+
]
121118
}
122119

123120
provisioner "shell" {

packer/cassandra/services/cassandra-sidecar.service

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
Description=Apache Cassandra Sidecar
33

44
[Service]
5+
Environment="JAVA_OPTS=-Dsidecar.config=file:///etc/cassandra-sidecar/cassandra-sidecar.yaml"
56
ExecStart=/usr/local/cassandra-sidecar/bin/cassandra-sidecar
67
User=cassandra
78

src/main/kotlin/com/rustyrazorblade/easycasslab/Constants.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,22 @@ object Constants {
9595
const val CASSANDRA_DOCKER_COMPOSE = "cassandra/docker-compose.yaml"
9696
const val CASSANDRA_OTEL_CONFIG = "cassandra/otel-cassandra-config.yaml"
9797
const val CASSANDRA_REMOTE_OTEL_CONFIG = "otel-cassandra-config.yaml"
98+
const val CASSANDRA_SIDECAR_CONFIG = "cassandra/cassandra-sidecar.yaml"
99+
const val CASSANDRA_REMOTE_SIDECAR_DIR = "/etc/cassandra-sidecar"
100+
const val CASSANDRA_REMOTE_SIDECAR_CONFIG = "$CASSANDRA_REMOTE_SIDECAR_DIR/cassandra-sidecar.yaml"
98101

99102
// Stress node configs
100103
const val STRESS_DOCKER_COMPOSE = "stress/docker-compose.yaml"
101104
const val STRESS_OTEL_CONFIG = "stress/otel-stress-config.yaml"
102105
const val STRESS_REMOTE_OTEL_CONFIG = "otel-stress-config.yaml"
103106
}
104107

108+
// Cassandra Sidecar configuration
109+
object Sidecar {
110+
const val STORAGE_DIR = "/mnt/cassandra/data"
111+
const val STAGING_DIR = "/mnt/cassandra/import"
112+
}
113+
105114
// Remote file existence checks
106115
object RemoteChecks {
107116
const val FILE_EXISTS_SUFFIX = "&& echo 'exists' || echo 'not found'"

src/main/kotlin/com/rustyrazorblade/easycasslab/commands/Init.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@ class Init(
311311
File("cassandra").mkdirs()
312312
extractResourceFile("otel-cassandra-config.yaml", "cassandra/otel-cassandra-config.yaml")
313313
extractResourceFile("docker-compose-cassandra.yaml", "cassandra/docker-compose.yaml")
314+
extractResourceFile("cassandra-sidecar.yaml", "cassandra/cassandra-sidecar.yaml")
314315

315316
// Create stress directory and extract OTel configs for stress nodes
316317
outputHandler.handleMessage(

packer/cassandra/config/cassandra-sidecar.yaml renamed to src/main/resources/com/rustyrazorblade/easycasslab/commands/cassandra-sidecar.yaml

File renamed without changes.

0 commit comments

Comments
 (0)