---
- name: "Base Container"
  hosts: localhost
  gather_facts: no
  vars:
    PROXMOX_NODE:     "{{ lookup('env', 'PROXMOX_NODE' ) }}"
    PROXMOX_STORAGE:  "{{ lookup('env', 'PROXMOX_STORAGE' ) }}"
    PROXMOX_TEMPLATE: "{{ lookup('env', 'PROXMOX_TEMPLATE') }}"
    PROXMOX_DIR:      "{{ lookup('env', 'PROXMOX_DIR')   | default('/tmp/config', true) }}"
    DIR_SHARE:        "{{ lookup('env', 'PROXMOX_SHARE') | default('/share', true) }}"
    DIR_CERTS:        "{{ lookup('env', 'PROXMOX_SHARE') | default('/share', true) }}/.certs"
    DIR_KEYS:         "{{ lookup('env', 'PROXMOX_SHARE') | default('/share', true) }}/.keys"
  tasks:
    - name: Ensure directories
      file:
        path: "{{ item }}"
        state: directory
      loop:
        - "{{ DIR_SHARE }}"
        - "{{ DIR_CERTS }}"
        - "{{ DIR_KEYS }}"

    - name: Generate container key on host
      community.crypto.openssh_keypair:
        path: "{{ DIR_KEYS }}/{{ id }}"
        type: ed25519
        force: false

    - name: Container
      ansible.builtin.include_role:
        name: container

- name: Remote container configuration
  hosts: container
  gather_facts: yes
  become: true
  vars:
    PROXMOX_DIR:  "{{ lookup('env', 'PROXMOX_DIR')   | default('/tmp/config', true) }}"
    DIR_SHARE:    "{{ lookup('env', 'PROXMOX_SHARE') | default('/share', true) }}"
    DIR_CERTS:    "{{ lookup('env', 'PROXMOX_SHARE') | default('/share', true) }}/.certs"
    DIR_KEYS:     "{{ lookup('env', 'PROXMOX_SHARE') | default('/share', true) }}/.keys"
  tasks:
    - name: Copy share if exists
      ansible.builtin.copy:
        src: /share/
        dest: "{{ DIR_SHARE }}"
        remote_src: no
      when: share | default(false) | bool

    - name: Apply base configuration
      ansible.builtin.include_role:
        name: base
      tags: base

    - name: Configure mounts
      ansible.builtin.include_role:
        name: mount
      vars:
        host:     "{{ lookup('env', 'HOST') }}"
        login:    "{{ lookup('env', 'LOGIN') }}"
        password: "{{ lookup('env', 'PASSWORD') }}"
        mount:    "{{ mount }}"
      when:
        - lookup('env','PROXMOX_PASSWORD') | default('', True) | length > 0
        - not (share | default(false) | bool)
        - mount is defined
      tags: mounts