First pass at splitting out role into a core nginx supervisor role.

This commit is contained in:
Dorian 2016-05-12 08:30:26 -04:00
parent 4f0c0dd8f2
commit 667761d299
8 changed files with 11 additions and 93 deletions

View File

@ -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
------------ ------------
@ -73,17 +75,6 @@ into sections and described below:
- (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
These variables are not as crucial to configure. They do give good defaults for configuring the system in a consistent, These variables are not as crucial to configure. They do give good defaults for configuring the system in a consistent,
@ -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

View File

@ -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 }}"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 %}

View File

@ -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"