Skip to content

Commit

Permalink
Merge pull request #185 from scalar-labs/schema-loader-cassandra
Browse files Browse the repository at this point in the history
Update universal/scalardl module to use schema loader image for Cassandra
  • Loading branch information
feeblefakie authored Aug 18, 2020
2 parents 2197064 + ffa9d15 commit 2a9c1f9
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 3 deletions.
49 changes: 46 additions & 3 deletions modules/universal/scalardl/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ locals {
scalar_image = "${var.scalardl_image_name}:${var.scalardl_image_tag}"
image_filename = "${basename(var.scalardl_image_name)}-${var.scalardl_image_tag}.tar.gz"
scalar_cassandra_host = "cassandra-lb.${var.internal_domain}"

schema_loader_cassandra_image = "${var.schema_loader_cassandra_image_name}:${var.schema_loader_cassandra_image_tag}"
schema_loader_cassandra_image_filename = "${basename(var.schema_loader_cassandra_image_name)}-${var.schema_loader_cassandra_image_tag}.tar.gz"
}

module "ansible" {
Expand All @@ -13,6 +16,7 @@ resource "null_resource" "scalardl_image" {

triggers = {
scalar_tag = var.scalardl_image_tag
triggers = join(",", var.triggers)
}

provisioner "local-exec" {
Expand All @@ -27,7 +31,6 @@ resource "null_resource" "scalardl_image_push" {

triggers = {
docker_image = null_resource.scalardl_image[0].id
triggers = join(",", var.triggers)
}

connection {
Expand All @@ -43,6 +46,20 @@ resource "null_resource" "scalardl_image_push" {
}
}

resource "null_resource" "schema_loader_cassandra_image" {
count = var.provision_count > 0 ? 1 : 0

triggers = {
triggers = join(",", var.triggers)
}

provisioner "local-exec" {
command = "docker pull ${local.schema_loader_cassandra_image} && docker save ${local.schema_loader_cassandra_image} | gzip -1 > ${local.schema_loader_cassandra_image_filename}"
working_dir = path.module
interpreter = ["/bin/bash", "-c"]
}
}

resource "null_resource" "scalardl_waitfor" {
count = var.provision_count

Expand Down Expand Up @@ -131,11 +148,37 @@ resource "null_resource" "scalardl_load" {
}
}

resource "null_resource" "schema_loader_cassandra_load" {
count = var.provision_count > 0 ? 1 : 0

triggers = {
triggers = null_resource.docker_install[0].id,
scalar_image = null_resource.schema_loader_cassandra_image[0].id
}

connection {
bastion_host = var.bastion_host_ip
host = var.host_list[count.index]
user = var.user_name
agent = true
private_key = file(var.private_key_path)
}

provisioner "file" {
source = "${path.module}/${local.schema_loader_cassandra_image_filename}"
destination = "/tmp/${local.schema_loader_cassandra_image_filename}"
}

provisioner "remote-exec" {
inline = ["gzip -cd /tmp/${local.schema_loader_cassandra_image_filename} | docker load"]
}
}

resource "null_resource" "scalardl_schema" {
count = var.provision_count > 0 ? 1 : 0

triggers = {
triggers = null_resource.scalardl_load[0].id
triggers = null_resource.schema_loader_cassandra_load[0].id
}

connection {
Expand All @@ -148,7 +191,7 @@ resource "null_resource" "scalardl_schema" {

provisioner "remote-exec" {
inline = [
"docker run -e CASSANDRA_REPLICATION_FACTOR=${var.replication_factor} --rm ${local.scalar_image} dockerize -template create_schema.cql.tmpl:create_schema.cql -wait tcp://${local.scalar_cassandra_host}:9042 -timeout 30s cqlsh --cqlversion=3.4.4 ${local.scalar_cassandra_host} -u '${var.cassandra_username}' -p '${var.cassandra_password}' -f create_schema.cql"
"docker run -e CASSANDRA_HOST='${local.scalar_cassandra_host}' -e CASSANDRA_USERNAME='${var.cassandra_username}' -e CASSANDRA_PASSWORD='${var.cassandra_password}' -e CASSANDRA_REPLICATION_FACTOR=${var.replication_factor} --rm ${local.schema_loader_cassandra_image}"
]
}
}
Expand Down
10 changes: 10 additions & 0 deletions modules/universal/scalardl/vars.tf
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,16 @@ variable "replication_factor" {
description = "Set the replication factor for schema"
}

variable "schema_loader_cassandra_image_name" {
default = "scalarlabs/scalardl-schema-loader-cassandra"
description = "The docker image name for the schema loader for Cassandra"
}

variable "schema_loader_cassandra_image_tag" {
default = "1.0.0"
description = "The docker image tag for the schema loader for Cassandra"
}

variable "enable_tdagent" {
default = true
description = "A flag to install td-agent that forwards logs to the monitor host"
Expand Down

0 comments on commit 2a9c1f9

Please sign in to comment.