63/63 GLPI targets imported into gvmd (0 failures). Admin creds in ~/.creds/gvm-test.env. Import is idempotent (deletes glpi-* first). https://projects.knownelement.com/issues/389
openvas/ — vulnerability scanning fed from the GLPI CMDB
Ticket #389 (Greenbone on kali-tsys) · umbrella #311 · lane index https://community.turnsys.com/t/297
Pipeline (GLPI → scan targets)
GLPI CMDB (computers, read-only via mglpi identity)
└─ glpi-to-openvas.sh --format csv # review artifact
└─ glpi-to-openvas.sh --format gmp # <create_target> fragments
└─ GVM (OpenVAS) — app-test stack: ../docker/gvm-test/
glpi-to-openvas.shreads the computer inventory (GLPI REST, read-only), parses thets=<ip> | mgmt <ip>comment convention (mixed=and space — both accepted), and emits GMP<create_target>fragments or a review CSV.--fixture FILEtransforms a saved GLPI response offline (deterministic test path —fixtures/glpi-computers-sample.jsonis a real 80-record pull).- Verified 2026-09-05: 63 scan targets parsed from 80 GLPI records (the rest
have no parsable IP and are skipped;
--include-no-ipoverrides).
Rules of engagement (non-negotiable)
- Scans against PROD hosts require an approved GLPI Change + an Uptime Kuma maintenance window. sectestbed VMs are always fair game (that is their job).
- Tailscale addresses are included in targets deliberately — scanning runs over tailnet, not LAN, unless a CR says otherwise.
- Findings stay in this PRIVATE repo and Redmine. Never leave the boundary.
- App-test GVM binds loopback only (127.0.0.1:9392). Production engine placement = kali-tsys VM per #389, deployed under its own CR.
Status
- GLPI feed script, dual-shellcheck green, fixture-tested (2026-09-05)
- GVM app-test compose (loopback, pinned version tags; digest-pin at proof)
- GVM bring-up + first feed import (next run: feeds download several GB)
- First sectestbed scan + findings triage into Redmine
- kali-tsys production engine under CR (#389)
GVM stack (app-test lane) — official Greenbone Community Edition
docker/gvm-test/compose.yaml = the OFFICIAL Greenbone compose (fetched
2026-09-05 from https://greenbone.github.io/docs/latest/_static/compose.yaml,
already loopback-bound: 127.0.0.1:443 + 127.0.0.1:9392). Registry:
registry.community.greenbone.net (Docker Hub greenbone/* is discontinued;
ghcr.io/greenbone/gvmd exists but the official stack uses the community
registry — use the official file as-is).
Bring-up:
cd docker/gvm-test && docker compose -f compose.yaml pull && docker compose -f compose.yaml up -d
# admin password reset:
docker compose -f compose.yaml exec -u gvmd gvmd gvmd --user=admin --new-password=''
Feed sync runs on first start (multi-GB, takes hours — check
docker compose logs -f gvmd).
Import GLPI targets once feeds are loaded (gvm-tools service in the compose): ../../openvas/glpi-to-openvas.sh --format gmp > /tmp/targets.gmp docker compose -f compose.yaml run --rm gvm-tools ... # see #389 note