Browse Source

:bug: fix container starter

Jeremy Zheng 1 year ago
parent
commit
25ad25cd1c

+ 1 - 1
deploy/group_vars/all.yml

@@ -2,7 +2,7 @@ ansible_user: "deploy"
 ansible_python_interpreter: /usr/bin/python3
 ansible_ssh_private_key_file: "{{ inventory_dir }}/.ssh/id_ed25519"
 
-app_deploy_target: "/mnt/{{ app_domain }}/mint-{{ mint_version }}"
+app_deploy_target: "/srv/{{ app_domain }}/mint-{{ mint_version }}"
 app_downloads: "{{ ansible_env.HOME }}/downloads"
 
 app_dashboard_base_path: "/pcd"

+ 42 - 28
deploy/mint.yml

@@ -8,8 +8,50 @@
     - web
     - fpm
     - task
+    - fort
   roles:
     - mint-v2.1
+
+- name: Setup postgresql pali t-search
+  hosts:
+    - db
+  tasks:
+    - name: Upload pali.stop
+      become: true
+      ansible.builtin.copy:
+        dest: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/"
+        src: "{{ playbook_dir }}/tsearch_data/pali.stop"
+        owner: root
+        group: root
+        mode: "0444"
+    - name: Upload pali.syn
+      become: true
+      ansible.builtin.copy:
+        dest: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/"
+        src: "{{ playbook_dir }}/tsearch_data/pali.syn"
+        owner: root
+        group: root
+        mode: "0444"
+    - name: Restart postgresql server
+      become: true
+      ansible.builtin.systemd:
+        state: restarted
+        name: postgresql
+# FIXME
+# - name: Setup database
+#   hosts:
+#     - fort
+#   tasks:
+#     - name: Run all of outstanding migrations
+#       ansible.builtin.command:
+#         argv:
+#           - "{{ app_deploy_target }}/docker/mint/run.sh"
+#           - "{{ app_mint_image_name }}"
+#           - db-migrate
+#         chdir: "{{ app_deploy_target }}/"
+#       register: mint_db_migrate_output
+#       changed_when: mint_db_migrate_output.rc != 0
+
 # - name: Build backend v8
 #   hosts: fort
 #   roles:
@@ -28,34 +70,6 @@
 #   roles:
 #     - mint-v2
 
-# - name: Setup pali.syn
-#   hosts:
-#     - db
-#   tasks:
-#     - name: Upload pali.stop
-#       become: true
-#       ansible.builtin.copy:
-#         dest: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/"
-#         src: "{{ playbook_dir }}/../dashboard-v4/rpc/tulip/tulip/dictionary/pali.stop"
-#         owner: root
-#         group: root
-#         mode: "0644"
-#         creates: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/pali.stop"
-#     - name: Upload pali.syn
-#       become: true
-#       ansible.builtin.copy:
-#         dest: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/"
-#         src: "{{ playbook_dir }}/../dashboard-v4/rpc/tulip/tulip/dictionary/pali.syn"
-#         owner: root
-#         group: root
-#         mode: "0644"
-#         creates: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/pali.syn"
-#     - name: Restart postgresql server
-#       become: true
-#       ansible.builtin.systemd:
-#         state: restarted
-#         name: postgresql
-
 # - name: Setup backend servers
 #   hosts:
 #     - web

+ 0 - 49
deploy/roles/mint-v2.1/files/launch.sh

@@ -1,49 +0,0 @@
-#!/bin/bash
-
-set -e
-
-export USAGE="USAGE: $0 COMMAND"
-
-if [ "$#" -lt 1 ]; then
-    echo $USAGE
-    exit 1
-fi
-
-export WORK_DIR="/srv"
-
-export NVM_DIR="$HOME/.nvm"
-source "$NVM_DIR/nvm.sh"
-
-if [ "$1" == "setup" ]; then
-    cd $WORK_DIR/api-v8/
-    echo "install v2 laravel vendors"
-    composer update --optimize-autoloader --no-dev
-    echo "install v2 nodejs packages"
-    npm install --production
-
-    cd $WORK_DIR/api-v8/public/
-    echo "install v1 vendors"
-    composer update --optimize-autoloader --no-dev
-    echo "install v1 nodejs packages"
-    npm install --production
-
-    echo "check file permissions"
-    cd $WORK_DIR/
-    chown -R www-data:www-data bootstrap/cache storage
-
-    cd $WORK_DIR/
-    echo "caching configuration "
-    su -c php artisan config:cache www-data
-    echo "caching events"
-    su -c php artisan event:cache www-data
-    echo "caching "
-    su -c php artisan www-data
-    echo "caching routes"
-    su -c php artisan route:cache www-data
-    echo "caching views"
-    su -c php artisan view:cache www-data
-else
-    $@
-fi
-
-exit 0

