infra/roles/pretalx/tasks/package.yml

270 lines
6.4 KiB
YAML

---
- name: Create a pretalx user
user:
name: "{{ pretalx_system_user }}"
state: present
system: true
tags:
- pretalx
- name: Create required directories
file:
path: "{{ item }}"
state: directory
owner: "{{ pretalx_system_user }}"
group: "{{ pretalx_webserver_group }}"
mode: "0750"
recurse: true
with_items:
- "{{ pretalx_staticfiles_directory }}"
- "{{ pretalx_data_dir }}"
- "{{ pretalx_media_dir }}"
- "{{ pretalx_virtualenv }}"
tags:
- pretalx
- name: Install redis client
pip:
name: django_redis
state: latest # noqa package-latest
virtualenv: "{{ pretalx_virtualenv }}"
become: true
become_user: "{{ pretalx_system_user }}"
when: pretalx_redis or pretalx_celery
tags:
- pretalx
- pretalx-install
- name: Install gunicorn
pip:
name: gunicorn
state: latest # noqa package-latest
virtualenv: "{{ pretalx_virtualenv }}"
become: true
become_user: "{{ pretalx_system_user }}"
tags:
- pretalx
- pretalx-install
- name: Configure pretalx
template:
src: pretalx.cfg.j2
dest: "{{ pretalx_system_home }}/.pretalx.cfg"
mode: "0600"
notify:
- Restart pretalx service
- Restart worker service
- Run pretalx migrations
- Rebuild pretalx files
- Compile pretalx styles
become: true
become_user: "{{ pretalx_system_user }}"
tags:
- pretalx
- pretalxupdate
- name: Set pretalx_extra to "[postgres]" if using postgresql database
set_fact:
pretalx_extra: "[postgres]"
when: pretalx_database_backend == 'postgresql'
tags:
- pretalx
- pretalxupdate
- name: Set pretalx_extra to "[mysql]" if using mysql database
set_fact:
pretalx_extra: "[mysql]"
when: pretalx_database_backend == 'mysql'
tags:
- pretalx
- pretalxupdate
- name: Set pretalx_extra to "" if using other database
set_fact:
pretalx_extra: ""
when: pretalx_extra is not defined
tags:
- pretalx
- pretalxupdate
- name: Install pretalx (latest)
pip:
name: "pretalx{{ pretalx_extra }}"
state: latest # noqa package-latest
virtualenv: "{{ pretalx_virtualenv }}"
notify:
- Restart pretalx service
- Restart worker service
- Run pretalx migrations
- Run pretalx static collection
- Copy static manifest
- Rebuild pretalx files
- Compile pretalx styles
- Initialize pretalx
when: (pretalx_version == 'latest') and not (pretalx_git_version)
become: true
become_user: "{{ pretalx_system_user }}"
tags:
- pretalx
- pretalxupdate
- name: Install pretalx (versioned)
pip:
name: "pretalx{{ pretalx_extra }}"
version: "{{ pretalx_version }}" # noqa package-lastest
virtualenv: "{{ pretalx_virtualenv }}"
notify:
- Restart pretalx service
- Restart worker service
- Run pretalx migrations
- Run pretalx static collection
- Copy static manifest
- Rebuild pretalx files
- Compile pretalx styles
- Initialize pretalx
when: (pretalx_version != 'latest') and not pretalx_git_version
become: true
become_user: "{{ pretalx_system_user }}"
tags:
- pretalx
- pretalxupdate
- name: Install pretalx (git)
pip:
name: "git+{{ pretalx_git_url }}@{{ pretalx_git_version }}#egg=pretalx{{ pretalx_extra }}"
state: forcereinstall
virtualenv: "{{ pretalx_virtualenv }}"
notify:
- Restart pretalx service
- Restart worker service
- Run pretalx migrations
- Run pretalx static collection
- Copy static manifest
- Rebuild pretalx files
- Compile pretalx styles
- Initialize pretalx
when: pretalx_git_version | length > 0
become: true
become_user: "{{ pretalx_system_user }}"
changed_when: true
tags:
- pretalx
- pretalxupdate
- name: Make sure plugin directory exists
file:
path: "{{ pretalx_system_home }}/plugins"
state: directory
owner: "{{ pretalx_system_user }}"
recurse: true
when: pretalx_plugins
tags:
- pretalx
- name: Install pretalx plugins
git:
repo: "{{ item.repository }}"
dest: "{{ pretalx_system_home }}/plugins/{{ item.name }}"
version: "{{ item.version if item.version is defined else 'main' }}"
key_file: "{{ pretalx_system_home }}/.ssh/id_rsa"
accept_hostkey: true
become: true
become_user: "{{ pretalx_system_user }}"
with_items: "{{ pretalx_plugins }}"
when: pretalx_plugins
notify:
- Restart pretalx service
- Restart worker service
- Run pretalx migrations
- Run pretalx static collection
- Copy static manifest
- Rebuild pretalx files
- Compile pretalx styles
- Install pretalx plugins
tags:
- pretalx
- pretalxupdate
- name: Install systemd socket
template:
src: pretalx.socket.j2
dest: /etc/systemd/system/pretalx@{{ pretalx_instance_identifier }}.socket
mode: "0644"
notify:
- Reload systemd services
- Restart pretalx socket
tags:
- pretalx
- name: Install systemd service
template:
src: pretalx.service.j2
dest: /etc/systemd/system/pretalx@{{ pretalx_instance_identifier }}.service
mode: "0644"
notify:
- Reload systemd services
- Restart pretalx service
- Restart worker service
tags:
- pretalx
- name: Install worker service
template:
src: pretalx-worker.service.j2
dest: /etc/systemd/system/pretalx-worker@{{ pretalx_instance_identifier }}.service
mode: "0644"
notify:
- Reload systemd services
- Restart worker service
when: pretalx_celery
tags:
- pretalx
- name: Start pretalx socket
service:
name: pretalx@{{ pretalx_instance_identifier }}.socket
state: started
enabled: true
tags:
- pretalx
- name: Start systemd service
service:
name: pretalx@{{ pretalx_instance_identifier }}
state: started
enabled: true
tags:
- pretalx
- name: Start worker service
service:
name: pretalx-worker@{{ pretalx_instance_identifier }}
state: started
enabled: true
when: pretalx_celery
tags:
- pretalx
- name: Install nginx config
template:
src: nginx.conf
dest: "{{ pretalx_nginx_path }}/pretalx_{{ pretalx_instance_identifier }}.conf"
mode: "0644"
when: pretalx_nginx
notify:
- Reload nginx
tags:
- nginx
- pretalx
- pretalxnginx
- name: Install runperiodic cronjob
cron:
minute: "40"
name: Run pretalx{{ pretalx_instance_identifier }} periodic task
user: "{{ pretalx_system_user }}"
job: "{{ pretalx_python }} -m pretalx runperiodic"
when: pretalx_cron
tags:
- pretalx