diff --git a/cookiecutter.json b/cookiecutter.json index 9b9c67077..2fb3bf6c9 100644 --- a/cookiecutter.json +++ b/cookiecutter.json @@ -21,5 +21,6 @@ "postgresql_version": ["9.5", "9.4", "9.3", "9.2"], "js_task_runner": ["Gulp", "Grunt", "None"], "use_lets_encrypt": "n", - "open_source_license": ["MIT", "BSD", "GPLv3", "Apache Software License 2.0", "Not open source"] + "open_source_license": ["MIT", "BSD", "GPLv3", "Apache Software License 2.0", "Not open source"], + "use_elasticbeanstalk": "y" } diff --git a/{{cookiecutter.project_slug}}/.ebextensions/05_packages.config b/{{cookiecutter.project_slug}}/.ebextensions/05_packages.config new file mode 100644 index 000000000..c0774efae --- /dev/null +++ b/{{cookiecutter.project_slug}}/.ebextensions/05_packages.config @@ -0,0 +1,5 @@ +packages: + yum: + git: [] + postgresql94-devel: [] + libjpeg-turbo-devel: [] diff --git a/{{cookiecutter.project_slug}}/.ebextensions/10_python.config b/{{cookiecutter.project_slug}}/.ebextensions/10_python.config new file mode 100644 index 000000000..737e71bb2 --- /dev/null +++ b/{{cookiecutter.project_slug}}/.ebextensions/10_python.config @@ -0,0 +1,13 @@ +container_commands: + 01_migrate: + command: "source /opt/python/run/venv/bin/activate && python manage.py migrate" + leader_only: True + 02_collectstatic: + command: "source /opt/python/run/venv/bin/activate && python manage.py collectstatic --noinput" +option_settings: + "aws:elasticbeanstalk:container:python": + WSGIPath: "config/wsgi.py" + NumProcesses: 3 + NumThreads: 20 + "aws:elasticbeanstalk:container:python:staticfiles": + "/static/": "www/static/" diff --git a/{{cookiecutter.project_slug}}/ebsetenv.py b/{{cookiecutter.project_slug}}/ebsetenv.py new file mode 100644 index 000000000..b343e2968 --- /dev/null +++ b/{{cookiecutter.project_slug}}/ebsetenv.py @@ -0,0 +1,29 @@ +"""Converts a .env file to Elastic Beanstalk environment variables""" + +from sys import exit +from subprocess import check_call + +try: + import dotenv +except ImportError: + print("Please install the 'dotenv' library: 'pip install dotenv'") + exit() + +def main(): + command = ['eb', 'setenv'] + failures = [] + for key, value in dotenv.Dotenv('.env').items(): + if value: + command.append("{}={}".format(key, value)) + else: + failures.append(key) + if failures: + for failure in failures: + print("{} requires a value".format(failure)) + else: + print(' '.join(command)) + check_call(command) + + +if __name__ == '__main__': + main() diff --git a/{{cookiecutter.project_slug}}/env.example b/{{cookiecutter.project_slug}}/env.example index 95a6a1d96..356e9c4ec 100644 --- a/{{cookiecutter.project_slug}}/env.example +++ b/{{cookiecutter.project_slug}}/env.example @@ -1,3 +1,4 @@ + # PostgreSQL POSTGRES_PASSWORD=mysecretpass POSTGRES_USER=postgresuser @@ -33,4 +34,4 @@ DJANGO_OPBEAT_SECRET_TOKEN {% endif %} {% if cookiecutter.use_compressor == 'y' -%} COMPRESS_ENABLED= -{% endif %} \ No newline at end of file +{% endif %}