+ 35 - 44
deploy/roles/mint-v2.1/tasks/laravel-v8.yml

@@ -1,18 +1,3 @@
-- name: Upload launch.sh
-  ansible.builtin.copy:
-    src: launch.sh
-    dest: "{{ app_deploy_target }}/scripts/"
-    mode: "0555"
-
-- 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"
-
 - name: Upload .env(v2)
   ansible.builtin.template:
     src: v2/env.j2
@@ -30,35 +15,41 @@
     src: v1/config.js.j2
     dest: "{{ app_deploy_target }}/api-v8/public/app/config.js"
     mode: "0444"
-
-- name: Setup sqlite3 db for v1
-  ansible.builtin.file:
-    src: /mnt/{{ app_domain }}/shared/appdata
-    dest: "{{ app_deploy_target }}/api-v8/storage/app/data"
-    state: link
-
-# 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 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"
+# - name: Upload launch.sh
+#   ansible.builtin.copy:
+#     src: launch.sh
+#     dest: "{{ app_deploy_target }}/scripts/"
+#     mode: "0555"
+# # 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
 

+ 7 - 14
deploy/roles/mint-v2.1/tasks/main.yml

@@ -1,28 +1,21 @@
-- name: Create www folder
-  become: true
-  ansible.builtin.file:
-    path: "/mnt/{{ app_domain }}"
-    state: directory
-    owner: "{{ ansible_user }}"
-    mode: "0755"
-
 - name: Download source code
   ansible.builtin.unarchive:
     src: https://github.com/iapt-platform/mint/archive/{{ mint_version }}.zip
-    dest: "/mnt/{{ app_domain }}"
+    dest: "{{ app_deploy_target | dirname }}"
     remote_src: true
     creates: "{{ app_deploy_target }}"
 
-# - name: Upload shared
-#   ansible.posix.synchronize:
-#     src: "{{ playbook_dir }}/shared"
-#     dest: "/mnt/{{ app_domain }}/shared"
-
 - name: Upload dashboard-v4 dist
   ansible.posix.synchronize:
     src: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard/dist-{{ mint_version }}/"
     dest: "{{ app_deploy_target }}/dashboard-v4/dashboard/dist/"
 
+- name: Upload docker shell script
+  ansible.builtin.template:
+    src: containers/shell.sh.j2
+    dest: "{{ app_deploy_target }}/scripts/shell.sh"
+    mode: "0555"
+
 - name: Setup laravel
   ansible.builtin.import_tasks: laravel-v8.yml
 

+ 29 - 18
deploy/roles/mint-v2.1/tasks/queue-workers.yml

@@ -1,65 +1,76 @@
-- name: upload {{ action }} worker service
+- name: upload {{ name }} worker service
   become: true
   template:
     src: v2/queue-worker.service.j2
-    dest: /usr/lib/systemd/system/{{ action }}.worker.{{ app_domain }}.service
+    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
     owner: root
     group: root
     mode: "0644"
   vars:
-    action: "discussion"
+    name: "discussion"
 
-- name: upload {{ action }} worker service
+- name: upload {{ name }} worker service
   become: true
   template:
     src: v2/queue-worker.service.j2
-    dest: /usr/lib/systemd/system/{{ action }}.worker.{{ app_domain }}.service
+    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
     owner: root
     group: root
     mode: "0644"
   vars:
-    action: "pr"
+    name: "pr"
 
-- name: Upload {{ action }} worker service
+- name: Upload {{ name }} worker service
   become: true
   template:
     src: v2/queue-worker.service.j2
