|
new file 100644
|
|
|
---
|
|
|
|
|
|
- set_fact:
|
|
|
user: "web-{{ fqdn | replace('.', '_') }}"
|
|
|
home: "/var/www/{{ fqdn }}"
|
|
|
|
|
|
- name: Create WSGI website group
|
|
|
group: name="{{ user }}" gid="{{ uid }}" state=present
|
|
|
|
|
|
- name: Create home directory for the user (avoid populating with skeleton)
|
|
|
file: path="{{ home }}" state=directory
|
|
|
owner="{{ admin }}" group="{{ user }}" mode=2750
|
|
|
|
|
|
- name: Create WSGI website user
|
|
|
user: name="{{ user }}" uid="{{ uid }}" group="{{ user }}"
|
|
|
system=yes createhome=no state=present
|
|
|
|
|
|
- name: Add nginx user to website group
|
|
|
user: name="www-data" groups="{{ user }}" append="yes"
|
|
|
notify:
|
|
|
- Restart nginx
|
|
|
|
|
|
- name: Add admin to website group
|
|
|
user: name="{{ admin }}" groups="{{ user }}" append="yes"
|
|
|
|
|
|
- name: Create directory for storing socket file
|
|
|
file: path="/var/run/wsgi/{{ fqdn }}" state="directory"
|
|
|
owner="{{ user }}" group="www-data" mode="750"
|
|
|
|
|
|
- name: Install extra packages for website
|
|
|
apt: name="{{ item }}" state=present
|
|
|
with_items: packages
|
|
|
|
|
|
- name: Create directory for storing the Python virtual environment
|
|
|
file: path="{{ home }}/virtualenv" state=directory
|
|
|
owner="{{ admin }}" group="{{ user }}" mode="2750"
|
|
|
|
|
|
- name: Create Python virtual environment
|
|
|
sudo_user: "{{ admin }}"
|
|
|
command: /usr/bin/virtualenv "{{ home }}/virtualenv" creates="{{ home }}/virtualenv/bin/activate"
|
|
|
|
|
|
- name: Create directory where virtualenvs will be symlinked to
|
|
|
sudo_user: "{{ admin }}"
|
|
|
file: path="~/.virtualenvs" state=directory mode=750
|
|
|
|
|
|
- name: Create convenience symlink for Python virtual environment wrapper utility
|
|
|
sudo_user: "{{ admin }}"
|
|
|
file: src="{{ home }}/virtualenv" dest="~/.virtualenvs/{{ fqdn }}" state=link
|
|
|
|
|
|
- name: Deploy virtualenv wrapper
|
|
|
template: src="venv_exec.j2" dest="{{ home }}/virtualenv/bin/exec"
|
|
|
owner="{{ admin }}" group="{{ user }}" mode="750"
|
|
|
|
|
|
- name: Install Gunicorn in Python virtual environment
|
|
|
sudo_user: "{{ admin }}"
|
|
|
pip: name=gunicorn state=present virtualenv="{{ home }}/virtualenv"
|
|
|
|
|
|
- name: Install additional packages in Python virtual environment
|
|
|
sudo_user: "{{ admin }}"
|
|
|
pip: name="{{ item }}" state=present virtualenv="{{ home }}/virtualenv"
|
|
|
with_items: virtualenv_packages
|
|
|
|
|
|
- name: Deploy systemd socket configuration for website
|
|
|
template: src="systemd_wsgi_website.socket.j2" dest="/etc/systemd/system/{{ fqdn }}.socket"
|
|
|
owner=root group=root mode=644
|
|
|
notify:
|
|
|
- Reload systemd
|
|
|
- Restart website
|
|
|
|
|
|
- name: Deploy systemd service configuration for website
|
|
|
template: src="systemd_wsgi_website.service.j2" dest="/etc/systemd/system/{{ fqdn }}.service"
|
|
|
owner=root group=root mode=644
|
|
|
notify:
|
|
|
- Reload systemd
|
|
|
- Restart website
|
|
|
|
|
|
- name: Enable the website service
|
|
|
service: name="{{ fqdn }}" enabled=yes state=started
|
|
|
|
|
|
- name: Create directory where static files can be served from
|
|
|
file: path="{{ home }}/htdocs/" state=directory
|
|
|
owner="{{ admin }}" group="{{ user }}" mode="2750"
|
|
|
|
|
|
- name: Deploy nginx configuration file for website
|
|
|
template: src="nginx_site.j2" dest="/etc/nginx/sites-available/{{ fqdn }}"
|
|
|
owner=root group=root mode=640 validate="/usr/local/bin/nginx_verify_site.sh -n '{{ fqdn }}' %s"
|
|
|
notify:
|
|
|
- Restart nginx
|
|
|
|
|
|
- name: Enable nginx website
|
|
|
file: src="/etc/nginx/sites-available/{{ fqdn }}" dest="/etc/nginx/sites-enabled/{{ fqdn }}"
|
|
|
state=link
|
|
|
notify:
|
|
|
- Restart nginx
|