homelab-nomad/services/service/vars.tf

248 lines
4.9 KiB
HCL

variable "name" {
type = string
description = "Name of the service"
}
variable "instance_count" {
type = number
default = 1
description = "Number of desired group instances"
}
variable "priority" {
type = number
default = 50
description = "Scheduler priority of the service"
}
variable "image" {
type = string
description = "Image that should be run"
}
variable "image_pull_timeout" {
type = string
default = null
description = "A time duration that controls how long Nomad will wait before cancelling an in-progress pull of the Docker image"
}
variable "meta" {
type = map(string)
default = {}
description = "Meta attributes to attach to the task"
}
variable "group_meta" {
type = map(string)
default = {}
description = "Meta attributes to attach to the group"
}
variable "service_port" {
type = number
default = null
description = "Port number used by the service"
}
variable "service_port_static" {
type = bool
default = false
description = "Should the port assigned be static"
}
variable "prometheus" {
type = bool
default = false
description = "Should metrics be scraped by prometheus"
}
variable "ingress" {
type = bool
default = false
}
variable "sticky_disk" {
type = bool
default = false
}
variable "args" {
type = list(string)
default = []
description = "Arguments passed to the Docker container"
}
variable "resources" {
type = object({
cpu = number
memory = number
memory_max = optional(number)
})
default = {
cpu = 50
memory = 100
memory_max = null
}
description = "Resources to be assigned to the main task"
}
variable "stunnel_resources" {
type = object({
cpu = number
memory = number
memory_max = optional(number)
})
default = {
cpu = 50
memory = 50
memory_max = null
}
description = "Resources to be assigned to the stunnel sidecar task"
}
variable "env" {
type = map(string)
default = {}
description = "Env variables for the main task"
}
variable "ingress_rule" {
type = string
default = null
description = "Routing rule for ingress"
}
variable "ingress_middlewares" {
type = list(string)
default = []
description = "Traefik middlewares that should be used"
}
variable "service_tags" {
type = list(string)
default = []
description = "Additional tags to be added to the service."
}
variable "ports" {
type = list(object({
name = string
host_network = optional(string)
from = optional(number)
to = optional(number)
static = optional(number)
}))
default = []
description = "Additional ports (not service_port) to be bound."
}
variable "templates" {
type = list(object({
data = string
dest = string
dest_prefix = optional(string, "$${NOMAD_TASK_DIR}")
change_mode = optional(string)
change_signal = optional(string)
left_delimiter = optional(string)
right_delimiter = optional(string)
mount = optional(bool, true)
env = optional(bool, false)
}))
default = []
description = "Templates to be used"
}
variable "host_volumes" {
type = list(object({
name = string
dest = string
read_only = optional(bool)
}))
default = []
}
variable "use_mysql" {
type = bool
default = false
}
variable "use_redis" {
type = bool
default = false
}
variable "use_ldap" {
type = bool
default = false
}
variable "use_postgres" {
type = bool
default = false
}
variable "mysql_bootstrap" {
type = object({
enabled = optional(bool, true)
db_name_key = optional(string, "db_name")
db_user_key = optional(string, "db_user")
db_pass_key = optional(string, "db_pass")
add_ro = optional(bool, false)
})
default = null
}
variable "postgres_bootstrap" {
type = object({
enabled = optional(bool, true)
db_name_key = optional(string, "db_name")
db_user_key = optional(string, "db_user")
db_pass_key = optional(string, "db_pass")
databases = optional(list(string), [])
})
default = null
}
variable "constraints" {
type = list(object({
attribute = optional(string, "")
operator = optional(string, "=")
value = optional(string, "")
}))
default = []
}
variable "docker_devices" {
type = list(object({
host_path = string
container_path = string
}))
default = []
}
variable "custom_services" {
description = "Service definitions for any additional requested services."
type = list(object({
name = string
port = string
tags = list(string)
}))
default = []
}
variable "use_wesher" {
type = bool
description = "Indicates whether or not services should expose themselves on the wesher network"
default = true
}