set up cronjob and timer

This commit is contained in:
Julien Fastré 2024-12-30 13:19:45 +01:00
parent cf62dcc707
commit 07a9f4bf4d
Signed by: julienfastre
GPG Key ID: BDE2190974723FCB
6 changed files with 51 additions and 5 deletions

View File

@ -7,6 +7,10 @@
state: present
recreate: auto
- name: Reload systemd
ansible.builtin.systemd:
daemon_reload: true
# - name: Restart chill {{ item.chill_environment }}
# community.docker.docker_compose_v2:
# project_src: "{{ install_dir }}/{{ item['chill_environment'] }}"

View File

@ -66,3 +66,11 @@
group: "82"
mode: '0766'
state: directory
# racing condition: on first execution, this is not available...
#
# - name: Ensure systemd timer for cronjob is up
# ansible.builtin.systemd_service:
# name: "chill-cronjob@{{ item['chill_environment'] }}.timer"
# state: restarted
# enabled: true

View File

@ -40,6 +40,20 @@
- name: Install traefik
ansible.builtin.include_tasks: traefik.yml
- name: Install systemd services
ansible.builtin.template:
src: "systemd/{{ file }}"
dest: "/etc/systemd/system/{{ file }}"
owner: root
group: root
mode: '0766'
notify: Reload systemd
loop:
- chill-cronjob@.service
- chill-cronjob@.timer
loop_control:
loop_var: file
- name: Install individual chill
ansible.builtin.include_tasks: chill/main.yml
with_items: "{{ chills }}"

View File

@ -46,6 +46,7 @@ services:
post_start:
- command:
- rm
- -f
- "/var/www/app/config/packages/chill_doc_store.yaml"
user: root
@ -67,17 +68,17 @@ services:
- "-c"
- "touch /tmp/kill_me && bin/console messenger:stop-workers"
cron:
<<: *defaultApp
entrypoint: "/usr/bin/env"
command: ["bin/console", "chill:cron-job:execute", "-v"]
{% if item.add_postgres %}
database:
image: "{{ database_image }}"
env_file:
- postgres.env
environment:
POSTGRES_DB: ${POSTGRES_DB:-app}
# You should definitely change the password in production
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-!ChangeMe!}
POSTGRES_USER: ${POSTGRES_USER:-app}
volumes:
- ./docker/db/data:/var/lib/postgresql/data:rw
networks:

View File

@ -0,0 +1,9 @@
[Unit]
Description=Execute cron job for chill with environment %i
[Service]
User={{ as_user }}
ExecStart=/usr/bin/docker compose --file {{ install_dir }}/%i/compose.yaml up cron
Type=simple
# execute maximum 30 minutes
RuntimeMaxSec=1800

View File

@ -0,0 +1,10 @@
[Unit]
Description=Run chill cron-jobs
[Timer]
Unit=chill-cronjob@%i.service
OnCalendar=*-*-* *:0,15,30,45:00
RandomizedDelaySec=60
[Install]
WantedBy=multi-user.target