diff --git a/roles/lmn_vm/files/lmn-vm b/roles/lmn_vm/files/lmn-vm index 74736bd..4f90db8 100644 --- a/roles/lmn_vm/files/lmn-vm +++ b/roles/lmn_vm/files/lmn-vm @@ -11,12 +11,15 @@ lmnsynci ALL=(root) NOPASSWD: /usr/local/bin/vm-aria2 %role-student ALL=(root) NOPASSWD: /usr/local/bin/vm-link-images %role-teacher ALL=(root) NOPASSWD: /usr/local/bin/vm-link-images -# start-virtiofsd: Start Virtiofsd as systemd-service -%examusers ALL=(root) NOPASSWD: /usr/local/bin/start-virtiofsd -%role-student ALL=(root) NOPASSWD: /usr/local/bin/start-virtiofsd -%role-teacher ALL=(root) NOPASSWD: /usr/local/bin/start-virtiofsd +# vm-virtiofsd: Start Virtiofsd as systemd-service +%examusers ALL=(root) NOPASSWD: /usr/local/bin/vm-virtiofsd +%role-student ALL=(root) NOPASSWD: /usr/local/bin/vm-virtiofsd +%role-teacher ALL=(root) NOPASSWD: /usr/local/bin/vm-virtiofsd -# sync-vm.sh: sync desktop-starterfiles from server -%role-teacher ALL=(lmnsynci) NOPASSWD: /usr/local/bin/sync-vm.sh -%role-student ALL=(lmnsynci) NOPASSWD: /usr/local/bin/sync-vm.sh -%examusers ALL=(lmnsynci) NOPASSWD: /usr/local/bin/sync-vm.sh +# desktop-sync: +%examusers ALL=(root) NOPASSWD: /usr/local/bin/desktop-sync +%role-student ALL=(root) NOPASSWD: /usr/local/bin/desktop-sync +%role-teacher ALL=(root) NOPASSWD: /usr/local/bin/desktop-sync + +# vm-upload: +%role-teacher ALL=(lmnsynci) NOPASSWD: /usr/local/bin/vm-upload diff --git a/roles/lmn_vm/files/vm-aria2 b/roles/lmn_vm/files/vm-aria2 index 39b3ae6..7be4ac2 100755 --- a/roles/lmn_vm/files/vm-aria2 +++ b/roles/lmn_vm/files/vm-aria2 @@ -24,7 +24,10 @@ if [[ "${COMMAND}" = "start" ]]; then --collect \ --property=Type=exec \ --property=SuccessExitStatus=1 \ - aria2c --bt-hash-check-seed=true --check-integrity=true --seed-ratio=0.0 --dht-entry-point="${SEEDBOX_HOST}:${SEEDBOX_PORT}" "${VM_SYSDIR}/${VM_NAME}.qcow2.torrent" -elif [[ "${COMMAND}" = "stop" ]]; then - systemctl stop "aria2-${VM_NAME}.service" || echo "Aria2-Service not running" + aria2c --bt-hash-check-seed=true --check-integrity=true --seed-ratio=0.0 \ + --dht-entry-point="${SEEDBOX_HOST}:${SEEDBOX_PORT}" \ + --dht-file-path=$DHTDAT \ + "${VM_SYSDIR}/${VM_NAME}.qcow2.torrent" +elif [[ "${COMMAND}" = "stop" ]] && systemctl is-active "aria2-${VM_NAME}.service"; then + systemctl stop "aria2-${VM_NAME}.service" fi diff --git a/roles/lmn_vm/files/vm-create b/roles/lmn_vm/files/vm-create index 5c5548f..b669890 100755 --- a/roles/lmn_vm/files/vm-create +++ b/roles/lmn_vm/files/vm-create @@ -4,6 +4,7 @@ set -eu source /etc/lmn/vm.conf +PERSISTENT=0 while getopts ':p' OPTION; do case "$OPTION" in diff --git a/roles/lmn_vm/files/vm-run b/roles/lmn_vm/files/vm-run index c5cbad4..0e11ad0 100755 --- a/roles/lmn_vm/files/vm-run +++ b/roles/lmn_vm/files/vm-run @@ -156,6 +156,7 @@ export XDG_CONFIG_HOME="/tmp/${UID}/.config" if ! virsh --connect="${QEMU}" list | grep "${VM_NAME}-clone"; then echo "VM not yet running." + sudo /usr/local/bin/desktop-sync check_images if [[ "${NEWCLONE}" = 1 ]] || [[ ! -f "${VM_DIR}/${VM_NAME}-clone.qcow2" ]]; then create_clone "${VM_NAME}" diff --git a/roles/lmn_vm/files/vm-sync b/roles/lmn_vm/files/vm-sync index e84b68b..b115154 100755 --- a/roles/lmn_vm/files/vm-sync +++ b/roles/lmn_vm/files/vm-sync @@ -69,7 +69,8 @@ delete_outdated_image() { get_file() { cd "${VM_SYSDIR}" - wget --no-proxy -O "${FILENAME}" "http://${SEEDBOX_HOST}/aria2/${FILENAME}" || echo "File not found on seedbox" + curl --fail --noproxy ${SEEDBOX_HOST} -o "${FILENAME}" \ + "http://${SEEDBOX_HOST}/aria2/${FILENAME}" || echo "File not found on seedbox" } push_file() { diff --git a/roles/lmn_vm/tasks/main.yml b/roles/lmn_vm/tasks/main.yml index 8a73e3f..d3630b7 100644 --- a/roles/lmn_vm/tasks/main.yml +++ b/roles/lmn_vm/tasks/main.yml @@ -150,7 +150,6 @@ mode: '0755' loop: - mounthome.sh - - sync-vm.sh - vm-create - vm-rebase - vm-run @@ -161,6 +160,7 @@ - virtiofsd - vm-aria2 - uploadseed + - desktop-sync - name: Deploy vm configuration file vm.conf ansible.builtin.copy: @@ -259,7 +259,8 @@ dest: /etc/xdg/menus/applications-merged/ notify: Run update-desktop-database -- name: Sync .torrent, .xml and .desktop files and run update-desktop-database - command: sudo -u lmnsynci /usr/local/bin/sync-vm.sh -t - register: result - changed_when: result.stdout | length > 0 +- name: Copy initial sync starter + ansible.builtin.copy: + src: sync.desktop + dest: /usr/local/share/applications/ + notify: Run update-desktop-database