Skip to content

Commit

Permalink
Updated: terraform deploy manifests
Browse files Browse the repository at this point in the history
  • Loading branch information
capcom6 committed Dec 28, 2023
1 parent cd1699e commit 025f8a8
Show file tree
Hide file tree
Showing 6 changed files with 154 additions and 68 deletions.
70 changes: 19 additions & 51 deletions deployments/docker-swarm-terraform/main.tf
Original file line number Diff line number Diff line change
@@ -1,59 +1,27 @@
data "docker_registry_image" "app-image" {
name = "capcom6/${var.app-name}:${var.app-version}"
}
module "core" {
source = "./modules/service"

data "docker_network" "proxy" {
name = "proxy"
}
service-name = "service-monitor-core"
service-version = var.app-version

config-b64 = var.core-config-b64
env-json-b64 = var.core-env-json-b64

network-id = docker_network.private.id

resource "docker_image" "app" {
name = data.docker_registry_image.app-image.name
pull_triggers = [data.docker_registry_image.app-image.sha256_digest]
keep_locally = true
depends_on = [docker_service.redis]
}

resource "docker_config" "app" {
name = "${var.app-name}-config.yml-${replace(timestamp(), ":", ".")}"
data = var.app-config-b64
module "bot" {
source = "./modules/service"

lifecycle {
ignore_changes = [name]
create_before_destroy = true
}
}
service-name = "service-monitor-bot"
service-version = var.app-version

config-b64 = var.bot-config-b64
env-json-b64 = var.bot-env-json-b64

network-id = docker_network.private.id

resource "docker_service" "app" {
name = var.app-name

task_spec {
container_spec {
image = docker_image.app.image_id

configs {
config_id = docker_config.app.id
config_name = docker_config.app.name
file_name = "/app/config.yml"
file_uid = 405
file_gid = 100
}

env = jsondecode(base64decode(var.app-env-json-b64))
}
networks_advanced {
name = data.docker_network.proxy.id
}

resources {
limits {
# nano_cpus = var.cpu-limit
memory_bytes = var.memory-limit
}

reservation {
# nano_cpus = 10 * 10000000
memory_bytes = 16 * 1024 * 1024
}
}
}
depends_on = [docker_service.redis]
}
78 changes: 78 additions & 0 deletions deployments/docker-swarm-terraform/modules/service/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
variable "service-name" {
type = string
}
variable "service-version" {
type = string
}

variable "config-b64" {
type = string
}
variable "env-json-b64" {
type = string
}

variable "network-id" {
type = string
}

variable "memory-limit" {
default = 32 * 1024 * 1024
}

variable "memory-reserve" {
default = 16 * 1024 * 1024
}

data "docker_registry_image" "app-image" {
name = "capcom6/${var.service-name}:${var.service-version}"
}

resource "docker_image" "app" {
name = data.docker_registry_image.app-image.name
pull_triggers = [data.docker_registry_image.app-image.sha256_digest]
keep_locally = true
}

resource "docker_config" "app" {
name = "${var.service-name}-config.yml-${replace(timestamp(), ":", ".")}"
data = var.config-b64

lifecycle {
ignore_changes = [name]
create_before_destroy = true
}
}

resource "docker_service" "app" {
name = var.service-name

task_spec {
container_spec {
image = docker_image.app.image_id

configs {
config_id = docker_config.app.id
config_name = docker_config.app.name
file_name = "/app/config.yml"
file_uid = 405
file_gid = 100
}

env = jsondecode(base64decode(var.env-json-b64))
}
networks_advanced {
name = var.network-id
}

resources {
limits {
memory_bytes = var.memory-limit
}

reservation {
memory_bytes = 16 * 1024 * 1024
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "3.0.2"
}
}
}
4 changes: 4 additions & 0 deletions deployments/docker-swarm-terraform/network.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
resource "docker_network" "private" {
name = "${var.app-name}-network"
driver = "overlay"
}
32 changes: 32 additions & 0 deletions deployments/docker-swarm-terraform/redis.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
data "docker_registry_image" "redis" {
name = "redis:7-alpine"
}

resource "docker_image" "redis" {
name = data.docker_registry_image.redis.name
pull_triggers = [data.docker_registry_image.redis.sha256_digest]
keep_locally = true
}

resource "docker_service" "redis" {
name = "${var.app-name}-redis"

task_spec {
container_spec {
image = docker_image.redis.image_id
}
networks_advanced {
name = docker_network.private.id
}

# resources {
# limits {
# memory_bytes = var.memory-limit
# }

# reservation {
# memory_bytes = 16 * 1024 * 1024
# }
# }
}
}
30 changes: 13 additions & 17 deletions deployments/docker-swarm-terraform/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,25 @@ variable "app-name" {
variable "app-version" {
type = string
description = "Version of Docker image of app"
default = "1.0"
default = "master"
}

variable "app-config-b64" {
type = string
description = "Application config file"
sensitive = true
variable "core-config-b64" {
type = string
sensitive = true
}

variable "app-env-json-b64" {
type = string
description = "Application env file in JSON format"
sensitive = true
variable "bot-config-b64" {
type = string
sensitive = true
}

variable "cpu-limit" {
type = number
description = "CPU limit in nanoseconds"
default = 100 * 10000000
variable "core-env-json-b64" {
type = string
sensitive = true
}

variable "memory-limit" {
type = number
description = "Memory limit in bytes"
default = 32 * 1024 * 1024
variable "bot-env-json-b64" {
type = string
sensitive = true
}

0 comments on commit 025f8a8

Please sign in to comment.