Add basic Ansible role layout for UWSGI, NGINX and supervisor setup.
This commit is contained in:
parent
41a54c74e4
commit
e8a243ef14
|
@ -0,0 +1,44 @@
|
|||
Role Name
|
||||
=========
|
||||
|
||||
A brief description of the role goes here.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the
|
||||
role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
|
||||
A description of the settable variables for this role should go here, including any variables that are in
|
||||
defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables
|
||||
that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as
|
||||
well.
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be
|
||||
set for other roles, or variables that are used from other roles.
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
|
||||
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for
|
||||
users too:
|
||||
|
||||
- hosts: servers
|
||||
roles:
|
||||
- { role: username.rolename, x: 42 }
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
AGPL v3
|
||||
|
||||
Author Information
|
||||
------------------
|
||||
|
||||
An optional section for the role authors to include contact information, or a website (HTML is not allowed).
|
|
@ -1,7 +0,0 @@
|
|||
:syntax on
|
||||
:set number
|
||||
:set textwidth=125
|
||||
:set autoindent
|
||||
:set shiftwidth=4
|
||||
:set nobackup
|
||||
:set nowritebackup
|
|
@ -1,21 +0,0 @@
|
|||
# Basic environmental
|
||||
ENVIRONMENTAL_NAME = "Vagrant"
|
||||
TESTING = False
|
||||
DEBUG = True
|
||||
|
||||
# Password salts + secrets
|
||||
PASSWORD_SALT = "secret"
|
||||
SECRET_KEY = "development"
|
||||
USER_REGISTRATION_INVITE_KEY = None
|
||||
|
||||
# Database
|
||||
DATABASE_URI = "mysql+mysqlconnector://rookeries:penguin2013flight@localhost:3306/rookeries?charset=utf8"
|
||||
|
||||
# Mail server configuration
|
||||
MAIL_SERVER = "localhost"
|
||||
MAIL_PORT = 25
|
||||
MAIL_USERNAME = "admin@rookeri.es"
|
||||
MAIL_PASSWORD = "password"
|
||||
MAIL_DEFAULT_SENDER = "admin@rookeri.es"
|
||||
MAIL_USE_TLS = False
|
||||
MAIL_USE_SSL = False
|
|
@ -1,8 +0,0 @@
|
|||
; Mailsink configuration
|
||||
[program:mailsink]
|
||||
command=/srv/www/virtualenvs/mail_server/bin/mailsinkd -w 8025 -s 25
|
||||
stopsignal=TERM
|
||||
stdout_logfile = /srv/www/logs/supervisor/mailsink-application.log
|
||||
stdout_logfile_backups = 5
|
||||
stderr_logfile=/srv/www/logs/supervisor/mailsink-error.log
|
||||
stderr_logfile_backups=5
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# defaults file for ansible-nginx-uwsgi-supervisor
|
|
@ -1,4 +0,0 @@
|
|||
---
|
||||
- include: deployment/rookeries_install.yaml
|
||||
- include: deployment/uwsgi.yaml
|
||||
- include: deployment/email_server.yaml
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
- hosts: all
|
||||
sudo: yes
|
||||
vars:
|
||||
web_server_home: /srv/www
|
||||
email_server_venv: "{{ web_server_home }}/virtualenvs/mail_server"
|
||||
tasks:
|
||||
|
||||
- name: install mailsink test server into target virtualenv
|
||||
pip: name=mailsink virtualenv={{ email_server_venv }} version=0.0.2
|
||||
|
||||
- name: restart up the mailsink program
|
||||
supervisorctl: name=mailsink state=restarted config=/etc/supervisor/supervisor.conf
|
|
@ -1,25 +0,0 @@
|
|||
---
|
||||
- hosts: all
|
||||
sudo: yes
|
||||
vars:
|
||||
web_server_home: /srv/www
|
||||
web_server_group: www-data
|
||||
rookeries_venv: "{{ web_server_home }}/virtualenvs/rookeries"
|
||||
rookeries_package: rookeries-0.4.0.tar.bz2
|
||||
tasks:
|
||||
|
||||
- name: upload + extract rookeries package to web server home
|
||||
unarchive: src=../../../{{ rookeries_package }} dest={{ web_server_home }}/
|
||||
|
||||
- name: install rookeries dependencies
|
||||
pip: requirements=rookeries_webapp/requirements.txt virtualenv={{ rookeries_venv }} chdir={{ web_server_home }}
|
||||
|
||||
- name: install extra MySQL python connector dependency
|
||||
pip: name=mysql-connector-python virtualenv={{ rookeries_venv }} version=1.1.6
|
||||
extra_args='--allow-external mysql-connector-python --allow-unverified mysql-connector-python'
|
||||
|
||||
- name: fix permissions on extracted web app
|
||||
file: path={{ web_server_home }}/rookeries_webapp owner={{ web_server_group }} group={{ web_server_group }}
|
||||
state=directory recurse=yes
|
||||
|
||||
# TODO Step 4 - Setup environment variables on target system related to config.
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# handlers file for ansible-nginx-uwsgi-supervisor
|
|
@ -0,0 +1,128 @@
|
|||
---
|
||||
galaxy_info:
|
||||
author: your name
|
||||
description:
|
||||
company: your company (optional)
|
||||
# Some suggested licenses:
|
||||
# - BSD (default)
|
||||
# - MIT
|
||||
# - GPLv2
|
||||
# - GPLv3
|
||||
# - Apache
|
||||
# - CC-BY
|
||||
license: license (GPLv2, CC-BY, etc)
|
||||
min_ansible_version: 1.2
|
||||
#
|
||||
# Below are all platforms currently available. Just uncomment
|
||||
# the ones that apply to your role. If you don't see your
|
||||
# platform on this list, let us know and we'll get it added!
|
||||
#
|
||||
#platforms:
|
||||
#- name: EL
|
||||
# versions:
|
||||
# - all
|
||||
# - 5
|
||||
# - 6
|
||||
# - 7
|
||||
#- name: GenericUNIX
|
||||
# versions:
|
||||
# - all
|
||||
# - any
|
||||
#- name: Fedora
|
||||
# versions:
|
||||
# - all
|
||||
# - 16
|
||||
# - 17
|
||||
# - 18
|
||||
# - 19
|
||||
# - 20
|
||||
#- name: SmartOS
|
||||
# versions:
|
||||
# - all
|
||||
# - any
|
||||
#- name: opensuse
|
||||
# versions:
|
||||
# - all
|
||||
# - 12.1
|
||||
# - 12.2
|
||||
# - 12.3
|
||||
# - 13.1
|
||||
# - 13.2
|
||||
#- name: Amazon
|
||||
# versions:
|
||||
# - all
|
||||
# - 2013.03
|
||||
# - 2013.09
|
||||
#- name: GenericBSD
|
||||
# versions:
|
||||
# - all
|
||||
# - any
|
||||
#- name: FreeBSD
|
||||
# versions:
|
||||
# - all
|
||||
# - 8.0
|
||||
# - 8.1
|
||||
# - 8.2
|
||||
# - 8.3
|
||||
# - 8.4
|
||||
# - 9.0
|
||||
# - 9.1
|
||||
# - 9.1
|
||||
# - 9.2
|
||||
#- name: Ubuntu
|
||||
# versions:
|
||||
# - all
|
||||
# - lucid
|
||||
# - maverick
|
||||
# - natty
|
||||
# - oneiric
|
||||
# - precise
|
||||
# - quantal
|
||||
# - raring
|
||||
# - saucy
|
||||
# - trusty
|
||||
#- name: SLES
|
||||
# versions:
|
||||
# - all
|
||||
# - 10SP3
|
||||
# - 10SP4
|
||||
# - 11
|
||||
# - 11SP1
|
||||
# - 11SP2
|
||||
# - 11SP3
|
||||
#- name: GenericLinux
|
||||
# versions:
|
||||
# - all
|
||||
# - any
|
||||
#- name: Debian
|
||||
# versions:
|
||||
# - all
|
||||
# - etch
|
||||
# - lenny
|
||||
# - squeeze
|
||||
# - wheezy
|
||||
#
|
||||
# Below are all categories currently available. Just as with
|
||||
# the platforms above, uncomment those that apply to your role.
|
||||
#
|
||||
#categories:
|
||||
#- cloud
|
||||
#- cloud:ec2
|
||||
#- cloud:gce
|
||||
#- cloud:rax
|
||||
#- clustering
|
||||
#- database
|
||||
#- database:nosql
|
||||
#- database:sql
|
||||
#- development
|
||||
#- monitoring
|
||||
#- networking
|
||||
#- packaging
|
||||
#- system
|
||||
#- web
|
||||
dependencies: []
|
||||
# List your role dependencies here, one per line. Only
|
||||
# dependencies available via galaxy should be listed here.
|
||||
# Be sure to remove the '[]' above if you add dependencies
|
||||
# to this list.
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
---
|
||||
- include: pre_deployment/base_linux.yaml
|
||||
- include: pre_deployment/python.yaml
|
||||
- include: pre_deployment/mysql_db.yaml
|
||||
- include: pre_deployment/nginx.yaml
|
||||
- include: pre_deployment/supervisor.yaml
|
||||
- include: pre_deployment/web_data_folders.yaml
|
||||
- include: pre_deployment/nodejs.yaml
|
||||
|
||||
# TODO Add in globally defined values for webapp and virtualenv folders
|
|
@ -1,10 +0,0 @@
|
|||
---
|
||||
- hosts: all
|
||||
sudo: yes
|
||||
tasks:
|
||||
|
||||
- name: install vim
|
||||
apt: pkg=vim state=present
|
||||
|
||||
- name: configure vim
|
||||
copy: src=../config/base/_vimrc dest=/home/vagrant/.vimrc
|
|
@ -1,23 +0,0 @@
|
|||
---
|
||||
- hosts: all
|
||||
sudo: yes
|
||||
vars:
|
||||
databases:
|
||||
rookeries:
|
||||
username: rookeries
|
||||
password: system_admin
|
||||
tasks:
|
||||
|
||||
- name: setup MySQL server + Python dependencies
|
||||
apt: pkg={{ item }} state=present
|
||||
with_items:
|
||||
- mysql-server
|
||||
- python-mysqldb
|
||||
|
||||
- name: setup MySQL databases for rookeries.
|
||||
mysql_db: name={{ item.key }} state=present
|
||||
with_dict: databases
|
||||
|
||||
- name: add MySQL database users for rookeries.
|
||||
mysql_user: name={{ item.value.username }} password={{ item.value.password }} priv={{ item.key }}:ALL
|
||||
with_dict: databases
|
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
- hosts: all
|
||||
sudo: yes
|
||||
tasks:
|
||||
|
||||
- name: install nodejs + npm dependencies
|
||||
apt: pkg={{ item }} state=present
|
||||
with_items:
|
||||
- nodejs
|
||||
- npm
|
||||
|
||||
- name: link nodejs binary correctly
|
||||
file: src=/usr/bin/nodejs dest=/usr/bin/node state=link
|
||||
|
||||
- name: install coffeescript + less dependencies
|
||||
npm: name={{ item }} global=yes state=present
|
||||
with_items:
|
||||
- coffee-script
|
||||
- less
|
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
# tasks file for ansible-nginx-uwsgi-supervisor
|
||||
- include: python.yaml
|
||||
- include: nginx.yaml
|
||||
- include: supervisor.yaml
|
||||
- include: web_data_folders.yaml
|
||||
- include: uwsgi.yaml
|
||||
|
||||
# TODO Add in globally defined values for webapp and virtualenv folders
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# vars file for ansible-nginx-uwsgi-supervisor
|
Loading…
Reference in New Issue