00_core.ymlΒΆ

---
- include_tasks: utils/once/flag.yml

- name: "🧩 For '{{ application_id }}': load docker and compose"
  include_role:
    name: sys-stk-backend
  vars:
    compose_handlers_flush: false

- name: "βœ… Ensure volumes directory exists"
  ansible.builtin.file:
    path: "{{ lookup('container', application_id, 'directories.volumes') }}"
    state: directory
    mode: "0755"

- name: "πŸ“ Create shared object-store network for '{{ application_id }}'"
  include_tasks: "{{ lookup('path_absolute', 'roles/sys-svc-compose/tasks/utils/network/create.yml') }}"
  vars:
    network_role_id: "{{ application_id }}"

- name: "πŸ“„ Render SeaweedFS S3 identities config"
  stack_host_template:
    src: s3.json.j2
    dest: "{{ SEAWEEDFS_S3_CONFIG_PATH }}"
  notify:
    - compose-up
    - container-recreate
  no_log: "{{ MASK_CREDENTIALS_IN_LOGS | bool }}"

- name: "▢️ Start the SeaweedFS stack"
  ansible.builtin.meta: flush_handlers

- name: "πŸ“‚ Include role sys-stk-front-proxy for '{{ SEAWEEDFS_S3_DOMAIN }}'"
  include_role:
    name: sys-stk-front-proxy
  vars:
    domain: "{{ SEAWEEDFS_S3_DOMAIN }}"
    http_port: "{{ SEAWEEDFS_S3_PORT_PUBLIC }}"

- name: "πŸ” Converge every consumer bucket's policy once the S3 gateway answers"
  when: IS_STACK_HOST | bool
  block:
    - name: "⏳ Wait until the SeaweedFS S3 gateway answers"
      ansible.builtin.shell: >
        container exec {{ SEAWEEDFS_CONTAINER_ADDRESS }}
        wget -q -O - http://127.0.0.1:{{ SEAWEEDFS_S3_PORT_INTERNAL }}/status
      args:
        executable: /bin/bash
      register: _seaweedfs_ready
      retries: 30
      delay: 5
      until: _seaweedfs_ready.rc == 0
      changed_when: false

    - name: "πŸ“‹ List SeaweedFS buckets"
      include_tasks: utils/bucket/list.yml

    - name: "πŸ” Converge the bucket policy of each consumer whose bucket exists"
      include_tasks: utils/bucket/policy.yml
      loop: "{{ lookup('objstore_consumers', 'seaweedfs') }}"
      loop_control:
        loop_var: seaweedfs_bucket_policy_consumer
      when: lookup('objstore', seaweedfs_bucket_policy_consumer, 'bucket') in (_seaweedfs_buckets.stdout | seaweedfs_bucket_names)