This Ansible Role will install GeoNode and required dependencies onto an Ubuntu 18.04 (Bionic) host. It includes tasks for PostgreSQL+PostGIS, GeoServer, GeoNode, nginx, uswgi and also includes tasks for using AWS RDS databases. It is meant to be used with a GeoNode template project by following the workflow described here http://github.com/geonode/geonode-project
There are three cases to use this project:
- You already have a GeoNode template published on GitHub. You can continue with the next section without any additional requirements.
- You do not have a GeoNode template published on GitHub and wish to create one. You will need to create and activate a virtualenv, pip install geonode, clone the template project, push your changes to github and update the Role Variables. For more details see http://github.com/geonode/geonode-project
- You do not have a GeoNode template and you do not want to create one. In that case use "GeoNode" as the github_user variable, this Role will clone and install the empty GeoNode template project for you (this is meant to be a demonstration-only setup, for production setup use the first option).
app_name
- GeoNode project name (default:my_geonode
)github_user
- GitHub username that owns the project (default:GeoNode
)repo_name
- GitHub repository name (defaults toapp_name
:my_geonode
)code_repository
- URL to the Code Repository (default:https://github.com/{{ github_user }}/{{ app_name }}.git
)branch_name
- Git branch to use for deployment (default:master
)geonode_version
- GeoNode version to install if this information is not included in the requirements.txt file (default:2.10rc4
)
The app_name
variable will be used to set the database names and credentials. You can override this behavior with the following variables.
db_data_instance
- Database instance for spatial data (default:{{ app_name }}
)db_metadata_instance
- Database instance for the application metadata (default:{{ app_name }}_app
)db_password
- Database password (default:{{ app_name }}
)db_user
- Database user (default:{{ app_name }}
)
You can also change the war used to deploy geoserver with the following variable.
gs_war_url
- GeoServer war URL (default:https://build.geo-solutions.it/geonode/geoserver/latest/geoserver-2.9.x-oauth2.war
)
You can tune PostgreSQL, Tomcat8, and NGINX with the following variables:
pg_max_connections
- PostgreSQL Max Connections (default:100
)pg_shared_buffers
- PostgreSQL Shared Buffers (default:128MB
)tomcat_xms
- Tomcat JAVA_OPTS xms (default:1024M
)tomcat_xmx
- Tomcat JAVA_OPTS xmx (default:2048M
)nginx_client_max_body_size
- NGINX Client Max Body Size (default:400M
)uwsgi_processes
- UWSGI number of processes (default:4
)
The following security variables should be added to ansible-playbook ...
as command line flags or stored securely outside of ansible-geonode
, geonode-project
, or your project repo.
gs_admin_password
- GeoServer Admin Password (default:geoserver
)gs_root_password
- GeoServer Root Password
The following is an example playbook using variables. This playbook will be included in your geonode template project clone.
- hosts: webservers
remote_user: ubuntu
vars:
app_name: my_geonode
github_user: GeoNode
roles:
- { role: GeoNode.geonode }
Run with:
ansible-playbook --ask-become-pass ./playbook.yml
BSD
This repo is maintained by the GeoNode development team (https://github.com/GeoNode/geonode/blob/master/AUTHORS)