The pycon8 folder includes a single Django project having a single app, a single model and a single view. That project features the minimal setup required to make it easy deployable with PIP and uses environment variables for configuration.
The deploy folder contains a bunch of Ansible playbooks to configure the servers and deploy the project using the following technologies:
- CentOS 7
- NGiNX
- uWSGI
- Python 3.6
- PostgreSQL
To install a local development environment clone the repo and create a virtual environment with Python 3.6, then run the command:
pip install -r requirements/local.txtTo create an installation bundle in the deploy/files folder you can run
the following command:
invoke build --bundleTo create two local CentOS virtual machines use the provided Vagrantfile tested with the VirtualBox provider:
cd deploy
vagrant upTo run the Ansible playbook a [virtual] environment with Python 2.7 is required, until Ansible will be fully compatible with Python 3.
To configure the project for the local environment create and edit the dotenv
file in the deploy/files folder copying it from the .env.example file:
cp .env.example deploy/files/pycon8.envThen to deploy on the two local Vagrant boxes run the main playbook:
ansible-playbook -i hosts/local all_servers.yml --extra-vars "pycon8=0.1.0" -vvvThe two CentOS 7 machines will be configured as web server and database server and the project will be deployed using the installation bundle.
Using the git_repo variable it is possible to deploy in the target machines
directly from GIT and PyPI:
ansible-playbook -i hosts/local web_servers_git.yml --extra-vars "pycon8=master" -vvvUsing tags it is possible to perform a deploy, skipping all the configuration steps and without any internet access:
ansible-playbook -i hosts/local web_servers.yml --extra-vars "pycon8=0.1.0" --tags=deploy -vvv