--- - 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