Package: fab-support
fab_support - Simple Django DeploymentMaking deployment of simple Django projects simple to heroku and dokku with fabric.  This implement staging so as to
make it trivial to test your code egfabbuild_uatIt supports a local .env file importing for storing secrets that you don’t want to store in git.See theroadmapfor current development.StagesStages are the different stages of development of an application.
So they might go from:test â†’ dev â†’ uat â†’ production â†’ old productionDifferent stages of a single projectI have create a fab-support.py which does the heavy lifting of creating, updating and destroying each environment.
The aim is that this should
be hardly any more than the use of fabric and much simpler than the use of a full featured buildSaltorAnsible.  This
is really only if you fit one of the use cases.  Like Ansible this is a simple single master deployment system, unlike
Ansible this is an opinated deployment of Django applications.Suitable use cases:Simple Django to Heroku where you have at a minimum two stages eg UAT and Production.Copes with Postgres databaseStatic data in AWSDeployment of Pelican static websiteDeployment to local file system for use with a file serverDeployment to local for a file based browserDeployment to S3In the root fabfile create a dictionary like this which
documents how to deploy each stage:fromfabric.apiimportenv# Definition of different environments to deploy toenv['stages']={'localsite':{'comment':'stage: For serving locally on this computer via mongoose. ','config_file':'local_conf.py','destination':'C:/Sites/local.drummond.info','copy_method':copy_file,'SITEURL':'http://localhost:8042',},'production':{'comment':'stage: For serving on local file server','destination':'//10.0.0.1/web/www.drummond.info','config_file':'local_conf.py','copy_method':copy_file,'SITEURL':'http://www.drummond.info',},}Then the deployment by Pelican is pretty standardised eg build deploy and you have commands such as:fab localsite deployI think it was inspired byBreytenErnsting.  This is then reimplemented using the standard env environment
and support in Fabric.Free software: MIT licenseDocumentation:https://fab-support.readthedocs.io.Django configurationThe Django configuration includes the following features:deployment to HerokuCelery support with aqmpLog trapping support with PapertrailFeaturesRuns on Windows.  If it is getting to complex then it should probably be ported to Ansible or Salt.CreditsThis package was created withCookiecutterand theaudreyr/cookiecutter-pypackageproject template.  Thanks AudreyHistory0.3.0 (2019-11-12)This is actually a series of major breaking changes.Changing from requirements.txt to pipenv for managing dependenciesChanging from predefined tasks to methods which can be used.  The
destination eg heroku or dokku is abstracted into the definition of the stage.Implementation of dokku alongside Heroku as a deployment platform.env to config.jsonThis change is inspired by zappa which has a configuration file zappa.json.  Each environment has
mostly the same list of environment variables (obviously with different values).  A hierachical
data structure is a nice way to store these.Predefined tasks to methodsThe previous methods meant that including tasks created lots of verbiage when you didfab –listIn order to simplify the output I am now providing tools that need to be selected for your
particular use case.The abstraction of the destination eg heroku or dokku into the stage is meant to make it
really easy to use either platforms in a mixed deployment.Support for dokkuI have started to use dokku for lower cost.  Heroku can still scale to a larger intances.requirements.txt to pipenvI am using pipenv quite happily and find it easier to bundle up the dependencies and is quite widely
supported eg on PyCharm.0.2.1 (2018-05-11)Updating pelican commands to the parameter method of passing stage.Note tests were failing to a non obvious cause.  This was Heroku CLI needed updating to the latest version.
I manually upgraded.0.2.0 (2018-04-20)Change the way environment variables are passed through.In version 0.1 only the following variables were considered env variables:‘DJANGO_SECRET_KEY’, ‘DJANGO_ADMIN_URL’, ‘DJANGO_AWS_ACCESS_KEY_ID’, ‘DJANGO_AWS_SECRET_ACCESS_KEY’,
‘DJANGO_AWS_STORAGE_BUCKET_NAME’, ‘DJANGO_MAILGUN_API_KEY’, ‘DJANGO_SERVER_EMAIL’, ‘MAILGUN_SENDER_DOMAIN’,
‘DJANGO_ACCOUNT_ALLOW_REGISTRATION’, ‘DJANGO_SENTRY_DSN’, ‘XERO_CONSUMER_SECRET’, ‘XERO_CONSUMER_KEY’Now there is an ‘ENV’ list of variables that allows any variables to be passed through and also for them to
renamed on the way from the file .env0.1.0 (2018-02-04)First release on PyPI.