205 lines
4.7 KiB
YAML
205 lines
4.7 KiB
YAML
---
|
|
- 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=/var/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
|