First pass at splitting out role into a core nginx supervisor role.
This commit is contained in:
parent
4f0c0dd8f2
commit
667761d299
45
README.md
45
README.md
|
@ -1,9 +1,11 @@
|
||||||
Ansible nginx-uwsgi-supervisor
|
Ansible nginx-supervisor
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
An Ansible role to setup and manage a UWSGI app via supervisor, and served up on a NGINX web server. The goal of this
|
A base Ansible role that setups and manages a webapp via supervisor, and served up on a NGINX web server. The goal of
|
||||||
role is to make deployment of WSGI app as a simple and sane as possible. Additionally the role provides sane defaults
|
this role is to extract the common elements of deploying a webapp into this infrastructure, in a simple and sane manner.
|
||||||
for logging and folder structure setup.
|
Additionally the role provides sane defaults for logging and folder structure setup.
|
||||||
|
|
||||||
|
**This role is under development and is unstable.**
|
||||||
|
|
||||||
Requirements
|
Requirements
|
||||||
------------
|
------------
|
||||||
|
@ -72,17 +74,6 @@ into sections and described below:
|
||||||
- app_uwsgi_envs:
|
- app_uwsgi_envs:
|
||||||
- (Optional) A dictionary of environment variables to pass into an app.
|
- (Optional) A dictionary of environment variables to pass into an app.
|
||||||
- Default: empty dictionary
|
- Default: empty dictionary
|
||||||
|
|
||||||
### Virtual Environments
|
|
||||||
|
|
||||||
**NEW** - On occassion it is necessary to change the setup of the virtual environments on a system.
|
|
||||||
|
|
||||||
- virtualenv_root_path:
|
|
||||||
- Path to where the virtual environments are installed
|
|
||||||
- Default: web_root_path/virtualenvs
|
|
||||||
- app_venv:
|
|
||||||
- Path to the application's virtualenv.
|
|
||||||
- Default: virtualenv_root_path/app_name
|
|
||||||
|
|
||||||
### General Web
|
### General Web
|
||||||
|
|
||||||
|
@ -104,18 +95,12 @@ By default the role will organize files in the following directory structure:
|
||||||
/srv/www
|
/srv/www
|
||||||
├── config
|
├── config
|
||||||
│ ├── nginx -> /etc/nginx
|
│ ├── nginx -> /etc/nginx
|
||||||
│ ├── supervisor -> /etc/supervisor
|
│ └── supervisor -> /etc/supervisor
|
||||||
│ └── uwsgi
|
|
||||||
├── logs
|
├── logs
|
||||||
│ ├── nginx -> /var/log/nginx
|
│ ├── nginx -> /var/log/nginx
|
||||||
│ ├── supervisor -> /var/log/supervisor
|
│ └── supervisor -> /var/log/supervisor
|
||||||
│ └── uwsgi
|
└── app_webapp
|
||||||
├── app_webapp
|
└── app
|
||||||
│ ├── requirements.txt
|
|
||||||
│ └── app
|
|
||||||
└── virtualenvs
|
|
||||||
├── app
|
|
||||||
└── uwsgi
|
|
||||||
|
|
||||||
Internal Variables
|
Internal Variables
|
||||||
------------------
|
------------------
|
||||||
|
@ -130,12 +115,6 @@ work with your setup:
|
||||||
- The common root directory of Python virtual environments associated with running the
|
- The common root directory of Python virtual environments associated with running the
|
||||||
UWSGI app + server.
|
UWSGI app + server.
|
||||||
- Default: /srv/www/virtualenvs/
|
- Default: /srv/www/virtualenvs/
|
||||||
- uwsgi_venv:
|
|
||||||
- The virtual environment where UWSGI is installed.
|
|
||||||
- Default: virtualenv_root/uwsgi
|
|
||||||
- app_venv:
|
|
||||||
- The virtual environment where the dependencies of the WSGI app is installed.
|
|
||||||
- Default: virtualenv_root/app_name
|
|
||||||
- nginx_app_conf:
|
- nginx_app_conf:
|
||||||
- The filename of the NGINX configuration for the app.
|
- The filename of the NGINX configuration for the app.
|
||||||
- Default: app_name_uwsgi_nginx.conf
|
- Default: app_name_uwsgi_nginx.conf
|
||||||
|
@ -172,7 +151,5 @@ This role is a spin-off of the technology developed for the [Rookeries project]
|
||||||
Repositories
|
Repositories
|
||||||
------------
|
------------
|
||||||
|
|
||||||
- Main: https://bitbucket.org/dorianpula/ansible-nginx-uwsgi-supervisor
|
- Main: https://bitbucket.org/dorianpula/ansible-nginx-supervisor
|
||||||
- All development and issues are worked on this repo.
|
- All development and issues are worked on this repo.
|
||||||
- Clone: https://github.com/dorianpula/ansible-nginx-uwsgi-supervisor
|
|
||||||
- A clone to work with Ansible Galaxy and Github
|
|
||||||
|
|
|
@ -11,12 +11,3 @@ app_root_path: "{{ web_root_path }}/{{ app_name }}_webapp"
|
||||||
# NGINX
|
# NGINX
|
||||||
app_nginx_hostname: localhost
|
app_nginx_hostname: localhost
|
||||||
app_nginx_static_path: "{{ app_root_path }}/{{ app_name }}/static/"
|
app_nginx_static_path: "{{ app_root_path }}/{{ app_name }}/static/"
|
||||||
|
|
||||||
# UWSGI
|
|
||||||
app_uwsgi_port: 8000
|
|
||||||
app_uwsgi_executable: "app:make_wsgi_app()"
|
|
||||||
app_uwsgi_envs: {}
|
|
||||||
|
|
||||||
# Virtualenvs
|
|
||||||
virtualenv_root_path: "{{ web_root_path }}/virtualenvs"
|
|
||||||
app_venv: "{{ virtualenv_root_path }}/{{ app_name }}"
|
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
---
|
---
|
||||||
# handlers file for ansible-nginx-uwsgi-supervisor
|
# handlers file for ansible-nginx-uwsgi-supervisor
|
||||||
- name: restart uwsgi app
|
|
||||||
supervisorctl: name={{ uwsgi_app_service_name }} state=restarted config=/etc/supervisor/supervisord.conf
|
|
||||||
sudo: yes
|
|
||||||
|
|
||||||
- name: start supervisord
|
- name: start supervisord
|
||||||
service: name=supervisor state=started
|
service: name=supervisor state=started
|
||||||
sudo: yes
|
sudo: yes
|
||||||
|
|
|
@ -3,5 +3,3 @@
|
||||||
- include: nginx.yaml
|
- include: nginx.yaml
|
||||||
- include: supervisor.yaml
|
- include: supervisor.yaml
|
||||||
- include: web_data_folders.yaml
|
- include: web_data_folders.yaml
|
||||||
- include: python.yaml
|
|
||||||
- include: uwsgi.yaml
|
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
---
|
|
||||||
- name: install python dev
|
|
||||||
sudo: yes
|
|
||||||
apt: pkg={{ item }} state=present
|
|
||||||
with_items:
|
|
||||||
- python-dev
|
|
||||||
- python-setuptools
|
|
||||||
|
|
||||||
- name: install pip
|
|
||||||
sudo: yes
|
|
||||||
easy_install: name=pip
|
|
||||||
|
|
||||||
- name: install virtualenv
|
|
||||||
sudo: yes
|
|
||||||
pip: name={{ item }} state=present extra_args='--upgrade'
|
|
||||||
with_items:
|
|
||||||
- pip
|
|
||||||
- virtualenv
|
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
- name: install uwsgi server
|
|
||||||
pip: name=uwsgi virtualenv={{ uwsgi_venv }} version=2.0
|
|
||||||
sudo: yes
|
|
||||||
|
|
||||||
- name: configure app on uwsgi server
|
|
||||||
template: src=uwsgi/app_uwsgi.ini dest={{ uwsgi_config_path }}/{{ uwsgi_app_ini }}
|
|
||||||
sudo: yes
|
|
|
@ -1,12 +0,0 @@
|
||||||
[uwsgi]
|
|
||||||
socket = :{{ app_uwsgi_port }}
|
|
||||||
master = true
|
|
||||||
processes = 8
|
|
||||||
|
|
||||||
chdir = {{ app_root_path }}
|
|
||||||
virtualenv = {{ app_venv }}
|
|
||||||
module = {{ app_uwsgi_executable }}
|
|
||||||
|
|
||||||
{% for env_var, env_value in app_uwsgi_envs.items() %}
|
|
||||||
env = {{ env_var | upper }}={{ env_value }}
|
|
||||||
{% endfor %}
|
|
|
@ -9,9 +9,3 @@ nginx_app_config: "{{ app_name }}_uwsgi_nginx.conf"
|
||||||
|
|
||||||
# Supervisor
|
# Supervisor
|
||||||
supervisor_app_config: "{{ app_name }}_supervisor.conf"
|
supervisor_app_config: "{{ app_name }}_supervisor.conf"
|
||||||
|
|
||||||
# UWSGI
|
|
||||||
uwsgi_venv: "{{ virtualenv_root_path }}/uwsgi"
|
|
||||||
uwsgi_config_path: "{{ web_root_path }}/config/uwsgi"
|
|
||||||
uwsgi_app_ini: "{{ app_name }}_uwsgi.ini"
|
|
||||||
uwsgi_app_service_name: "{{ app_name }}_uwsgi"
|
|
||||||
|
|
Loading…
Reference in New Issue