diff --git a/playbooks/update-plex.yml b/playbooks/update-plex.yml new file mode 100644 index 0000000..41cf460 --- /dev/null +++ b/playbooks/update-plex.yml @@ -0,0 +1,57 @@ +--- +# - hosts: vm-host-plex.net.enp.one +# #gather_facts: false +# tasks: +# - name: Query plex API (shhh) to load latest releases +# get_url: +# url: https://plex.tv/api/downloads/5.json +# dest: "{{ plex_releases_file | default('/tmp/plexreleases.json') }}" + +- hosts: vm-host-plex.net.enp.one + name: Update Plex Media Server to latest version + vars: + plex_releases: "{{ lookup('url', 'https://plex.tv/api/downloads/5.json') | from_json }}" + tasks: + - name: Identifiy the proper release file + when: (ansible_os_family | lower == item["distro"]) and (ansible_distribution | lower in item["label"] | lower) and (ansible_userspace_bits in item["label"]) + set_fact: + plex_release_url: "{{ item.url }}" + plex_release_checksum: "{{ item.checksum }}" + loop: "{{ plex_releases['computer']['Linux']['releases'] }}" + + - name: Download package + get_url: + url: "{{ plex_release_url }}" + checksum: sha1:{{ plex_release_checksum }} + dest: /tmp/plexmediaserver-{{ plex_release_checksum }}.{{ plex_release_url.split(".")[-1] }} + + - name: Stop the PMS service + become: true + systemd: + name: "{{ plex_service | default('plexmediaserver') }}" + state: stopped + + - name: Install update package + become: true + block: + - name: Install update package using DNF + when: ansible_distribution == "Fedora" + dnf: + name: /tmp/plexmediaserver-{{ plex_release_checksum }}.rpm + state: latest + - name: Install update package using YUM + when: ansible_distribution == "CentOS" + yum: + name: /tmp/plexmediaserver-{{ plex_release_checksum }}.rpm + state: latest + - name: Install update package using APT + when: ansible_distribution == "Ubuntu" or ansible_distribution == "Debian" + apt: + name: /tmp/plexmediaserver-{{ plex_release_checksum }}.deb + state: latest + + - name: Start the PMS service + become: true + systemd: + name: "{{ plex_service | default('plexmediaserver') }}" + state: started