justb4 / ogc-api-jrc

Data services for the European Commission (EC) Joint Research Centre (JRC) based on OGC APIs.

Home Page:https://jrc.map5.nl

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Traefik Deploy pygeoapi Deploy postgis Deploy admin Deploy home Deploy Gitter

Data Services for EC JRC

This repository contains the sources to realize data services based on OGC Web services for the European Commission Joint Research Centre (Ispra).

Bootstrap and continuous integration/deployment (CI/CD) for OGC API web-service components.

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

  • Stable (production) server at jrc.map5.nl, includes documentation.

Credits

This repo is generated from the Template GitHub repo from Geonovum that was developed for their OGC API Testbed.

See the website apitestdocs.geonovum.nl for documentation and details.

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.

The main design principles are:

  • any action on the server/VM host is performed remotely 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", not implemented here)

This approach is known as GitOps, a term first coined by Weaveworks. GitOps is "a set of practices to manage infrastructure and application configurations using Git". "The truth is stored in Git". GitOps is often tied to Kubernetes, but "...using Kubernetes is not a requirement of GitOps. GitOps is a technique that can be applied to other infrastructure and deployment pipelines." Refs: Redhat.

The (GitOps-) components used in the setup here 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.
  • 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 the Geonovum project and for this repo at this repo's server instance at jrc.map5.nl.

About

Data services for the European Commission (EC) Joint Research Centre (JRC) based on OGC APIs.

https://jrc.map5.nl


Languages

Language:Shell 92.9%Language:Jinja 4.2%Language:Dockerfile 2.9%