Skip to content

Add new database versions, Percona Everest support, PMM 3.x fixes#51

Open
zelmario wants to merge 35 commits intoihanick:masterfrom
zelmario:master
Open

Add new database versions, Percona Everest support, PMM 3.x fixes#51
zelmario wants to merge 35 commits intoihanick:masterfrom
zelmario:master

Conversation

@zelmario
Copy link

@zelmario zelmario commented Feb 9, 2026

New features & version support
Add Percona PostgreSQL 18 and missing PPG versions
Add PXC 8.4 support and fix MySQL 8.4 compatibility issues
Add Percona Everest deployment support
Add PMM 3.6.0 server and client version support
Change the default PSMDB version from 7.0 to 8.0

PMM 3.x fixes
Fix PMM client 3 installation and various deployment issues
Fix PMM client mongo setup to support version 3
Fix PMM client setup for PMM 3.x docker-image deployments

Infrastructure & maintenance
Fix Patroni cluster setup
Add less and nano to all container base images
Remove deprecated Python/Bash implementation and legacy files
Change Docker image publisher from ihanick to zelmar
Rebuild binary with version info

zelmario and others added 23 commits January 27, 2026 18:40
- Fork rename: github.com/ihanick/anydbver -> github.com/zelmario/anydbver
- Add PSMDB 8.0: 8.0.4-1, 8.0.4-2, 8.0.8-3, 8.0.12-4, 8.0.16-5, 8.0.17-6
- Add PSMDB 7.0: 7.0.24-13, 7.0.26-14, 7.0.28-15
- Add PSMDB 6.0: 6.0.27-21
- Add PBM: 2.11.0-1, 2.12.0-1
- Add PMM Client: 2.43.0-6, 2.43.1-6, 2.43.2-6, 2.44.0-6, 2.44.1-6
- Add PPG 17: 17.5-3, 17.6-1, 17.7-1, 17.7-2
- Add PPG 16: 16.10-1, 16.11-1, 16.11-2
- Add PPG 15: 15.14-1, 15.15-1, 15.15-2
- Add PPG 14: 14.19-1, 14.20-1, 14.20-2
- Add PPG 13: 13.22-1, 13.23-1, 13.23-2
- Add PPG 18 for el8, el9, el10 (x86_64 and aarch64)
- Add PPG 17 aarch64 entries for el8, el9, el10
- Add PPG 13-16 el10 entries (x86_64 and aarch64)
- Add PPG 12-16 aarch64 entries for el8, el9

Total 151 new entries covering all available Percona PostgreSQL
packages from the Percona repositories.
The project migrated to Go; these files are no longer referenced
by any active code. Removes 8,319 lines of legacy code including
the old Python CLI, Bash wrapper, LXD/Podman controllers, legacy
test scripts, and the unmodified_docker Python package.
- Add PXC 8.4.0-8.4.7 version data for el8/el9 in SQLite database
- Change default PXC version from 8.0 to 8.4
- Add pxc84 soft variable routing in playbook.yml
- Add pxc84 Debian package descriptions for stretch/buster/bionic/focal
- Fix mysql_native_password incompatibility with MySQL 8.4: create
  root@'%' with default auth plugin instead of deprecated
  mysql_native_password which is disabled by default in 8.4
- Mount tools/, library/, configs/ from project root into ansible
  container so local changes take effect during deployment
- Fix project root detection when binary runs from tools/ subdirectory
- Decouple Docker image RELEASE_VERSION from binary version
- Fix Makefile to derive version from git tags dynamically
- Improve galera_join: add timeouts, logging, and proper Ansible
  failure reporting instead of silent infinite loops
- Fix PMM client package name (remove .x86_64 suffix)
- Fix PMM3 repo enable condition (startswith 3 instead of 3.)
- Add PMM URL auto-construction with correct password and port
- Add disable_gpg_check for PBM installation
- Change Percona repo URLs from HTTP to HTTPS
- Fix pipe read error with sync.WaitGroup in runner.go
Auto-detect PMM container internal port (8443 for PMM 3, 443 for PMM 2)
when no explicit port is specified in server= parameter.
Add timeout to PMM server curl health check loop to prevent infinite hang.
Print last Ansible task name on timeout for better error diagnostics.
…andling

