--- - name: install Ansible prerequisites ansible.builtin.dnf: name: [ "git", "libxslt", ] state: latest - name: install MediaConch ansible.builtin.dnf: name: [ "mediaconch", "mediainfo", "libmediainfo", "libzen", ] enablerepo: "MediaArea" disablerepo: "epel" update_cache: true state: latest - name: check MediaConch symlink ansible.builtin.stat: path: "/operational_shared/software/mediaconch" register: mediaconch_stat - name: set MediaConch symlink ansible.builtin.file: src: "/usr/bin/mediaconch" dest: "/operational_shared/software/mediaconch" state: link force: true when: ( not mediaconch_stat.stat.exists ) or ( not mediaconch_stat.stat.islnk ) or ( mediaconch_stat.stat.isreg ) - name: remove existing MediaConch-Profile repo directory (otherwise, we can't clone it in the next task -.-) ansible.builtin.file: path: "/tmp/mediaconch-profile/" state: absent changed_when: false # there's no other way to get this task idempotent - name: checkout MediaConch-Profile repo ansible.builtin.git: repo: "https://git.slub-dresden.de/digital-preservation/mediaconch-profile.git" dest: "/tmp/mediaconch-profile/" register: mc_profile_repo_cloned changed_when: false # there's no other way to get this task idempotent - name: compile MediaConch profile ansible.builtin.command: cmd: "bash ./build_all.sh" chdir: "/tmp/mediaconch-profile/" when: mc_profile_repo_cloned.before != mc_profile_repo_cloned.after register: mc_profile_repo_built changed_when: false # there's no other way to get this task idempotent - name: deploy MediaConch profile to Rosetta ansible.builtin.copy: src: "/tmp/mediaconch-profile/build/SLUB_mediaconch_policy_all.xml" dest: "/operational_shared/software/SLUB_mediaconch_policy_all.xml" remote_src: true owner: "{{ vault_rosetta_user }}" group: "{{ vault_rosetta_group }}" mode: "0644" - name: create MediaConch etc directory ansible.builtin.file: path: "/etc/mediaconch/" state: directory mode: '0755' - name: set MediaConch profile symlink # based on SLUBArchiv.digital Release 2022-01 ansible.builtin.file: src: "{{ item.src }}" # HINT: default paths of Rosetta MediaConch Plugin dest: "{{ item.dest }}" state: link force: true mode: "0644" loop: - { src: "/etc/mediaconch/current_slub.cfg", dest: "/operational_shared/software/SLUB_mediaconch_policy_all.xml" } - { src: "/etc/mediaconch/upcoming_slub.cfg", dest: "/operational_shared/software/SLUB_mediaconch_policy_all.xml" } when: - mc_profile_repo_cloned.before != mc_profile_repo_cloned.after - mc_profile_repo_built.rc == "0"