Add role for apis-rilec
This commit is contained in:
parent
61d5b4b6d8
commit
216deda916
9 changed files with 293 additions and 0 deletions
174
roles/rilec/tasks/main.yml
Normal file
174
roles/rilec/tasks/main.yml
Normal file
|
|
@ -0,0 +1,174 @@
|
|||
- 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"
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue