# usbmount 0.0.24 and/or 0.0.25 (2022-02-08) should be investigated: # https://github.com/iiab/iiab/issues/3409 # Official usbmount 0.0.22 (2011-08-08) documentation: # https://github.com/rbrito/usbmount/releases # https://github.com/hfuchs/usbmount/blob/master/README (2010-08-11) # https://github.com/rbrito/usbmount/blob/master/README.md (2018-08-10) # https://github.com/rbrito/usbmount/blob/master/usbmount.conf (2010-04-25) # usb_lib_writable_sticks (e.g., in /etc/iiab/local_vars.yml) must be set to true in order for non-root users to be able to write to VFAT/FAT32, NTFS and exFAT USB sticks. # If you are still not able to write to a mounted USB stick, try unmounting the drive (sudo umount ) and then remount it setting umask to 0000 manually (sudo mount -o umask=0000 ). - name: Record (initial) disk space used shell: df -B1 --output=used / | tail -1 register: df1 - name: Does systemd-udevd.service exist stat: path: "{{ systemd_location }}/systemd-udevd.service" register: udev_unit - name: Copy udevd service to /etc/systemd/system to modify copy: src: "{{ systemd_location }}/systemd-udevd.service" dest: /etc/systemd/system/systemd-udevd.service owner: root group: root mode: 0644 when: udev_unit.stat.exists is defined and udev_unit.stat.exists - name: Change MountFlags from slave to shared lineinfile: backup: no dest: /etc/systemd/system/systemd-udevd.service regexp: '^MountFlags' line: 'MountFlags=shared' state: present when: udev_unit.stat.exists is defined and udev_unit.stat.exists - name: Ask systemd to reread unit files (daemon-reload) and restart so systemd recognizes the changes systemd: daemon_reload: yes name: systemd-udevd state: restarted when: udev_unit.stat.exists is defined and udev_unit.stat.exists # http://raspbian.raspberrypi.org/raspbian/pool/main/u/usbmount/usbmount_0.0.22_all.deb #- name: Install {{ iiab_download_url }}/usbmount_0.0.22_all.deb, no longer supported by {RasPiOS, Debian, Ubuntu} # apt: # deb: "{{ iiab_download_url }}/usbmount_0.0.22_all.deb" # # when: is_debian - name: Install lockfile-progs and util-linux for usbmount from OS repo package: name: - lockfile-progs - util-linux state: present - name: Add dir {{ doc_root }}/local_content, where USB drive links can appear (0775) owned by {{ apache_user }}:{{ apache_user }} file: state: directory path: "{{ doc_root }}/local_content" # /library/www/html owner: "{{ apache_user }}" # www-data group: "{{ apache_user }}" # 2020-02-13: changed from iiab_admin_user, after discussion on weekly call (#1228, #2222) mode: 0775 - name: Set up dirs /etc/usbmount/mount.d, /etc/usbmount/umount.d, /media/usb0-7 file: state: directory path: "{{ item }}" mode: 0755 with_items: - /etc/usbmount/mount.d - /etc/usbmount/umount.d - /media/usb0 - /media/usb1 - /media/usb2 - /media/usb3 - /media/usb4 - /media/usb5 - /media/usb6 - /media/usb7 - name: Copy files from files/usbmount to filesystem copy: src: "{{ item.src }}" dest: "{{ item.dest }}" mode: "{{ item.mode }}" with_items: - { src: 'usbmount/usbmount.conf', dest: '/etc/usbmount/', mode: '0644' } - { src: 'usbmount/usbmount', dest: '/usr/local/sbin/', mode: '0755' } - name: 'Install from template: /etc/udev/rules.d/usbmount.rules, /etc/systemd/system/usbmount@.service, /usr/local/sbin/iiab-clean-usb.sh' template: src: "{{ item.src }}" dest: "{{ item.dest }}" mode: "{{ item.mode }}" with_items: - { src: 'usbmount.rules.j2', dest: '/etc/udev/rules.d/usbmount.rules', mode: '0644' } - { src: 'usbmount@.service.j2', dest: '/etc/systemd/system/usbmount@.service', mode: '0644' } - { src: 'iiab-clean-usb.sh', dest: '/usr/local/sbin/', mode: '0755' } - name: Add dir {{ doc_root }}/upload2usb (0775) owned by {{ apache_user }}:{{ apache_user }} file: state: directory path: "{{ doc_root }}/upload2usb" owner: "{{ apache_user }}" group: "{{ apache_user }}" mode: 0755 - name: Copy files from files/upload2usb/ into {{ doc_root }}/upload2usb/ copy: src: "{{ item }}" dest: "{{ doc_root }}/upload2usb/" with_fileglob: - upload2usb/* # 2021-03-21: If usbmount is repackaged by apt as a result of Linux kernel 5.4+ # supporting exFAT, the stanza below (might) in future no longer be needed... # SEE ALSO: https://github.com/iiab/iiab/blob/586bfc5cb1abf6b4333a21d3fa89695f115432dc/roles/2-common/tasks/packages.yml#L11-L12 #- name: Add ' exfat fuseblk ntfs' to FILESYSTEMS var in /etc/usbmount/usbmount.conf # lineinfile: # regexp: '^FILESYSTEMS=.*' # line: 'FILESYSTEMS="vfat ext2 ext3 ext4 hfsplus exfat fuseblk ntfs"' # path: /etc/usbmount/usbmount.conf #- name: Remove /etc/usbmount/mount.d/00_create_model_symlink # file: # path: /etc/usbmount/mount.d/00_create_model_symlink # state: absent # RECORD 'USB_LIB' AS INSTALLED - name: Record (final) disk space used shell: df -B1 --output=used / | tail -1 register: df2 - name: Add 'usb_lib_disk_usage = {{ df2.stdout|int - df1.stdout|int }}' to {{ iiab_ini_file }} ini_file: path: "{{ iiab_ini_file }}" # /etc/iiab/iiab.ini section: usb_lib option: usb_lib_disk_usage value: "{{ df2.stdout|int - df1.stdout|int }}" - name: "Set 'usb_lib_installed: True'" set_fact: usb_lib_installed: True - name: "Add 'usb_lib_installed: True' to {{ iiab_state_file }}" lineinfile: path: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml regexp: '^usb_lib_installed' line: 'usb_lib_installed: True'