174 lines
4.1 KiB
YAML
174 lines
4.1 KiB
YAML
- name: Install dependencies
|
|
package:
|
|
name:
|
|
- git
|
|
- python3
|
|
- python3-dev
|
|
- py3-pip
|
|
- py3-virtualenv
|
|
- bash # for upgrade script
|
|
- build-base # to build psycopg if not available
|
|
- postgresql-dev # likewise
|
|
- uwsgi
|
|
- uwsgi-python3
|
|
- openldap-dev
|
|
|
|
- name: Create group for web service
|
|
group:
|
|
name: '{{ user }}'
|
|
system: yes
|
|
|
|
- name: Create user for web service
|
|
user:
|
|
name: '{{ user }}'
|
|
group: '{{ user }}'
|
|
home: '/srv/{{ user }}'
|
|
shell: /bin/sh
|
|
system: yes
|
|
register: user_info
|
|
|
|
- name: Clone web files
|
|
become: yes
|
|
become_user: "{{ user }}"
|
|
become_method: su
|
|
become_flags: "-s /bin/sh"
|
|
git:
|
|
repo: 'https://github.com/polz113/apis-ad-rilec'
|
|
dest: "{{ user_info.home }}/apis-rilec"
|
|
force: yes
|
|
notify: reload uwsgi
|
|
|
|
- name: Set django_app
|
|
set_fact:
|
|
django_app: "{{ user_info.home }}/apis-rilec/python/django/apis_rilec_fri/"
|
|
django_venv: "{{ user_info.home }}/venv/apis-rilec/"
|
|
public_root: "{{ user_info.home }}/www_data/apis-rilec/"
|
|
|
|
- name: Create directory for static files
|
|
file:
|
|
state: directory
|
|
owner: "{{ user }}"
|
|
path: "{{ public_root }}/static"
|
|
|
|
- name: Create directory for media
|
|
file:
|
|
state: directory
|
|
owner: "{{ user }}"
|
|
path: "{{ public_root }}/media"
|
|
|
|
- name: Install requirements
|
|
become: yes
|
|
become_user: "{{ user }}"
|
|
become_method: su
|
|
become_flags: '-s /bin/sh'
|
|
pip:
|
|
requirements: "{{ django_app }}/requirements.txt"
|
|
virtualenv: "{{ django_venv }}"
|
|
notify: restart uwsgi
|
|
|
|
- name: Install database driver
|
|
become: yes
|
|
become_user: "{{ user }}"
|
|
become_method: su
|
|
become_flags: '-s /bin/sh'
|
|
pip:
|
|
name: "psycopg"
|
|
virtualenv: "{{ django_venv }}"
|
|
notify: restart uwsgi
|
|
|
|
- name: Configure settings
|
|
template:
|
|
dest: "{{ django_app }}/apis_rilec_fri/.env"
|
|
src: "environment.j2"
|
|
owner: apis
|
|
group: apis
|
|
mode: 0600
|
|
force: yes
|
|
notify: restart uwsgi
|
|
|
|
- name: Run migrations
|
|
become: yes
|
|
become_user: '{{ user }}'
|
|
command:
|
|
cmd: '{{ django_venv }}/bin/python {{ django_app }}/manage.py migrate --noinput'
|
|
|
|
- name: Collect static files
|
|
command:
|
|
cmd: '{{ django_venv }}/bin/python {{ django_app }}/manage.py collectstatic --noinput'
|
|
|
|
- name: Create superuser / set password
|
|
become: yes
|
|
become_user: '{{ user }}'
|
|
command:
|
|
cmd: '{{ django_venv }}/bin/python {{ django_app }}/manage.py shell --interface python'
|
|
stdin: |
|
|
import sys
|
|
from django.contrib.auth.models import User
|
|
username = '{{ password.admin_user }}'
|
|
u, created = User.objects.get_or_create(username=username)
|
|
u.set_password('{{ password.admin_pass }}')
|
|
u.is_staff = True
|
|
u.is_superuser = True
|
|
u.save()
|
|
register: result
|
|
|
|
#- name: Create admin user
|
|
# shell: ". {{django_venv}}/bin/activate; cd {{ django_app }}; ./manage.py createsuperuser --noinput"
|
|
|
|
- name: Configure uwsgi
|
|
copy:
|
|
dest: /etc/uwsgi/
|
|
src: uwsgi.ini
|
|
notify: restart uwsgi
|
|
|
|
- name: Configure uwsgi instance
|
|
template:
|
|
dest: /etc/uwsgi/conf.d/apis-rilec.ini
|
|
src: apis-rilec.ini.j2
|
|
owner: apis
|
|
group: apis
|
|
|
|
- name: Enable uwsgi
|
|
service:
|
|
name: uwsgi
|
|
enabled: yes
|
|
state: started
|
|
|
|
- name: Configure nginx instance
|
|
template:
|
|
dest: /etc/nginx/http.d/apis-rilec.conf
|
|
src: nginx.conf.j2
|
|
notify: reload nginx
|
|
|
|
- name: Process data every day
|
|
cron:
|
|
name: "delete data older than 1 month"
|
|
job: ". {{django_venv}}/bin/activate; cd {{ django_app }}; ./manage.py clean -d 32"
|
|
user: apis
|
|
hour: "02"
|
|
minute: "15"
|
|
|
|
- name: Create data update script
|
|
template:
|
|
dest: "{{ user_info.home }}/apis_process_data.sh"
|
|
src: apis_process_data.sh.j2
|
|
mode: 0775
|
|
owner: apis
|
|
group: apis
|
|
|
|
- name: Periodically update data
|
|
cron:
|
|
name: "Process data from apis"
|
|
job: "{{ user_info.home }}/rilec_process_data.sh"
|
|
user: apis
|
|
hour: "19,7"
|
|
minute: "00"
|
|
|
|
- name: Periodically delete data older than 1 month
|
|
cron:
|
|
name: "delete data older than 1 month"
|
|
job: ". {{django_venv}}/bin/activate; cd {{ django_app }}; ./manage.py clean -d 32"
|
|
user: apis
|
|
hour: "02"
|
|
minute: "15"
|
|
|