mirror of
https://github.com/2martens/cloud-configuration.git
synced 2026-10-17 16:46:51 +02:00
feat: Add pretix role
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
---
|
||||
pip_executable: pip3.13
|
||||
pretix_currency: EUR
|
||||
python_executable: python3.13
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
dependencies:
|
||||
- role: postgresql
|
||||
- role: redis
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
- name: Create DB user password
|
||||
ansible.builtin.command:
|
||||
cmd: openssl rand -hex 32
|
||||
register: pretix_db_password
|
||||
changed_when: false
|
||||
- name: Create DB user
|
||||
community.postgresql.postgresql_user:
|
||||
name: "{{ ssh_user }}_pretix"
|
||||
password: "{{ pretix_db_password.stdout }}"
|
||||
state: present
|
||||
- name: Create database
|
||||
community.postgresql.postgresql_db:
|
||||
name: "{{ ssh_user }}_pretix"
|
||||
owner: "{{ ssh_user }}_pretix"
|
||||
encoding: UTF-8
|
||||
template: template0
|
||||
comment: Database for pretix
|
||||
state: present
|
||||
register: pretix_db
|
||||
@@ -0,0 +1,16 @@
|
||||
---
|
||||
- name: List domains
|
||||
ansible.builtin.command: uberspace web domain list
|
||||
changed_when: false
|
||||
register: domains
|
||||
- name: Set up domain
|
||||
when: domains.stdout.find(pretix_domain) == -1
|
||||
block:
|
||||
- name: Add domain
|
||||
ansible.builtin.command: uberspace web domain add {{ pretix_domain }}
|
||||
register: new_domain
|
||||
changed_when: true
|
||||
- name: Print out important information
|
||||
changed_when: false
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ new_domain.stdout }}"
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
- name: Create database
|
||||
ansible.builtin.import_tasks: database.yaml
|
||||
- name: Set up domain
|
||||
ansible.builtin.import_tasks: domain.yaml
|
||||
- name: Set up pretix
|
||||
ansible.builtin.import_tasks: setup.yaml
|
||||
- name: Configure pretix web backend
|
||||
ansible.builtin.command:
|
||||
cmd: uberspace web backend set / --http --port 9000
|
||||
- name: Configure static files
|
||||
ansible.builtin.command:
|
||||
cmd: uberspace web backend set /static --apache
|
||||
- name: Configure media files
|
||||
ansible.builtin.command:
|
||||
cmd: uberspace web backend set /media --apache
|
||||
- name: Set up cronjob
|
||||
ansible.builtin.cron:
|
||||
name: pretix periodic
|
||||
minute: "18,48"
|
||||
job: "cd ~/pretix_data && {{ python_executable }} -m pretix runperiodic"
|
||||
state: present
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
- name: Create data folder
|
||||
ansible.builtin.file:
|
||||
state: directory
|
||||
path: /home/{{ ssh_user }}/pretix_data
|
||||
owner: "{{ ssh_user }}"
|
||||
group: "{{ ssh_user }}"
|
||||
mode: "755"
|
||||
- name: Install pretix
|
||||
ansible.builtin.pip:
|
||||
executable: "{{ pip_executable }}"
|
||||
name:
|
||||
- pretix
|
||||
- gunicorn
|
||||
extra_args: --user
|
||||
- name: Create config file
|
||||
ansible.builtin.template:
|
||||
src: pretix.cfg.j2
|
||||
dest: /home/{{ ssh_user }}/.pretix.cfg
|
||||
owner: "{{ ssh_user }}"
|
||||
group: "{{ ssh_user }}"
|
||||
mode: "600"
|
||||
- name: Populate database
|
||||
ansible.builtin.command:
|
||||
cmd: "{{ python_executable }} -m pretix migrate"
|
||||
when: pretix_db.changed
|
||||
- name: Prepare static files
|
||||
ansible.builtin.command:
|
||||
cmd: "{{ python_executable }} -m pretix rebuild"
|
||||
- name: Move static files to Apache
|
||||
ansible.builtin.copy:
|
||||
remote_src: true
|
||||
src: /home/{{ ssh_user }}/.local/lib/{{ python_executable }}/site-packages/pretix/static.dist/
|
||||
dest: /var/www/virtual/{{ ssh_user }}/html/static
|
||||
owner: "{{ ssh_user }}"
|
||||
group: "{{ ssh_user}}"
|
||||
mode: "755"
|
||||
- name: Create service
|
||||
ansible.builtin.template:
|
||||
src: etc/services.d/pretix.ini.j2
|
||||
dest: /home/{{ ssh_user }}/etc/services.d/pretix.ini
|
||||
owner: "{{ ssh_user }}"
|
||||
group: "{{ ssh_user }}"
|
||||
mode: "644"
|
||||
- name: Start pretix
|
||||
community.general.supervisorctl:
|
||||
state: started
|
||||
name: pretix
|
||||
@@ -0,0 +1,13 @@
|
||||
[program:pretix]
|
||||
command=gunicorn --reload --preload --bind 0.0.0.0:9000 --workers 2 pretix.wsgi --name pretix --max-requests 1200 --max-requests-jitter 50
|
||||
directory=%(ENV_HOME)s/pretix_data
|
||||
autostart=true
|
||||
autorestart=true
|
||||
stopsignal=INT
|
||||
|
||||
[program:pretix_worker]
|
||||
command=celery -A pretix.celery_app worker -l info --concurrency 1
|
||||
directory=%(ENV_HOME)s/pretix_data
|
||||
autostart=true
|
||||
autorestart=true
|
||||
stopsignal=INT
|
||||
@@ -0,0 +1,26 @@
|
||||
[pretix]
|
||||
instance_name={{ pretix_instance_name }}
|
||||
url=https://{{ domain }}
|
||||
currency={{ pretix_currency }}
|
||||
datadir=/home/{{ ssh_user }}/pretix_data
|
||||
trust_x_forwarded_proto=on
|
||||
|
||||
[database]
|
||||
backend=postgresql
|
||||
name={{ ssh_user }}_pretix
|
||||
user={{ ssh_user }}_pretix
|
||||
password={{ pretix_db_password.stdout }}
|
||||
host=localhost
|
||||
port=5432
|
||||
|
||||
[celery]
|
||||
broker=redis+socket:///home/{{ ssh_user }}/.redis/sock
|
||||
backend=redis+socket:///home/{{ ssh_user }}/.redis/sock
|
||||
|
||||
[mail]
|
||||
from={{ mail_user }}
|
||||
host={{ mail_server }}
|
||||
user={{ mail_user }}
|
||||
password={{ mail_password }}
|
||||
port=587
|
||||
tls=on
|
||||
Reference in New Issue
Block a user