Bladeren bron

:wrench: merge php-fpm & queue-worker container

Jeremy Zheng 1 jaar geleden
bovenliggende
commit
d7988a6fc9

+ 1 - 0
deploy/group_vars/all.yml

@@ -8,3 +8,4 @@ app_downloads: "{{ ansible_env.HOME }}/downloads"
 app_dashboard_base_path: "/pcd"
 app_postgresql_version: "16"
 app_open_search_version: "2.19.1"
+app_php_version: "8.1"

+ 12 - 0
deploy/mint.yml

@@ -37,6 +37,18 @@
       ansible.builtin.systemd:
         state: restarted
         name: postgresql
+
+- name: Setup mint background workers
+  hosts:
+    - task
+  roles:
+    - mint-workers
+
+- name: Setup mint php-fpm
+  hosts:
+    - fpm
+  roles:
+    - mint-php-fpm
 # FIXME
 # - name: Setup database
 #   hosts:

+ 19 - 0
deploy/roles/mint-php-fpm/tasks/main.yml

@@ -0,0 +1,19 @@
+- name: Upload php-fpm.sh
+  ansible.builtin.template:
+    src: launch.sh.j2
+    dest: "{{ app_deploy_target }}/scripts/php-fpm.sh"
+    mode: "0555"
+
+- name: Stop php-fpm worker
+  containers.podman.podman_container:
+    name: "{{ app_domain }}-fpm-{{ app_php_fpm_port }}"
+    state: absent
+
+- name: Start php-fpm worker
+  containers.podman.podman_container:
+    name: "{{ app_domain }}-fpm-{{ app_php_fpm_port }}"
+    image: "{{ app_mint_image_name }}"
+    command: "/srv/scripts/php-fpm.sh"
+    volumes:
+      - "{{ app_deploy_target }}:/srv"
+    auto_remove: true

+ 5 - 0
deploy/roles/mint-php-fpm/templates/launch.sh.j2

@@ -0,0 +1,5 @@
+#!/bin/sh
+
+set -i 's/^listen = /listen = {{ app_php_fpm_port }}/' /etc/php/{{ app_php_version }}/fpm/php-fpm.conf
+
+/usr/sbin/php-fpm{{ app_php_version }} --nodaemonize --fpm-config /etc/php/{{ app_php_version }}/fpm/php-fpm.conf

+ 30 - 0
deploy/roles/mint-v2.0/tasks/main.yml

@@ -35,3 +35,33 @@
 - name: Setup systemd services
   ansible.builtin.import_tasks: systemd.yml
 
+# https://laravel.com/docs/10.x/scheduling#running-the-scheduler
+- name: Upload scheduler service
+  become: true
+  ansible.builtin.template:
+    src: v2/scheduler.service.j2
+    dest: /usr/lib/systemd/system/scheduler.{{ app_domain }}.service
+    owner: root
+    group: root
+    mode: "0644"
+
+# https://wiki.archlinux.org/title/Systemd/Timers
+- name: Upload scheduler timer
+  become: true
+  ansible.builtin.template:
+    src: v2/scheduler.timer.j2
+    dest: /usr/lib/systemd/system/scheduler.{{ app_domain }}.timer
+    owner: root
+    group: root
+    mode: "0644"
+
+- name: Setup laravel queue workers
+  ansible.builtin.import_tasks: queue-workers.yml
+- name: Setup morus service
+  ansible.builtin.import_tasks: morus.yml
+
+- name: Setup lily service
+  ansible.builtin.import_tasks: lily.yml
+
+- name: Setup tulip service
+  ansible.builtin.import_tasks: tulip.yml

+ 1 - 40
deploy/roles/mint-v2.1/tasks/laravel.yml

@@ -24,48 +24,9 @@
 
 - name: Initialize vendors and configuration
   containers.podman.podman_container:
-    name: mint-initialize-vendors-configs
+    name: "{{ app_domain }}-initialize"
     image: "{{ app_mint_image_name }}"
     command: /srv/scripts/vendors.sh
     volumes:
       - "{{ app_deploy_target }}:/srv"
     auto_remove: true
-# - name: Setup third packages
-#   ansible.builtin.command:
-#     argv:
-#       - "{{ app_deploy_target }}/docker/mint/run.sh"
-#       - "{{ app_mint_image_name }}"
-#       - setup
-#     chdir: "{{ app_deploy_target }}/"
-#     creates: "{{ app_deploy_target }}/api-v8/public/node_modules"
-
-# # https://laravel.com/docs/10.x/scheduling#running-the-scheduler
-# - name: Upload scheduler service
-#   become: true
-#   ansible.builtin.template:
-#     src: v2/scheduler.service.j2
-#     dest: /usr/lib/systemd/system/scheduler.{{ app_domain }}.service
-#     owner: root
-#     group: root
-#     mode: "0644"
-
-# # https://wiki.archlinux.org/title/Systemd/Timers
-# - name: Upload scheduler timer
-#   become: true
-#   ansible.builtin.template:
-#     src: v2/scheduler.timer.j2
-#     dest: /usr/lib/systemd/system/scheduler.{{ app_domain }}.timer
-#     owner: root
-#     group: root
-#     mode: "0644"
-
-# - name: Setup laravel queue workers
-#   ansible.builtin.import_tasks: queue-workers.yml
-# - name: Setup morus service
-#   ansible.builtin.import_tasks: morus.yml
-
-# - name: Setup lily service
-#   ansible.builtin.import_tasks: lily.yml
-
-# - name: Setup tulip service
-#   ansible.builtin.import_tasks: tulip.yml

+ 14 - 0
deploy/roles/mint-workers/tasks/main.yml

@@ -0,0 +1,14 @@
+- name: Setup background worker
+  ansible.builtin.include_tasks: worker.yml
+  vars:
+    zone_name: mq
+  loop:
+    - discussion
+    - pr
+    - progress
+    - wbw.analyses
+    - export.pali.chapter
+    - export.article
+    - ai.translate
+  loop_control:
+    loop_var: worker_name

+ 12 - 0
deploy/roles/mint-workers/tasks/templates/worker.sh.j2

@@ -0,0 +1,12 @@
+#!/bin/bash
+
+set -e
+
+export WORK_DIR="/srv"
+
+export NVM_DIR="$HOME/.nvm"
+source "$NVM_DIR/nvm.sh"
+
+cd $WORK_DIR/api-v8/
+
+php artisan {{ zone_name }}:{{ worker_name }}

+ 19 - 0
deploy/roles/mint-workers/tasks/worker.yml

@@ -0,0 +1,19 @@
+- name: Upload script for worker-{{ zone_name }}-{{ worker_name }}
+  ansible.builtin.template:
+    src: worker.sh.j2
+    dest: "{{ app_deploy_target }}/scripts/worker-{{ zone_name }}-{{ worker_name }}.sh"
+    mode: "0555"
+
+- name: Stop {{ zone_name }}-{{ worker_name }}
+  containers.podman.podman_container:
+    name: "{{ app_domain }}-worker-{{ zone_name }}-{{ worker_name }}"
+    state: absent
+
+- name: Start {{ zone_name }}-{{ worker_name }}
+  containers.podman.podman_container:
+    name: "{{ app_domain }}-worker-{{ zone_name }}-{{ worker_name }}"
+    image: "{{ app_mint_image_name }}"
+    command: "/srv/scripts/worker-{{ zone_name }}-{{ worker_name }}.sh"
+    volumes:
+      - "{{ app_deploy_target }}:/srv"
+    # auto_remove: true