Switch lldap storage to mysql
This commit is contained in:
parent
f606e0a17e
commit
acc80868f9
@ -25,12 +25,6 @@ all:
|
|||||||
group: "999"
|
group: "999"
|
||||||
mode: "0755"
|
mode: "0755"
|
||||||
read_only: false
|
read_only: false
|
||||||
- name: lldap-data
|
|
||||||
path: /srv/volumes/lldap
|
|
||||||
owner: "root"
|
|
||||||
group: "bin"
|
|
||||||
mode: "0755"
|
|
||||||
read_only: false
|
|
||||||
n2.thefij:
|
n2.thefij:
|
||||||
nfs_mounts:
|
nfs_mounts:
|
||||||
- src: 10.50.250.2:/srv/volumes
|
- src: 10.50.250.2:/srv/volumes
|
||||||
|
145
core/lldap.nomad
145
core/lldap.nomad
@ -18,12 +18,6 @@ job "lldap" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
volume "lldap-data" {
|
|
||||||
type = "host"
|
|
||||||
read_only = false
|
|
||||||
source = "lldap-data"
|
|
||||||
}
|
|
||||||
|
|
||||||
service {
|
service {
|
||||||
name = "lldap"
|
name = "lldap"
|
||||||
provider = "nomad"
|
provider = "nomad"
|
||||||
@ -44,14 +38,8 @@ job "lldap" {
|
|||||||
task "lldap" {
|
task "lldap" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
|
|
||||||
volume_mount {
|
|
||||||
volume = "lldap-data"
|
|
||||||
destination = "/data"
|
|
||||||
read_only = false
|
|
||||||
}
|
|
||||||
|
|
||||||
config {
|
config {
|
||||||
image = "nitnelave/lldap:v0.4"
|
image = "nitnelave/lldap:v0.4.3"
|
||||||
ports = ["ldap", "web"]
|
ports = ["ldap", "web"]
|
||||||
args = ["run", "--config-file", "${NOMAD_SECRETS_DIR}/lldap_config.toml"]
|
args = ["run", "--config-file", "${NOMAD_SECRETS_DIR}/lldap_config.toml"]
|
||||||
}
|
}
|
||||||
@ -63,27 +51,31 @@ job "lldap" {
|
|||||||
|
|
||||||
template {
|
template {
|
||||||
data = <<EOH
|
data = <<EOH
|
||||||
database_url = "sqlite:///data/users.db?mode=rwc"
|
|
||||||
key_file = "/data/private_key"
|
|
||||||
ldap_base_dn = "{{ with nomadVar "nomad/jobs" }}{{ .base_dn }}{{ end }}"
|
ldap_base_dn = "{{ with nomadVar "nomad/jobs" }}{{ .base_dn }}{{ end }}"
|
||||||
|
|
||||||
{{ with nomadVar "nomad/jobs/lldap" -}}
|
{{ with nomadVar "nomad/jobs/lldap" -}}
|
||||||
|
database_url = "mysql://{{ .db_user }}:{{ .db_pass }}@127.0.0.1:3306/{{ .db_name }}"
|
||||||
|
key_seed = "{{ .key_seed }}"
|
||||||
jwt_secret = "{{ .jwt_secret }}"
|
jwt_secret = "{{ .jwt_secret }}"
|
||||||
|
|
||||||
ldap_user_dn = "{{ .admin_user }}"
|
ldap_user_dn = "{{ .admin_user }}"
|
||||||
ldap_user_email = "{{ .admin_email }}"
|
ldap_user_email = "{{ .admin_email }}"
|
||||||
ldap_user_pass = "{{ .admin_password }}"
|
ldap_user_pass = "{{ .admin_password }}"
|
||||||
{{- end }}
|
|
||||||
{{ with nomadVar "nomad/jobs" -}}
|
|
||||||
[smtp_options]
|
[smtp_options]
|
||||||
|
from = "{{ .smtp_from }}"
|
||||||
|
reply_to = "{{ .smtp_reply_to }}"
|
||||||
|
|
||||||
enable_password_reset = true
|
enable_password_reset = true
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
# TODO: Better access to SMTP creds using nomad ACLs
|
||||||
|
{{ with nomadVar "nomad/jobs" -}}
|
||||||
server = "{{ .smtp_server }}"
|
server = "{{ .smtp_server }}"
|
||||||
port = {{ .smtp_port }}
|
port = {{ .smtp_port }}
|
||||||
tls_required = {{ .smtp_tls.Value | toLower }}
|
tls_required = {{ .smtp_tls.Value | toLower }}
|
||||||
user = "{{ .smtp_user }}"
|
user = "{{ .smtp_user }}"
|
||||||
password = "{{ .smtp_password }}"
|
password = "{{ .smtp_password }}"
|
||||||
{{ end -}}
|
|
||||||
{{ with nomadVar "nomad/jobs/lldap" -}}
|
|
||||||
from = "{{ .smtp_from }}"
|
|
||||||
reply_to = "{{ .smtp_reply_to }}"
|
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
EOH
|
EOH
|
||||||
destination = "${NOMAD_SECRETS_DIR}/lldap_config.toml"
|
destination = "${NOMAD_SECRETS_DIR}/lldap_config.toml"
|
||||||
@ -96,5 +88,116 @@ reply_to = "{{ .smtp_reply_to }}"
|
|||||||
memory_max = 200
|
memory_max = 200
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task "bootstrap" {
|
||||||
|
driver = "docker"
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
hook = "prestart"
|
||||||
|
sidecar = false
|
||||||
|
}
|
||||||
|
|
||||||
|
config {
|
||||||
|
image = "mariadb:10"
|
||||||
|
args = [
|
||||||
|
"/usr/bin/timeout",
|
||||||
|
"2m",
|
||||||
|
"/bin/bash",
|
||||||
|
"-c",
|
||||||
|
"until /usr/bin/mysql --defaults-extra-file=${NOMAD_SECRETS_DIR}/my.cnf < ${NOMAD_SECRETS_DIR}/bootstrap.sql; do sleep 10; done",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
template {
|
||||||
|
data = <<EOF
|
||||||
|
[client]
|
||||||
|
host=127.0.0.1
|
||||||
|
port=3306
|
||||||
|
user=root
|
||||||
|
# TODO: Use via lesser scoped access
|
||||||
|
{{ with nomadVar "nomad/jobs/lldap/lldap/bootstrap" -}}
|
||||||
|
password={{ .mysql_root_password }}
|
||||||
|
{{ end -}}
|
||||||
|
EOF
|
||||||
|
destination = "${NOMAD_SECRETS_DIR}/my.cnf"
|
||||||
|
}
|
||||||
|
|
||||||
|
template {
|
||||||
|
data = <<EOF
|
||||||
|
{{ with nomadVar "nomad/jobs/lldap" -}}
|
||||||
|
{{ $db_name := .db_name }}
|
||||||
|
CREATE DATABASE IF NOT EXISTS `{{ .db_name }}`
|
||||||
|
CHARACTER SET = 'utf8mb4'
|
||||||
|
COLLATE = 'utf8mb4_unicode_ci';
|
||||||
|
DROP USER IF EXISTS '{{ .db_user }}'@'%';
|
||||||
|
CREATE USER '{{ .db_user }}'@'%'
|
||||||
|
IDENTIFIED BY '{{ .db_pass }}';
|
||||||
|
GRANT ALL ON `{{ .db_name }}`.*
|
||||||
|
TO '{{ .db_user }}'@'%';
|
||||||
|
{{ else -}}
|
||||||
|
SELECT 'NOOP';
|
||||||
|
{{ end -}}
|
||||||
|
EOF
|
||||||
|
destination = "${NOMAD_SECRETS_DIR}/bootstrap.sql"
|
||||||
|
}
|
||||||
|
|
||||||
|
resources {
|
||||||
|
cpu = 50
|
||||||
|
memory = 50
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task "stunnel" {
|
||||||
|
driver = "docker"
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
hook = "prestart"
|
||||||
|
sidecar = true
|
||||||
|
}
|
||||||
|
|
||||||
|
config {
|
||||||
|
image = "alpine:3.17"
|
||||||
|
args = ["/bin/sh", "${NOMAD_TASK_DIR}/start.sh"]
|
||||||
|
}
|
||||||
|
|
||||||
|
resources {
|
||||||
|
cpu = 100
|
||||||
|
memory = 100
|
||||||
|
}
|
||||||
|
|
||||||
|
template {
|
||||||
|
data = <<EOF
|
||||||
|
set -e
|
||||||
|
apk add stunnel
|
||||||
|
exec stunnel {{ env "NOMAD_TASK_DIR" }}/stunnel.conf
|
||||||
|
EOF
|
||||||
|
destination = "${NOMAD_TASK_DIR}/start.sh"
|
||||||
|
}
|
||||||
|
|
||||||
|
template {
|
||||||
|
data = <<EOF
|
||||||
|
syslog = no
|
||||||
|
foreground = yes
|
||||||
|
delay = yes
|
||||||
|
|
||||||
|
[mysql_client]
|
||||||
|
client = yes
|
||||||
|
accept = 127.0.0.1:3306
|
||||||
|
{{ range nomadService 1 (env "NOMAD_ALLOC_ID") "mysql-tls" -}}
|
||||||
|
connect = {{ .Address }}:{{ .Port }}
|
||||||
|
{{- end }}
|
||||||
|
PSKsecrets = {{ env "NOMAD_SECRETS_DIR" }}/mysql_stunnel_psk.txt
|
||||||
|
EOF
|
||||||
|
destination = "${NOMAD_TASK_DIR}/stunnel.conf"
|
||||||
|
}
|
||||||
|
|
||||||
|
template {
|
||||||
|
data = <<EOF
|
||||||
|
{{- with nomadVar "nomad/jobs/lldap/lldap/stunnel" }}{{ .mysql_stunnel_psk }}{{ end -}}
|
||||||
|
EOF
|
||||||
|
destination = "${NOMAD_SECRETS_DIR}/mysql_stunnel_psk.txt"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,13 +6,26 @@ job "lldap" {
|
|||||||
passphrase = env("BACKUP_PASSPHRASE")
|
passphrase = env("BACKUP_PASSPHRASE")
|
||||||
}
|
}
|
||||||
|
|
||||||
sqlite "Backup database" {
|
task "Create local backup dir" {
|
||||||
path = "/data/lldap/users.db"
|
pre_script {
|
||||||
dump_to = "/data/lldap/users.db.bak"
|
on_backup = "mkdir -p /local/lldap"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task "Backup database" {
|
||||||
|
mysql "Backup database" {
|
||||||
|
hostname = env("MYSQL_HOST")
|
||||||
|
port = env("MYSQL_PORT")
|
||||||
|
username = env("MYSQL_USER")
|
||||||
|
password = env("MYSQL_PASSWORD")
|
||||||
|
database = "lldap"
|
||||||
|
no_tablespaces = true
|
||||||
|
dump_to = "/local/lldap/dump.sql"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
backup {
|
backup {
|
||||||
paths = ["/data/lldap"]
|
paths = ["/local/lldap"]
|
||||||
# Because path is absolute
|
# Because path is absolute
|
||||||
restore_opts {
|
restore_opts {
|
||||||
Target = "/"
|
Target = "/"
|
||||||
|
Loading…
Reference in New Issue
Block a user