- Fix operator precedence bug in setup.yaml causing psql to hang on EL
  waiting for password input (task ran on all distros instead of Debian only)
- Add timeout parameter to RunPipe for per-caller control (600s for Ansible
  playbooks, 300s default for other commands)
- Fix setup_pmm.sh systemd service name for PPG 14+ using pg_systemd_svc
Replace || true with a retry loop (5 attempts, 5s delay) so transient
PMM server API readiness issues are handled instead of masked.
- Fix post_init script to use localhost for pgpass authentication
- Add wait for primary cluster before starting standby cluster
- Add pg_hba rule for cross-network replication
- Add etcd startup retry logic
- Add PMM monitoring setup for Patroni-managed PostgreSQL clusters
- Support cluster labels in PMM for proper grouping
Add `anydbver everest` command that deploys a local Database-as-a-Service
platform powered by Percona Everest on a k3d Kubernetes cluster.

How it works:
- Pre-flight checks verify docker (running), kubectl, and k3d are installed
- Creates a k3d Kubernetes cluster with configurable number of nodes
- Installs Percona Everest via Helm from the official Percona Helm charts
- Starts a kubectl port-forward to expose the Everest UI on localhost:8080
- Prints access instructions with username and how to retrieve the password

Usage:
  anydbver everest                    # Deploy with defaults (3 nodes, latest version)
  anydbver everest --nodes 5          # Deploy with 5 nodes
  anydbver everest --version 1.4.0    # Deploy a specific Everest version

The Everest UI provides a web-based interface to deploy and manage
MySQL, PostgreSQL, and MongoDB database clusters on Kubernetes.
When anydbver is executed from outside the repo directory (e.g. via
a symlink in ~/.local/bin/), the existing projectRoot detection based
on cwd fails and the Ansible container uses stale baked-in playbooks.
Fall back to os.Executable() to locate the repo from the binary path.
Deploy PgBouncer as a standalone connection pooler node using the same
pattern as haproxy-pg: anydbver deploy pgbouncer:node1 node1 pg

Listens on port 6432 with transaction pool mode, proxying to the first
listed PostgreSQL backend.
- Add haproxy-patroni keyword with Patroni REST API health checks (port 8008)
  for proper read-write (/primary) and read-only (/replica) routing
- Integrate pgbackrest with Patroni: auto-detect pgbackrest and use it for
  archive/restore commands in Patroni bootstrap config
- Skip pgbackrest systemd restart and archive_command when Patroni manages PG
- Create pgbackrest stanza after Patroni bootstrap on leader node
- Make restore_command fail gracefully on nodes without pgbackrest
- Improve PMM+Patroni setup with better readiness checks and replica handling
- Add test case and help example for full HA stack deployment
- PBM: add el8/aarch64 and el9/aarch64 entries for versions 2.3.1-2.12.0
- PSMDB: add 7.0.30-16 for el8/el9 (x86_64 and aarch64)
- PMM client: add el8/aarch64 entries for versions 3.0.0-3.6.0
- download_sites: add pmm-client el8/aarch64 for future `anydbver update pmm-client`
The SQLite lookup plugin returns a list of dicts; indexing directly
with ['version'] fails with 'list object has no attribute version'.
The .db file was stale; PMM 3.x entries were already in the SQL
but not reflected in the committed database file.
The SQLite lookup returns [] (empty list, falsy) when no results and
a dict when 1 result. The original != '' check was True for empty list
causing ['version'] to fail. Use truthiness check matching mysql role
pattern.
- anydbver.go: fall back to base image when cache build fails/times out
- anydbver.go: skip cache image for kubectl/k3d provider
- anydbver.go: refactor handleDeploymentKeywordParsed to avoid double-parsing
- run_k8s_operator.py: switch minio from bitnami to minio-stable chart
  with corrected TLS keys, memory limits, and bucket config
Deploys a Samba AD DC as KDC and configures GSSAPI auth on database nodes.
CLI: anydbver deploy node0 os:jammy kerberos node1 os:el8 psmdb:latest,kerberos-server=node0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant