---
- name: install libvirt packages
  apt:
    name:
      - libvirt-daemon-system
      - virt-manager
    state: latest
    autoremove: true
    default_release: "{{ ansible_distribution_release }}-backports"
  when: ansible_distribution_release == 'bullseye'

- name: install libvirt packages
  apt:
    name:
      - libvirt-daemon-system
      - virt-manager
    state: latest
    autoremove: true
  when: ansible_distribution_release == 'bookworm'

    #- name: allow all users to use VMs
    #  lineinfile:
    #    dest: /etc/libvirt/libvirtd.conf
    #    line: 'auth_unix_rw = "none"'
    #    insertafter: '#auth_unix_rw = "polkit"'
    #  notify: reload libvirtd

- name: autostart default network for VMs
  file:
    src: /etc/libvirt/qemu/networks/default.xml
    dest: /etc/libvirt/qemu/networks/autostart/default.xml
    state: link

- name: create system-user syncing VM-files and others
  ansible.builtin.user:
    name: lmnsynci
    comment: lmn sync user
    system: true

- name: create vm directory
  file:
    path: /lmn/vm
    state: directory
    owner: lmnsynci
    group: lmnsynci
    mode: 0755

- name: install squid
  apt:
    name:
      - squid
    state: latest
    autoremove: true

- name: disable squid
  systemd:
    name: squid
    enabled: false
    state: stopped

- name: deploy squid user mode configuration
  template:
    src: squid-usermode.conf.j2
    dest: /etc/squid/squid-usermode.conf
    mode: '0644'

- name: deploy sudo configurations
  copy:
    src: "{{ item }}"
    dest: "/etc/sudoers.d/90-{{ item }}"
    owner: root
    group: root
    mode: '0700'
  loop:
    - lmn-mounthome
    - lmn-sync-vm
    - lmn-upload-vm
    - lmn-link-images
    - lmn-startvirtiofsd

- name: deploy vmimages scripts
  copy:
    src: "{{ item }}"
    dest: /usr/local/bin/
    owner: root
    group: root
    mode: '0755'
  loop:
    - mounthome.sh
    - create-vm.sh
    - rebase-vm.sh
    - create-clone.sh
    - run-vm.sh
    - upload-vm.sh
    - sync-vm.sh
    - link-images.sh
    - start-virtiofsd.sh
    - linbo-torrenthelper.sh
    - vmimage-torrent

- name: Deploy linbo-torrent defaults
  copy:
    src: linbo-torrent
    dest: /etc/default/
    owner: root
    group: root
    mode: '0755'

- name: Deploy vmimage-torrent.service
  copy:
    src: vmimage-torrent.service
    dest: /etc/systemd/system/
    owner: root
    group: root
    mode: '0755'
  notify: "enable vmimage-torrent.service"

- name: Deploy bridge.conf needed for qemu session mode
  lineinfile:
    path: /etc/qemu/bridge.conf
    line: 'allow virbr0'
    create: True
    mode: '0655'

- name: Deploy rsync.secret
  lineinfile:
    path: /etc/rsync.secret
    line: "{{ rsyncsecret }}"
    create: True
    mode: '0600'

- name: Allow users to attach to bridge
  file:
    path: /usr/lib/qemu/qemu-bridge-helper
    mode: '4755'

- name: Deploy http proxy config
  copy:
    src: lmn-proxy.sh
    dest: /etc/profile.d/
    mode: '0644'

- name: Create directory for local .desktop-Files
  ansible.builtin.file:
    path: "{ item }"
    state: directory
    mode: '0755'
  loop:
    - /usr/local/share/applications
    - /usr/local/share/desktop-directories
  notify: Run update-desktop-database

- name: set owner lmnsynci for menu entry directory
  file:
    path: /usr/local/share/applications
    state: directory
    owner: lmnsynci

- name: Copy fvs.directory
  ansible.builtin.copy:
    src: fvs.directory
    dest: /usr/local/share/desktop-directories/
  notify: Run update-desktop-database

- name: Copy fvs.menu
  ansible.builtin.copy:
    src: fvs.menu
    dest: /etc/xdg/menus/applications-merged/
  notify: Run update-desktop-database

- name: sync .torrent, .xml and .desktop files and run update-desktop-database
  command: /usr/local/bin/sync-vm.sh -t
  become: true
  become_user: lmnsynci
  register: result
  changed_when: result.stdout | length > 0

#### VMs
#- name: Deploy initial image list
#  copy:
#    src: images.list
#    dest: /var/lib/libvirt/images/images.list
#    force: false
#
#- name: rsync VM image definitions
#  command: >
#    rsync -a --itemize-changes
#    rsync://server:/vmimages-download/xml /var/lib/libvirt/images/
#  become: true
#  become_user: lmnsynci
#  register: result
#  changed_when: result.stdout | length > 0
#  when: not run_in_installer | default(false) | bool
#
#- name: rsync VM images
#  command: >
#    rsync -a -i --files-from=/lmn/lib/libvirt/images/images.list
#    rsync://server:/vmimages-download/ /var/lib/libvirt/images/
#  become: true
#  become_user: lmnsynci
#  register: result
#  changed_when: result.stdout | length > 0
#  when: >
#    false and not run_in_installer | default(false) | bool and (ansible_mounts |
#    selectattr("mount", "equalto", "/") | list)[0].size_available > 80000000000