diff --git a/tasks/main.yml b/tasks/main.yml index ac0067f..584a6a2 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -5,5 +5,3 @@ - include: supervisor.yaml - include: web_data_folders.yaml - include: uwsgi.yaml - -# TODO Add in globally defined values for webapp and virtualenv folders diff --git a/tasks/nginx.yaml b/tasks/nginx.yaml index d3d5afa..3107f3e 100644 --- a/tasks/nginx.yaml +++ b/tasks/nginx.yaml @@ -1,39 +1,39 @@ --- -- sudo: yes - vars: - rookeries_nginx_conf: rookeries-uwsgi_nginx.conf - web_server_group: www-data - tasks: +- name: install nginx webserver + apt: pkg=nginx-full state=present + sudo: yes - - name: install nginx webserver - apt: pkg=nginx-full state=present +- name: configure nginx + copy: src=../config/nginx/{{ rookeries_nginx_conf }} dest=/etc/nginx/sites-available - - name: configure nginx - copy: src=../config/nginx/{{ rookeries_nginx_conf }} dest=/etc/nginx/sites-available +- name: enable the rookeries nginx configuration + file: state=link + src=/etc/nginx/sites-available/{{ rookeries_nginx_conf }} + path=/etc/nginx/sites-enabled/{{ rookeries_nginx_conf }} + sudo: yes - - name: enable the rookeries nginx configuration - file: state=link - src=/etc/nginx/sites-available/{{ rookeries_nginx_conf }} - path=/etc/nginx/sites-enabled/{{ rookeries_nginx_conf }} +- name: disable the default page configuration + file: state=absent path=/etc/nginx/sites-enabled/default + sudo: yes - - name: disable the default page configuration - file: state=absent path=/etc/nginx/sites-enabled/default +- name: restart nginx + service: name=nginx state=restarted + sudo: yes - - name: restart nginx - service: name=nginx state=restarted +- name: set permissions on nginx config + log directories + file: path={{ item }} state=directory + group={{ web_server_group }} mode=0755 + with_items: + - /var/log/nginx + - /etc/nginx + - /etc/nginx/sites-available + - /etc/nginx/sites-enabled + sudo: yes - - name: set permissions on nginx config + log directories - file: path={{ item }} state=directory - group={{ web_server_group }} mode=0755 - with_items: - - /var/log/nginx - - /etc/nginx - - /etc/nginx/sites-available - - /etc/nginx/sites-enabled - - - name: set permissions on nginx logs - file: path=/var/log/nginx/{{ item }} state=file - owner={{ web_server_group }} group={{ web_server_group }} mode=0644 - with_items: - - access.log - - error.log +- name: set permissions on nginx logs + file: path=/var/log/nginx/{{ item }} state=file + owner={{ web_server_group }} group={{ web_server_group }} mode=0644 + with_items: + - access.log + - error.log + sudo: yes diff --git a/tasks/supervisor.yaml b/tasks/supervisor.yaml index 53ca245..cc2b38d 100644 --- a/tasks/supervisor.yaml +++ b/tasks/supervisor.yaml @@ -1,29 +1,25 @@ --- -- sudo: yes - vars: - web_server_group: www-data - supervisor_configs: - - mailsink_supervisor.conf - - rookeries_supervisor.conf - tasks: +- name: install supervisord + apt: name=supervisor state=present + sudo: yes - - name: install supervisord - apt: name=supervisor state=present +- name: set permissions on supervisor config and log directories + file: path={{ item }} group={{ web_server_group }} state=directory mode=0755 + with_items: + - /etc/supervisor + - /etc/supervisor/conf.d + - /var/log/supervisor + sudo: yes - - name: set permissions on supervisor config and log directories - file: path={{ item }} group={{ web_server_group }} state=directory mode=0755 - with_items: - - /etc/supervisor - - /etc/supervisor/conf.d - - /var/log/supervisor +- name: modify supervisor configuration + ini_file: dest=/etc/supervisor/supervisord.conf section=unix_http_server + option={{ item.key }} value={{ item.value }} + with_dict: + chmod: "0770" + chown: root:{{ web_server_group }} + sudo: yes - - name: modify supervisor configuration - ini_file: dest=/etc/supervisor/supervisord.conf section=unix_http_server - option={{ item.key }} value={{ item.value }} - with_dict: - chmod: "0770" - chown: root:www-data - - - name: upload rookeries supervisor configuration to web server home - copy: src=../config/supervisor/{{ item }} dest=/etc/supervisor/conf.d - with_items: supervisor_configs +- name: upload rookeries supervisor configuration to web server home + copy: src=../config/supervisor/{{ item }} dest=/etc/supervisor/conf.d + with_items: supervisor_configs + sudo: yes diff --git a/tasks/uwsgi.yaml b/tasks/uwsgi.yaml index 6881ca5..0ed423d 100644 --- a/tasks/uwsgi.yaml +++ b/tasks/uwsgi.yaml @@ -1,17 +1,12 @@ --- -- vars: - web_server_home: /srv/www - web_server_group: www-data - uwsgi_venv: "{{ web_server_home }}/virtualenvs/uwsgi" - uwsgi_config: "{{ web_server_home }}/config/uwsgi" - rookeries_uwsgi_ini: rookeries-uwsgi.ini - tasks: +- name: install uwsgi server + pip: name=uwsgi virtualenv={{ uwsgi_venv }} version=2.0 + sudo: yes - - name: install uwsgi server - pip: name=uwsgi virtualenv={{ uwsgi_venv }} version=2.0 +- name: upload rookeries configuration + copy: src=../config/uwsgi/{{ rookeries_uwsgi_ini }} dest={{ uwsgi_config }} + sudo: yes - - name: upload rookeries configuration - copy: src=../config/uwsgi/{{ rookeries_uwsgi_ini }} dest={{ uwsgi_config }} - - - name: restart uwsgi server - supervisorctl: name=uwsgi state=restarted config=/etc/supervisor/supervisor.conf +- name: restart uwsgi server + supervisorctl: name=uwsgi state=restarted config=/etc/supervisor/supervisor.conf + sudo: yes diff --git a/tasks/web_data_folders.yaml b/tasks/web_data_folders.yaml index b7019f9..8017d04 100644 --- a/tasks/web_data_folders.yaml +++ b/tasks/web_data_folders.yaml @@ -1,33 +1,30 @@ --- -- sudo: yes - vars: - user: "{{ ansible_env.SUDO_USER }}" - web_app_home: /srv/www - web_server_group: www-data +- name: setup webapp deployment folder with the correct permissions + file: path={{ web_app_home }} state=directory owner={{ web_server_group }} group=www-data mode=0774 + sudo: yes - tasks: - - name: setup webapp deployment folder with the correct permissions - file: path={{ web_app_home }} state=directory owner={{ web_server_group }} group=www-data mode=0774 +- name: setup webapp deployment configuration + log folders with the correct permissions + file: path={{ web_app_home }}/{{ item }} state=directory + owner={{ web_server_group }} group={{ web_server_group }} mode=0774 + with_items: + - config + - config/uwsgi + - logs + - virtualenvs + sudo: yes - - name: setup webapp deployment configuration + log folders with the correct permissions - file: path={{ web_app_home }}/{{ item }} state=directory - owner={{ web_server_group }} group={{ web_server_group }} mode=0774 - with_items: - - config - - config/uwsgi - - logs - - virtualenvs +- name: setup webapp deployment configuration + log folders with the correct permissions + file: state=link + path={{ web_app_home }}/{{ item.value }} + src={{ item.key }} + owner={{ web_server_group }} group={{ web_server_group }} mode=0774 + with_dict: + /etc/nginx: config/nginx + /etc/supervisor: config/supervisor + /var/log/nginx: logs/nginx + /var/log/supervisor: logs/supervisor + sudo: yes - - name: setup webapp deployment configuration + log folders with the correct permissions - file: state=link - path={{ web_app_home }}/{{ item.value }} - src={{ item.key }} - owner={{ web_server_group }} group={{ web_server_group }} mode=0774 - with_dict: - /etc/nginx: config/nginx - /etc/supervisor: config/supervisor - /var/log/nginx: logs/nginx - /var/log/supervisor: logs/supervisor - - - name: add user to www-data - user: name={{ user }} append=yes groups={{ web_server_group }} +- name: add user to www-data + user: name={{ user }} append=yes groups={{ web_server_group }} + sudo: yes diff --git a/vars/main.yml b/vars/main.yml index 96727ee..b8fac10 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -1,2 +1,24 @@ --- # vars file for ansible-nginx-uwsgi-supervisor + +# TODO Make more configurable and flexible +# NGINX +rookeries_nginx_conf: rookeries-uwsgi_nginx.conf +web_server_group: www-data + +# Supervisor +# TODO Allow for multiple supervisord configurations +supervisor_configs: +# - mailsink_supervisor.conf + - rookeries_supervisor.conf + +web_server_home: /srv/www + +# UWSGI +uwsgi_venv: "{{ web_server_home }}/virtualenvs/uwsgi" +uwsgi_config: "{{ web_server_home }}/config/uwsgi" +rookeries_uwsgi_ini: rookeries-uwsgi.ini + +# Web folders +user: "{{ ansible_env.SUDO_USER }}" +web_app_home: /srv/www