/ogc-api-testbed

OGC API Testbed Template - Stable

Primary LanguageSchemeGNU General Public License v3.0GPL-3.0

Traefik Deploy pygeoapi Deploy ldproxy Deploy geoserver Deploy goaf Deploy qgis Deploy postgis Deploy admin Deploy ⚙️ home Deploy docs Deploy Gitter

OGC API Testbed - STABLE

Bootstrap and continuous integration/deployment (CI/CD) for OGC API web-service components. See the website apitestdocs.geonovum.nl for documentation and details.

Want to access the (OGC) web-services? Go to:

Summary

This repo contains all that is needed to bootstrap, configure and maintain (CI/CD) a remote deployment of an OGC API web-service stack using modern "DevOps" tooling. You can use it as a GitHub Template to configure and run your own instance. See for example the OGC API Sandbox repo.

The main design principles are:

  • any action on the server/VM host is performed from a client host
  • i.e. no direct access/login to/on the server/VM is required, only maybe for problem solving
  • remote actions can be performed manually or triggered by GitHub Workflows
  • all credentials (passwords, SSH-keys, etc) are secured
  • operational stack instances for "production" (stable) and "sandbox" (playground)

The (DevOps-) components used in this setup are:

  • Docker "...OS-level virtualization to deliver software in packages called containers..." (Wikipedia)
  • Docker Compose "...a tool for defining and running multi-container Docker applications..."
  • Ansible "...an open-source software provisioning tool" (Wikipedia)
  • GitHub Actions/Workflows "...Automate, customize, and execute software development workflows in a GitHub repository..."

The Docker-components are used to run the operational stack, i.e. the OGC API web-services. Ansible is used to provision both the server OS-software and the operational stack. Ansible is executed on a local client/desktop system to invoke operations on a remote server/VM. These operations are bundled in so called Ansible Playbooks, YAML files that describe a desired server state. GitHub Actions are used to construct Workflows. These Actions invoke these Ansible Playbooks, effectively configuring and provisioning the operational stack on a remote server/VM. GitHub Actions are triggered (selectively) on commit/push to this repo.

Security is enforced by the use of Ansible-Vault and GitHub Encrypted Secrets.

The operational stack has the following components:

  • Traefik a frontend proxy/load-balancer and SSL (HTTPS) endpoint.
  • pygeoapi a Python server implementation of the OGC API suite of standards.
  • GeoServer a Java server implementation of the OGC API suite of standards.
  • ldproxy a Java server implementation of the OGC API suite of standards.
  • QGIS Server - server component of QGIS with OGC OAFeat support.
  • GOAF - OGC OAFeat implementation in Golang.
  • PostgreSQL/PostGIS - geospatial database

For administration, documentation and monitoring the following components are used:

  • mkdocs for live documentation and landing pages
  • PGAdmin - visual PostgreSQL manager
  • GeoHealthCheck to monitor the availability, compliance and QoS of OGC web services
  • Portainer visual Docker monitor and manager

Read more on the setup in the documentation/website of this project.