-    dest: /usr/lib/systemd/system/{{ action }}.worker.{{ app_domain }}.service
+    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
     owner: root
     group: root
     mode: "0644"
   vars:
-    action: "progress"
+    name: "progress"
 
-- name: Upload {{ action }} worker service
+- name: Upload {{ name }} worker service
   become: true
   template:
     src: v2/queue-worker.service.j2
-    dest: /usr/lib/systemd/system/{{ action }}.worker.{{ app_domain }}.service
+    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
     owner: root
     group: root
     mode: "0644"
   vars:
-    action: "wbw.analyses"
+    name: "wbw.analyses"
 
-- name: upload {{ action }} worker service
+- name: upload {{ name }} worker service
   become: true
   template:
     src: v2/queue-worker.service.j2
-    dest: /usr/lib/systemd/system/{{ action }}.worker.{{ app_domain }}.service
+    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
     owner: root
     group: root
     mode: "0644"
   vars:
-    action: "export.pali.chapter"
+    name: "export.pali.chapter"
 
-- name: upload {{ action }} worker service
+- name: Upload {{ name }} worker service
   become: true
   template:
     src: v2/queue-worker.service.j2
-    dest: /usr/lib/systemd/system/{{ action }}.worker.{{ app_domain }}.service
+    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
     owner: root
     group: root
     mode: "0644"
   vars:
-    action: "export.article"
+    name: "export.article"
+
+- name: Upload {{ name }} worker service
+  become: true
+  template:
+    src: v2/queue-worker.service.j2
+    dest: /usr/lib/systemd/system/{{ name }}.worker.{{ app_domain }}.service
+    owner: root
+    group: root
+    mode: "0644"
+  vars:
+    name: "ai.translate"

+ 3 - 0
deploy/roles/mint-v2.1/templates/containers/shell.sh.j2

@@ -0,0 +1,3 @@
+#!/bin/sh
+
+podman run --rm -it --events-backend=file --hostname=mint --network host -v {{ app_deploy_target }}:/srv:z {{ app_mint_image_name }} /bin/bash -l

+ 0 - 17
deploy/roles/mint-v2.1/templates/docker.sh.j2

@@ -1,17 +0,0 @@
-#!/bin/bash
-
-set -e
-
-export USAGE="USAGE: $0 setup"
-
-if [ "$#" -ne 1 ]; then
-    echo $USAGE
-    exit 1
-fi
-
-export WORK_DIR="/srv"
-
-export NVM_DIR="$HOME/.nvm"
-source "$NVM_DIR/nvm.sh"
-
-exit 0

+ 2 - 2
deploy/roles/mint-v2.1/templates/v2/queue-worker.service.j2

@@ -1,10 +1,10 @@
 [Unit]
-Description=Mint {{ action }} worker for {{ app_domain }}
+Description=Mint {{ name }} worker for {{ app_domain }}
 After=network.target
 
 [Service]
 Type=simple
-ExecStart=/usr/bin/php artisan mq:{{ action }}
+ExecStart=/usr/bin/php artisan mq:{{ name }}
 WorkingDirectory={{ app_deploy_target }}
 User=www-data
 Group=www-data

+ 0 - 0
dashboard-v4/rpc/tulip/tulip/dictionary/pali.stop → deploy/tsearch_data/pali.stop


+ 0 - 0
dashboard-v4/rpc/tulip/tulip/dictionary/pali.syn → deploy/tsearch_data/pali.syn


+ 0 - 20
docker/mint/run.sh

@@ -1,20 +0,0 @@
-#!/bin/bash
-
-set -e
-
-export USAGE="USAGE: $0 MINT_IMAGE COMMAND"
-
-if [[ "$#" -lt 2 ]]; then
-    echo $USAGE
-    exit 2
-fi
-
-export LAUNCH_MINT_CONTAINER="podman run --rm -it --events-backend=file --hostname=mint --network host -v $PWD:/srv:z $1"
-
-if [ "$2" == "shell" ]; then
-    $LAUNCH_MINT_CONTAINER /bin/bash
-else
-    $LAUNCH_MINT_CONTAINER /bin/bash -lc "/srv/scripts/launch.sh $2"
-fi
-
-exit 0