role-service-generic_vm/tasks/archlinux-zfs-pacman-cache.yml

29 lines
1.5 KiB
YAML

# SPDX-License-Identifier: MIT
- name: 'Check if ZFS functional'
register: 'genvm_archlinux_zfs_pacman_cache_os_has_functional_zfs'
changed_when: false
failed_when: false
ansible.builtin.shell: |
zpool list
- name: 'If ZFS functional check if pacman cache dataset exists'
when: 'genvm_archlinux_zfs_pacman_cache_os_has_functional_zfs.rc == 0'
register: 'genvm_archlinux_zfs_pacman_cache_zfs_has_pacman_cache_dataset'
changed_when: false
failed_when: false
ansible.builtin.shell: |
zfs list zpool/root/archlinux/var/cache/pacman/pkg
- name: 'If no pacman cache dataset exists create dataset'
when: 'genvm_archlinux_zfs_pacman_cache_zfs_has_pacman_cache_dataset.rc > 0'
register: 'genvm_archlinux_zfs_pacman_cache_pacman_cache_dir_was_temp_moved'
changed_when: 'genvm_archlinux_zfs_pacman_cache_pacman_cache_dir_was_temp_moved.rc == 0'
ansible.builtin.shell: |
mv '/var/cache/pacman/pkg'{,'.bak'} && \
if ! zfs list zpool/root/archlinux/var &>/dev/null; then zfs create -o canmount=off zpool/root/archlinux/var; fi && \
if ! zfs list zpool/root/archlinux/var/cache &>/dev/null; then zfs create -o canmount=off zpool/root/archlinux/var/cache; fi && \
if ! zfs list zpool/root/archlinux/var/cache/pacman &>/dev/null; then zfs create -o canmount=off zpool/root/archlinux/var/cache/pacman; fi && \
zfs create zpool/root/archlinux/var/cache/pacman/pkg && \
rsync -a --remove-source-files '/var/cache/pacman/pkg'{'.bak',}'/' && \
find '/var/cache/pacman/pkg.bak' -type d -empty -delete