From 7530583f40425ecd3cea794c80c1fbea364a75d7 Mon Sep 17 00:00:00 2001 From: Wojciech Kozlowski Date: Wed, 1 Mar 2023 20:14:12 +0100 Subject: [PATCH] Add music/archive volume --- README.md | 15 +++++++++++++++ inventory/host_vars/yggdrasil/vars.yml | 2 ++ .../music/datasets/meta/argument_specs.yml | 3 +++ playbooks/roles/music/datasets/tasks/main.yml | 5 +++++ .../roles/music/org/meta/argument_specs.yml | 3 +++ playbooks/roles/music/org/tasks/main.yml | 10 ++++++++-- .../roles/music/org/templates/beets-archive.yml | 17 +++++++++++++++++ .../{beets.yml => beets-collection.yml} | 0 .../music/rip/tasks/include/directories.yml | 8 ++++++++ .../roles/music/rip/tasks/include/samba.yml | 17 ++++++++++++++++- 10 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 playbooks/roles/music/org/templates/beets-archive.yml rename playbooks/roles/music/org/templates/{beets.yml => beets-collection.yml} (100%) diff --git a/README.md b/README.md index ded5b46..0053e24 100644 --- a/README.md +++ b/README.md @@ -171,3 +171,18 @@ All steps below are to be executed as the `music` user. will convert the flac files into mp3 files for sharing via Nextcloud. 3. Run `nextcloud-upload /var/tmp/music/mp3/` for every artist to upload to Nextcloud. 4. Remove the `/var/tmp/music/mp3/` directory. + +### Archive music + +#### From rip + +1. Run `beet --config .config/beets/archive.yaml import /var/lib/yggdrasil/home/music/rip`. This + will move the music files to `/var/lib/yggdrasil/data/music/archive`. + +#### From collection + +1. Run `beet --config .config/beets/archive.yaml import + /var/lib/yggdrasil/data/music/collection//`. This will copy the music files to + `/var/lib/yggdrasil/data/music/archive`. +2. Run `beet remove -d -a artist:"" album:""`. This will remove the music files from + the collection. diff --git a/inventory/host_vars/yggdrasil/vars.yml b/inventory/host_vars/yggdrasil/vars.yml index b380550..5a49fb2 100644 --- a/inventory/host_vars/yggdrasil/vars.yml +++ b/inventory/host_vars/yggdrasil/vars.yml @@ -100,10 +100,12 @@ music_user_samba_password: "{{ vault_music_user_samba_password }}" music_user_home_directory: "{{ system_var_home_directory }}/{{ music_user_name }}" music_user_data_directory: "{{ system_var_data_directory }}/{{ music_user_name }}" music_user_data_collection_directory: "{{ music_user_data_directory }}/collection" +music_user_data_archive_directory: "{{ music_user_data_directory }}/archive" music_user_home_dataset: "rpool{{ music_user_home_directory }}" music_user_data_dataset: "rpool{{ music_user_data_directory }}" music_user_data_collection_dataset: "{{ music_user_data_dataset }}/collection" +music_user_data_archive_dataset: "{{ music_user_data_dataset }}/archive" # -------------------------------------------------------------------------------------------------- # music:backups diff --git a/playbooks/roles/music/datasets/meta/argument_specs.yml b/playbooks/roles/music/datasets/meta/argument_specs.yml index 92a7a45..e2d691d 100644 --- a/playbooks/roles/music/datasets/meta/argument_specs.yml +++ b/playbooks/roles/music/datasets/meta/argument_specs.yml @@ -14,3 +14,6 @@ argument_specs: music_user_data_collection_dataset: type: "str" required: true + music_user_data_archive_dataset: + type: "str" + required: true diff --git a/playbooks/roles/music/datasets/tasks/main.yml b/playbooks/roles/music/datasets/tasks/main.yml index 134065c..c333302 100644 --- a/playbooks/roles/music/datasets/tasks/main.yml +++ b/playbooks/roles/music/datasets/tasks/main.yml @@ -26,6 +26,11 @@ name: "{{ music_user_data_collection_dataset }}" state: "present" +- name: "create music archive dataset" + community.general.zfs: + name: "{{ music_user_data_archive_dataset }}" + state: "present" + - name: "create backup data dataset" community.general.zfs: name: "{{ system_backups_snapshots_data_dataset }}/{{ music_user_name }}" diff --git a/playbooks/roles/music/org/meta/argument_specs.yml b/playbooks/roles/music/org/meta/argument_specs.yml index 8bba698..0f5cda9 100644 --- a/playbooks/roles/music/org/meta/argument_specs.yml +++ b/playbooks/roles/music/org/meta/argument_specs.yml @@ -11,6 +11,9 @@ argument_specs: music_user_data_collection_directory: type: "str" required: true + music_user_data_archive_directory: + type: "str" + required: true music_user_nextcloud_domain: type: "str" required: true diff --git a/playbooks/roles/music/org/tasks/main.yml b/playbooks/roles/music/org/tasks/main.yml index 3e350a3..de94f85 100644 --- a/playbooks/roles/music/org/tasks/main.yml +++ b/playbooks/roles/music/org/tasks/main.yml @@ -35,12 +35,18 @@ group: "{{ music_user_name }}" mode: 0755 - - name: "configure beets" + - name: "configure beets for collection" ansible.builtin.template: - src: "./beets.yml" + src: "./beets-collection.yml" dest: "{{ music_user_home_directory }}/.config/beets/config.yaml" mode: 0644 + - name: "configure beets for archive" + ansible.builtin.template: + src: "./beets-archive.yml" + dest: "{{ music_user_home_directory }}/.config/beets/archive.yaml" + mode: 0644 + - name: "create nextcloud-upload config directory" ansible.builtin.file: path: "{{ music_user_home_directory }}/.config/nextcloud-upload" diff --git a/playbooks/roles/music/org/templates/beets-archive.yml b/playbooks/roles/music/org/templates/beets-archive.yml new file mode 100644 index 0000000..898aa94 --- /dev/null +++ b/playbooks/roles/music/org/templates/beets-archive.yml @@ -0,0 +1,17 @@ +plugins: fetchart info +library: {{ music_user_data_archive_directory }}/library.db + +directory: {{ music_user_data_archive_directory }} +paths: + default: $albumartist/$year $album%aunique{}/$track $title + singleton: Non-Album/$artist/$title + comp: Compilations/$year $album%aunique{}/$track $title +import: + copy: yes + move: no + write: no + autotag: no + +fetchart: + sources: + - filesystem diff --git a/playbooks/roles/music/org/templates/beets.yml b/playbooks/roles/music/org/templates/beets-collection.yml similarity index 100% rename from playbooks/roles/music/org/templates/beets.yml rename to playbooks/roles/music/org/templates/beets-collection.yml diff --git a/playbooks/roles/music/rip/tasks/include/directories.yml b/playbooks/roles/music/rip/tasks/include/directories.yml index efaac15..ea38be5 100644 --- a/playbooks/roles/music/rip/tasks/include/directories.yml +++ b/playbooks/roles/music/rip/tasks/include/directories.yml @@ -15,6 +15,14 @@ group: "{{ music_user_name }}" mode: 0755 +- name: "directories : create archive directory" + ansible.builtin.file: + path: "{{ music_user_data_archive_directory }}" + state: "directory" + owner: "{{ music_user_name }}" + group: "{{ music_user_name }}" + mode: 0755 + - name: "directories : create rip directory" ansible.builtin.file: path: "{{ music_user_home_directory }}/rip" diff --git a/playbooks/roles/music/rip/tasks/include/samba.yml b/playbooks/roles/music/rip/tasks/include/samba.yml index 4ae6add..9c99337 100644 --- a/playbooks/roles/music/rip/tasks/include/samba.yml +++ b/playbooks/roles/music/rip/tasks/include/samba.yml @@ -22,6 +22,20 @@ directory mask = 0755 register: music_rip_samba_rip_config +- name: "samba : configure \"music-collection\" samba share" + ansible.builtin.blockinfile: + path: "/etc/samba/smb.conf" + mode: 0644 + insertafter: "EOF" + marker: "# {mark} ANSIBLE MANAGED BLOCK MUSIC:COLLECTION" + block: | + [music-collection] + comment = Music archive + path = {{ music_user_data_collection_directory }} + browseable = yes + read only = yes + register: music_rip_samba_collection_config + - name: "samba : configure \"music-archive\" samba share" ansible.builtin.blockinfile: path: "/etc/samba/smb.conf" @@ -31,7 +45,7 @@ block: | [music-archive] comment = Music archive - path = {{ music_user_data_collection_directory }} + path = {{ music_user_data_archive_directory }} browseable = yes read only = yes register: music_rip_samba_archive_config @@ -65,5 +79,6 @@ state: "restarted" when: (music_rip_samba_rip_config.changed or + music_rip_samba_collection_config.changed or music_rip_samba_archive_config.changed) and not music_rip_samba_start.changed