Files
domain-incoming/apps/taiga/rabbitmq.tf
2024-06-01 16:35:37 +02:00

95 lines
2.6 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 "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
}