Configuration

Edit custom.yml

You need to customize the Ansible deployment configuration to install your PyWPS service. Create a custom.yml configuration and overwrite any of the variables found in group_vars/all. There are some prepared sample configurations etc/sample-*.yml for specific deployments. Copy one of those to get started.

You can also add your custom configurations to the etc/ folder to stay away from Git control:

$ cp etc/sample-emu.yml etc/custom-emu.yml
$ vim etc/custom-emu.yml
$ ln -s etc/custom-emu.yml custom.yml

Use Conda to build identical environments

You can use Conda specification files to build identical environments. The WPS service needs to have a specification file, spec-file.txt, in its top level folder. You can set the following option in your custom.yml:

conda_env_use_spec: true

See an example in etc/sample-emu-with-conda-spec.yml.

Warning

This is option is currently enabled for all configured WPS services.

Note

Conda spec files will work only on a specifc OS, in our case Linux.

Use sqlite Database

You can use a SQLite database with the following settings:

db_install_postgresql: false
db_install_sqlite: true

See an example in etc/sample-sqlite.yml.

Use PostgreSQL Database installed by playbook

By default the playbook will install a PostgreSQL database. You can customize the installation. For example you can configure a database user:

db_user: dbuser
db_password: dbuser

See an example in etc/sample-postgres.yml.

Warning

When you change the database user for an existing database the table owners will not be updated.

Use external PostgreSQL Database

If you want to use an existing database you can skip the database installation by setting the variable:

db_install_postgresql: false

You need to configure then the database connection string to your external database:

wps_database: "postgresql+psycopg2://user:password@host:5432/pywps"

See an example in etc/sample-postgres.yml.

Install multiple PyWPS applications

You can install several PyWPS applications with a single Ansible run. See etc/sample-multiple.yml configuration as example.

You can also configure a shared file-server for outputs. See etc/sample-multiple-with-shared-fileserver.yml.

Use HTTPS with Nginx

You can enable HTTPS for the Nginx service by setting the variable:

wps_enable_https: true

See etc/sample-certs.yml configuration as example.

By default it generates a self-signed certificate automatically.

You can also provide your own certificate by setting the following variables:

ssl_certs_local_privkey_path: '/path/to/example.com.key'
ssl_certs_local_cert_path: '/path/to/example.com.pem'

Read the ssl-certs role documentation for details.

Extend PyWPS configuration

This Ansible playbook has its own template for a PyWPS configuration file. This template does not cover all options and you might want to extend it for additional configurations. You can extend the pywps.cfg configuration with the extra_config option. Here is an example:

---
server_name: demowps
wps_services:
  - name: demo
    hostname: "{{ server_name }}"
    port: 5000
    extra_config: |
      [data]
      cache_path = /tmp/cache

Use WPS with load-balancer configuration

When you use a load-balancing configuration for your WPS service, your service needs to use the external hostname used in the load-balancer. The WPS output service still needs to use the internal hostname for the output URL.

Please see: etc/sample-cp4cds_load-balancer.yml.