Demo setup for https://demo.pygeoapi.io. Includes Ansible playbooks for bootstrapping (provisioning) an empty Ubuntu server, installing all (Docker) services.
All services can be started/stopped as a Ubuntu system service named pygeoapi
on the server as well.
The demo server runs the following apps/services:
- home - simple Flask app for landing page and demo viewers
- pygeoapi_master - (latest GitHub
master
version of)pygeoapi
service with test data - pygeoapi_stable - (last stable version of)
pygeoapi
service with test data - pygeoapi_cite - (latest GitHub
master
version of)pygeoapi
service with CITE configuration - pygeoapi_covid-19 - (latest GitHub
master
version of)pygeoapi
service with Covid-19 configuration - traefik - edge/proxy server routing incoming HTTP(S) and managing SSL-certificates (via Let's Encrypt)
- dockerhub listener - listens to webhooks from DockerHub to redeploy home and pygeoapi_master
The home, pygeoapi_master, pygeoapi_cite and pygeoapi_covid-19 services are automatically redeployed by dockerhub listener. The full chain is:
(git push to GitHub master) --> (DockerHub Image autobuild) --> (demo server redeploy by dockerhub listener)
The home app is redeployed after any git push to the master
of this GitHub repo.
The pygeoapi_master service is redeployed after any git push
to the master
of the pygeoapi GitHub repo.
The pygeoapi_cite service is redeployed after any git push
to the master
of the pygeoapi GitHub repo.
The pygeoapi_covid19 service is redeployed after any git push
to the master
of the pygeoapi GitHub repo.
# get code
git clone https://github.com/geopython/demo.pygeoapi.io
# Get required Ansible roles/modules, install locally
cd ansible
mkdir roles
ansible-galaxy install --roles-path ./roles -r requirements.yml
These are not in this repo for obvious reasons... You need to create/populate these locally.
ansible/vars/vars.yml
(see example)service/dockerhub/docker.env
dockerhub env file with yourTOKEN
set in DockerHub (see example)
Have a remote Ubuntu VM installed with root access via pub/private key.
# Installs entire system
cd ansible
ansible-playbook -vv bootstrap.yml -i hosts/demo.pygeoapi.io
Have Ansible, Vagrant and VBox installed.
# Setup Vagrant with VirtualBox for Ubuntu 16.04 VM
cd demo.pygeoapi.io
vagrant box add geerlingguy/ubuntu1604
vagrant init geerlingguy/ubuntu1604
# Will use Vagrantfile for auto-provisioning via Ansible
vagrant up
vagrant ssh
vagrant halt
All services can be started/stopped as a Ubuntu system service named pygeoapi
as well.
Login as admin user and issue:
sudo service pygeoapi stop
sudo service pygeoapi start
sudo service pygeoapi status