The server provisioning is managed using Salt Stack. The base
states are managed in a common repo and additional
states specific to this project are contained within the
conf directory at the root
of the repository.
For more information see the doc:provisioning guide </provisioning>.
Below is the server layout created by this provisioning process:
/var/www/traffic_stops/ source/ env/ log/ public/ static/ media/ ssl/
source contains the source code of the project.
is the virtualenv for Python requirements.
stores the Nginx, Gunicorn and other logs used by the project.
holds the static resources (css/js) for the project and the uploaded user media.
public/media/ map to the
ssl contains the SSL key and certificate pair.
For deployment, each developer connects to the Salt master as their own user. Each developer has SSH access via their public key. These users are created/managed by the Salt provisioning. The deployment itself is automated with Fabric. To deploy, a developer simply runs:
# Deploy updates to staging fab staging deploy # Deploy updates to production fab production deploy
This runs the Salt highstate for the given environment. This handles both the configuration of the server as well as updating the latest source code. This can take a few minutes and does not produce any output while it is running. Once it has finished the output should be checked for errors.