---
- name: 'Configure gramps application'
  hosts: all

  vars_files:
    - vars/ports.yml
    - vars/vars.yml

  vars:
    app_name: 'gramps'
    base_dir: '/home/major/applications/{{ app_name }}/'

  tasks:

    - name: 'Create application directories'
      ansible.builtin.file:
        path: '{{ item }}'
        state: 'directory'
        mode: '0755'
      loop:
        - '{{ base_dir }}'
        - '{{ (base_dir, "data") | path_join }}'

    - name: 'Copy application files'
      ansible.builtin.copy:
        src: '{{ item }}'
        dest: '{{ base_dir }}'
        mode: '0644'
      loop:
        - './files/apps/{{ app_name }}/docker-compose.yml'

    - name: 'Set up environment variables for application'
      ansible.builtin.template:
        src: 'env.j2'
        dest: '{{ (base_dir, ".env") | path_join }}'
        mode: '0644'
      vars:
        env_dict:
          WEB_SERVER_PORT: '{{ gramps_port }}'
          SECRET_KEY: '{{ gramps.secret_key }}'
          AWS_ACCESS_KEY_ID: '{{ gramps.aws_access_key_id }}'
          AWS_SECRET_ACCESS_KEY: '{{ gramps.aws_secret_access_key }}'
          POSTBOX_HOST: '{{ postbox.host }}'
          POSTBOX_PORT: '{{ postbox.port }}'
          POSTBOX_USER: '{{ postbox.user }}'
          POSTBOX_PASS: '{{ postbox.pass }}'

    - name: 'Run application with docker compose'
      community.docker.docker_compose_v2:
        project_src: '{{ base_dir }}'
        state: 'present'