Het Package System vormt de basis van service management in PMA. Elke service wordt gedefinieerd door een manifest.yaml die als Single Source of Truth (SSOT) dient.
De manifest.yaml bevat alle informatie die nodig is om een service te installeren, configureren en beheren. Dit voorkomt configuratie drift en maakt reproduceerbare deployments mogelijk.
# packages/example-service/manifest.yaml
version: "2.0"
name: example-service
display_name: Example Service
description: Beschrijving van de service
category: development # core, business, development, monitoring
# Docker configuratie
docker:
image: example/image:latest
container_name: asd-example
ports:
- "8080:80"
volumes:
- example-data:/data
environment:
- EXAMPLE_VAR=${EXAMPLE_VAR}
depends_on:
- postgres
networks:
- asd-network
# Credentials
credentials:
admin_user: admin
admin_password: ${EXAMPLE_ADMIN_PASSWORD}
# Health check
health:
endpoint: /health
port: 8080
expected_code: 200
# SSO configuratie (optioneel)
sso:
type: grafana # of: flask-appbuilder, php-oidc, etc.
redirect_path: /login/generic_oauth
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
version |
string | Ja | Manifest schema versie |
name |
string | Ja | Unieke service identifier |
display_name |
string | Ja | Leesbare naam |
description |
string | Ja | Service beschrijving |
category |
enum | Ja | Service categorie |
docker |
object | Ja | Docker configuratie |
credentials |
object | Nee | Default credentials |
health |
object | Nee | Health check configuratie |
sso |
object | Nee | SSO integratie type |
packages/
├── authentik/
│ ├── manifest.yaml # Service definitie
│ ├── .env.example # Environment template
│ ├── docker-compose.yml # Compose override (optioneel)
│ └── scripts/
│ ├── post-install.sh
│ └── backup.sh
├── grafana/
│ ├── manifest.yaml
│ └── provisioning/
│ ├── dashboards/
│ └── datasources/
└── n8n/
├── manifest.yaml
└── workflows/
└── *.json
# Bekijk alle packages
just package list
# Package details
just package info <service>
# Installeer package
just package install <service>
# Verwijder package
just package uninstall <service>
# Maak nieuw package
just package create <service>
# Valideer manifest
just package validate <service>
De package manager valideert manifests tegen het schema:
# Valideer specifiek package
just package validate grafana
# Valideer alle packages
python3 scripts/service-info.py --validate
Validatie controleert:
| Item | Convention | Voorbeeld |
|---|---|---|
| Package dir | lowercase, kebab-case | my-service |
| Container | asd-{service} |
asd-grafana |
| Volume | {service}-data |
grafana-data |
| Network | asd-network |
- |
# Gebruik altijd ${VAR} syntax
environment:
- DATABASE_URL=${DATABASE_URL}
- SECRET_KEY=${SECRET_KEY}
# NIET hardcoded
environment:
- DATABASE_URL=postgres://... # FOUT