fix(db-build): ensure Build Database Image uses valid Percona packages and non-interactive tzdata

- generator: map pg_stat_monitor to percona-pg-stat-monitor{major} for Percona 17/18 (was percona-postgresql-*-stat-monitor).

- templates: add non-interactive tzdata setup pinned to Etc/GMT-0 to avoid stdin prompts.

- templates: switch contrib to percona-postgresql-contrib metapackage.

- dockerfile: regenerated to reflect fixes; confirmed build succeeds.

Co-authored-by: Junie <junie@jetbrains.com>
This commit is contained in:
chrisfu 2026-02-28 23:27:38 -08:00
parent f20df131df
commit 28b3cd72df
5 changed files with 60 additions and 44 deletions

View File

@ -1,5 +1,5 @@
; Prole Master Configuration File
; Generated by install.py on 2026-02-28 22:51:26
; Generated by install.py on 2026-02-28 23:26:36
; This file is used as input for Ansible deployment and k8s cluster creation.
[User]
@ -27,38 +27,38 @@ dependencies.opentofu.install = true
dependencies.python.install = true
dependencies.verify_all = false
disk_selection.disk_type = local
disk_selection.local_path = ${PROLE_HOME}/prole-tools-app/dist
disk_selection.local_path = /Users/chrisfu
disk_selection.removable_mount =
env_setup.NAMESPACE = prole-hq0-db0
env_setup.NAMESPACE = ${NAMESPACE}
env_setup.PROLE_CONF = ${PROLE_CONF}
env_setup.PROLE_DATA = ${PROLE_DATA}
env_setup.PROLE_HOME = ${PROLE_HOME}
env_setup.PROLE_LOGS = ${PROLE_LOGS}
env_setup.PROLE_SERVICE = ${PROLE_SERVICE}
init_cluster.at_rest_encryption_enabled = true
init_cluster.cluster_env = service
init_cluster.deployment_target = prole-service-cluster
init_cluster.cluster_env = dev
init_cluster.deployment_target = prole-dev-cluster
init_cluster.gitops_enabled = false
init_cluster.k3s_server_url = https://myrddin.prole.org:6443
init_cluster.k3s_token = ${PROLE_SECRET:v1:WQH1gOPkAhxbQdaD:TPu9jANobgFhqGuXdZEBH87Nf7kp9GzQ7rX52ddcv9vxYRE-aooXVvtIPjEnYZaMhmU9eHwKcLCUGcNLMY5QTxe4H5Wt_kLM_8CeMnT1_49M-FCe09hkCvyCMWtsp7Z7T7ceu9740RYLZWwOn5YlTTYvN8j2DIc-3pRaag==}
init_cluster.kerberos_enabled = true
init_cluster.mode = k3s
init_cluster.k3s_server_url =
init_cluster.k3s_token =
init_cluster.kerberos_enabled = false
init_cluster.mode = k3d
init_cluster.start_cluster = true
init_cluster.supabase_enabled = false
init_cnpg_deploy.force_rollout = false
init_cnpg_deploy.run_deploy = true
init_db_build.run_build = true
init_password.db_host_port = 5432
init_password.db_namespace = prole-hq0-db0
init_password.db_password = ${PROLE_SECRET:v1:SseiI-jBFyTZ9zoB:3eqr2gEMnrJuilQPcBEI9MTq8ahrVblz}
init_password.db_password_confirm = ${PROLE_SECRET:v1:SseiI-jBFyTZ9zoB:3eqr2gEMnrJuilQPcBEI9MTq8ahrVblz}
init_password.db_username = chrisfu
init_password.db_namespace = ${NAMESPACE}
init_password.db_password =
init_password.db_password_confirm =
init_password.db_username = root
init_password.generate_ssh_key = true
init_scripts.run_scripts = true
kerberos_config.enabled = true
kerberos_config.kdc = 10.0.0.3
kerberos_config.enabled = false
kerberos_config.kdc =
kerberos_config.password =
kerberos_config.realm = PROLE.ORG
kerberos_config.realm =
kerberos_config.test_connection = false
kerberos_config.user =
network_scan.run = true
@ -68,16 +68,16 @@ ollama_config.server_port = 11434
[Global]
; Variables used by name in more than one place or assumed global scope
CLUSTER_ENV = service
CLUSTER_ENV = dev
DB_HOST_PORT = 5432
DB_PASSWORD = ${PROLE_SECRET:v1:RRx5Zbnsbz1L1FDz:QOzdAPLCl-qLzeeoHl7leEdG60W2FX75}
DEPLOYMENT_MODE = k3s
DEPLOYMENT_TARGET = prole-service-cluster
DB_PASSWORD =
DEPLOYMENT_MODE = k3d
DEPLOYMENT_TARGET = prole-dev-cluster
NAMESPACE = ${NAMESPACE}
PROLE_DB_USER = chrisfu
PROLE_DB_USER = root
PROLE_HOME = ${PROLE_HOME}
PROLE_K3S_SERVER = https://myrddin.prole.org:6443
PROLE_K3S_TOKEN = ${PROLE_SECRET:v1:WQH1gOPkAhxbQdaD:TPu9jANobgFhqGuXdZEBH87Nf7kp9GzQ7rX52ddcv9vxYRE-aooXVvtIPjEnYZaMhmU9eHwKcLCUGcNLMY5QTxe4H5Wt_kLM_8CeMnT1_49M-FCe09hkCvyCMWtsp7Z7T7ceu9740RYLZWwOn5YlTTYvN8j2DIc-3pRaag==}
PROLE_K3S_SERVER =
PROLE_K3S_TOKEN =
PROLE_OPENTOFU_URL = http://127.0.0.1:8080
SERVICE_NAMESPACE = default
@ -96,8 +96,6 @@ ANSIBLE_INVENTORY = ${PROLE_HOME}/infrastructure/inventory
ANSIBLE_REALM = PROLE.ORG
ANSIBLE_TOPOLOGY = {"domain":"prole.org","realm":"PROLE.ORG","internal_records":{"aventage.prole.org":"10.0.0.206","fairyland.prole.org":"10.0.0.208","loghost.prole.org":"10.0.0.3","morana.prole.org":"10.0.0.66","morgoth.prole.org":"10.0.0.204","myrddin.prole.org":"10.0.0.3","pi.prole.org":"10.0.0.5","raspberry.prole.org":"10.0.0.4","retropie.prole.org":"10.0.0.207","synology.prole.org":"10.0.0.203","zinfandel.prole.org":"10.0.0.205"},"ad_dc":{"host":"myrddin.prole.org","ip":"10.0.0.3"},"k3s":{"server_url":"https://myrddin.prole.org:6443","server_host":"myrddin.prole.org","token_present":true},"groups":{"iscsi":["pi.prole.org","raspberry.prole.org","myrddin.prole.org","retropie.prole.org"],"pihole":["pi.prole.org","raspberry.prole.org"],"ad_dc":["myrddin.prole.org"],"k3s_hosts":["myrddin.prole.org","pi.prole.org","retropie.prole.org"],"linux_hosts":["pi.prole.org","raspberry.prole.org","myrddin.prole.org","retropie.prole.org"]},"hosts":{"myrddin.prole.org":"10.0.0.3","pi.prole.org":"10.0.0.5","raspberry.prole.org":"10.0.0.4","retropie.prole.org":"10.0.0.207"},"unmapped_hosts":[]}
KDC_ANSIBLE_DETECTED = 10.0.0.3
KDC_AUTO_DETECTED = 10.0.0.3
KERBEROS_AUTO_ENABLED = True
[Port Forwards]
; No configuration values captured yet for this section.
@ -119,10 +117,7 @@ PROLE_SERVICE = ${PROLE_SERVICE}
; No configuration values captured yet for this section.
[Optional Features]
AT_REST_ENCRYPTION_ENABLED = True
GITOPS_ENABLED = False
KERBEROS_ENABLED = True
SUPABASE_ENABLED = False
[GitOps]
; No configuration values captured yet for this section.
@ -131,41 +126,38 @@ SUPABASE_ENABLED = False
NAMESPACE = ${NAMESPACE}
[Initialize Cluster]
ENVIRONMENT = service
K3S_SERVER_URL = https://myrddin.prole.org:6443
K3S_TOKEN = ${PROLE_SECRET:v1:WQH1gOPkAhxbQdaD:TPu9jANobgFhqGuXdZEBH87Nf7kp9GzQ7rX52ddcv9vxYRE-aooXVvtIPjEnYZaMhmU9eHwKcLCUGcNLMY5QTxe4H5Wt_kLM_8CeMnT1_49M-FCe09hkCvyCMWtsp7Z7T7ceu9740RYLZWwOn5YlTTYvN8j2DIc-3pRaag==}
; No configuration values captured yet for this section.
[Dev Cluster (k3d)]
CLUSTER_ENV = dev
DISPLAY_NAME = prole-dev-cluster
KUBECTL_CONTEXT = prole-k3s
KUBECTL_CONTEXT =
MODE = k3d
[Service Cluster (k3s)]
CLUSTER_ENV = prole-service-cluster
DISPLAY_NAME = prole-service-cluster
K3S_SERVER_URL = https://myrddin.prole.org:6443
K3S_TOKEN = ${PROLE_SECRET:v1:WQH1gOPkAhxbQdaD:TPu9jANobgFhqGuXdZEBH87Nf7kp9GzQ7rX52ddcv9vxYRE-aooXVvtIPjEnYZaMhmU9eHwKcLCUGcNLMY5QTxe4H5Wt_kLM_8CeMnT1_49M-FCe09hkCvyCMWtsp7Z7T7ceu9740RYLZWwOn5YlTTYvN8j2DIc-3pRaag==}
K3S_SERVER_URL =
K3S_TOKEN =
MODE = k3s
PIPELINE_URL = http://127.0.0.1:8080
[Prod Cluster (k8s)]
ARTIFACTS_DIR = /Users/chrisfu/dev/prole/data/staging
ARTIFACTS_DIR = /private/var/folders/rt/pywlnmxj3dn7t5552vwdcpp80000gn/T/pytest-of-chrisfu/pytest-67/test_encryption_toggle0/data/staging
CLUSTER_ENV = prole-prod-cluster
DISPLAY_NAME = prole-prod-cluster
MODE = k8s
PIPELINE_URL = http://127.0.0.1:8080
[Docker Build]
LOCAL_REGISTRY = localhost:5000
LOCAL_REGISTRY_INTERNAL = k3d-prole-registry.localhost:5000
; No configuration values captured yet for this section.
[Initialization Scripts]
; No configuration values captured yet for this section.
[Deployment]
MODE = k3s
TARGET = prole-service-cluster
MODE = k3d
TARGET = prole-dev-cluster
[Install]
; No configuration values captured yet for this section.

View File

@ -320,7 +320,7 @@ class DatabaseOptionsScreenMixin:
elif ext_id == "pgbadger":
pkg = "percona-pgbadger"
elif ext_id == "pg_stat_monitor":
pkg = f"percona-postgresql-{version}-stat-monitor"
pkg = f"percona-pg-stat-monitor{version}"
else:
pkg = f"percona-postgresql-{version}-{ext_id}"
else:

View File

@ -1 +1 @@
77
78

View File

@ -4,18 +4,30 @@ FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
ENV LANG=C.UTF-8
ENV PGDATA=/var/lib/postgresql/data
ENV TZ=Etc/GMT-0
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
ca-certificates curl wget gnupg2 lsb-release \
locales tzdata \
locales \
gosu \
build-essential git openssh-client \
; \
rm -rf /var/lib/apt/lists/*; \
locale-gen en_US.UTF-8
# Configure non-interactive timezone to avoid tzdata prompts
RUN set -eux; \
echo "tzdata tzdata/Areas select Etc" | debconf-set-selections; \
echo "tzdata tzdata/Zones/Etc select GMT-0" | debconf-set-selections; \
apt-get update; \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata; \
rm -rf /var/lib/apt/lists/*; \
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime; \
echo $TZ > /etc/timezone; \
dpkg-reconfigure -f noninteractive tzdata
RUN set -eux; \
mkdir -p /root/.ssh; \
ssh-keyscan github.com >> /root/.ssh/known_hosts
@ -64,7 +76,7 @@ RUN set -eux; \
apt-get update; \
{{EXTENSION_INSTALL_STEPS}}
apt-get install -y --no-install-recommends \
percona-postgresql-contrib-{{MAJOR_VERSION}} \
percona-postgresql-contrib \
freetds-dev \
; \
rm -rf /var/lib/apt/lists/*

View File

@ -4,18 +4,30 @@ FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
ENV LANG=C.UTF-8
ENV PGDATA=/var/lib/postgresql/data
ENV TZ=Etc/GMT-0
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
ca-certificates curl wget gnupg2 lsb-release \
locales tzdata \
locales \
gosu \
build-essential git openssh-client \
; \
rm -rf /var/lib/apt/lists/*; \
locale-gen en_US.UTF-8
# Configure non-interactive timezone to avoid tzdata prompts
RUN set -eux; \
echo "tzdata tzdata/Areas select Etc" | debconf-set-selections; \
echo "tzdata tzdata/Zones/Etc select GMT-0" | debconf-set-selections; \
apt-get update; \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata; \
rm -rf /var/lib/apt/lists/*; \
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime; \
echo $TZ > /etc/timezone; \
dpkg-reconfigure -f noninteractive tzdata
RUN set -eux; \
mkdir -p /root/.ssh; \
ssh-keyscan github.com >> /root/.ssh/known_hosts