Files
domain/apps/taiga/rabbitmq.tf
2024-06-18 16:01:11 +02:00

130 lines
3.5 KiB
HCL

resource "kubectl_manifest" "rabbit" {
yaml_body = <<-EOF
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
name: "${var.instance}-${var.component}-rabbitmq"
namespace: "${var.namespace}"
labels: ${jsonencode(local.rabbitmq_labels)}
spec:
image: "${var.images.rabbit.registry}/${var.images.rabbit.repository}:${var.images.rabbit.tag}"
persistence:
storage: "${var.storage.rabbitmq.size}"
replicas: ${var.rabbitmq.replicas}
resources:
limits:
cpu: "${var.rabbitmq.limits.cpu}"
memory: "${var.rabbitmq.limits.memory}"
requests:
cpu: "${var.rabbitmq.requests.cpu}"
memory: "${var.rabbitmq.requests.memory}"
EOF
}
resource "kubectl_manifest" "rabbit_vhost" {
yaml_body = <<-EOF
apiVersion: rabbitmq.com/v1beta1
kind: Vhost
metadata:
name: "${var.instance}-${var.component}-taiga"
namespace: "${var.namespace}"
labels: ${jsonencode(local.rabbitmq_labels)}
spec:
name: taiga
rabbitmqClusterReference:
name: ${kubectl_manifest.rabbit.name}
EOF
}
resource "kubectl_manifest" "rabbit_user" {
yaml_body = <<-EOF
apiVersion: rabbitmq.com/v1beta1
kind: User
metadata:
name: "${var.instance}-${var.component}-taiga"
namespace: "${var.namespace}"
labels: ${jsonencode(local.rabbitmq_labels)}
spec:
tags: ["administrator"]
importCredentialsSecret:
name: ${kubectl_manifest.rabbit_user_secret.name}
rabbitmqClusterReference:
name: ${kubectl_manifest.rabbit.name}
EOF
}
resource "kubectl_manifest" "rabbit_perm" {
yaml_body = <<-EOF
apiVersion: rabbitmq.com/v1beta1
kind: Permission
metadata:
name: "${var.instance}-${var.component}-taiga"
namespace: "${var.namespace}"
labels: ${jsonencode(local.rabbitmq_labels)}
spec:
vhost: "taiga"
user: "taiga"
permissions:
write: ".*"
configure: ".*"
read: ".*"
rabbitmqClusterReference:
name: ${kubectl_manifest.rabbit.name}
EOF
}
# resource "kubectl_manifest" "rabbit_vhost_event" {
# yaml_body = <<-EOF
# apiVersion: rabbitmq.com/v1beta1
# kind: Vhost
# metadata:
# name: "${var.instance}-${var.component}-taiga-event"
# namespace: "${var.namespace}"
# labels: ${jsonencode(local.rabbitmq_labels)}
# spec:
# name: event
# rabbitmqClusterReference:
# name: ${kubectl_manifest.rabbit.name}
# EOF
# }
# resource "kubectl_manifest" "rabbit_perm_event" {
# yaml_body = <<-EOF
# apiVersion: rabbitmq.com/v1beta1
# kind: Permission
# metadata:
# name: "${var.instance}-${var.component}-taiga-event"
# namespace: "${var.namespace}"
# labels: ${jsonencode(local.rabbitmq_labels)}
# spec:
# vhost: "event"
# user: "taiga"
# permissions:
# write: ".*"
# configure: ".*"
# read: ".*"
# rabbitmqClusterReference:
# name: ${kubectl_manifest.rabbit.name}
# EOF
# }
resource "random_password" "rabbit" {
length = 32
special = false
}
resource "kubectl_manifest" "rabbit_user_secret" {
yaml_body = <<-EOF
apiVersion: v1
kind: Secret
metadata:
name: "${var.instance}-${var.component}-rabbitmq-taiga"
labels: ${jsonencode(local.common_labels)}
namespace: ${var.namespace}
ownerReferences: ${jsonencode(var.install_owner)}
type: Opaque
stringData:
username: taiga
password: "${random_password.rabbit.result}"
EOF
}