Giter Club home page Giter Club logo

ogc-api-jrc's Introduction

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.

ogc-api-jrc's People

Contributors

justb4 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.