feat(jellyfin): add podman as deployment method
This commit is contained in:
		@@ -2,6 +2,7 @@
 | 
				
			|||||||
jellyfin_user: jellyfin
 | 
					jellyfin_user: jellyfin
 | 
				
			||||||
jellyfin_version: "10.10.5"
 | 
					jellyfin_version: "10.10.5"
 | 
				
			||||||
jellyfin_state: present
 | 
					jellyfin_state: present
 | 
				
			||||||
 | 
					jellyfin_deployment_method: docker
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jellyfin_base_path: /opt/jellyfin
 | 
					jellyfin_base_path: /opt/jellyfin
 | 
				
			||||||
jellyfin_config_path: "{{ jellyfin_base_path }}/config"
 | 
					jellyfin_config_path: "{{ jellyfin_base_path }}/config"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										23
									
								
								roles/jellyfin/tasks/deploy-docker.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								roles/jellyfin/tasks/deploy-docker.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					- name: Ensure container image '{{ jellyfin_container_image_ref }}' is {{ jellyfin_state }}
 | 
				
			||||||
 | 
					  community.docker.docker_image:
 | 
				
			||||||
 | 
					    name: "{{ jellyfin_container_image_ref }}"
 | 
				
			||||||
 | 
					    state: "{{ jellyfin_state }}"
 | 
				
			||||||
 | 
					    source: "{{ jellyfin_container_image_source }}"
 | 
				
			||||||
 | 
					    force_source: "{{ jellyfin_container_image_tag | default(false, true) }}"
 | 
				
			||||||
 | 
					  register: jellyfin_container_image_pull_result
 | 
				
			||||||
 | 
					  until: jellyfin_container_image_pull_result is succeeded
 | 
				
			||||||
 | 
					  retries: 5
 | 
				
			||||||
 | 
					  delay: 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Ensure container '{{ jellyfin_container_name }}' is {{ jellyfin_container_state }}
 | 
				
			||||||
 | 
					  community.docker.docker_container:
 | 
				
			||||||
 | 
					    name: "{{ jellyfin_container_name }}"
 | 
				
			||||||
 | 
					    image: "{{ jellyfin_container_image_ref }}"
 | 
				
			||||||
 | 
					    user: "{{ jellyfin_uid }}:{{ jellyfin_gid }}"
 | 
				
			||||||
 | 
					    labels: "{{ jellyfin_container_labels }}"
 | 
				
			||||||
 | 
					    volumes: "{{ jellyfin_container_volumes }}"
 | 
				
			||||||
 | 
					    networks: "{{ jellyfin_container_networks | default(omit, True) }}"
 | 
				
			||||||
 | 
					    network_mode: "{{ jellyfin_container_network_mode }}"
 | 
				
			||||||
 | 
					    restart_policy: "{{ jellyfin_container_restart_policy }}"
 | 
				
			||||||
 | 
					    state: "{{ jellyfin_container_state }}"
 | 
				
			||||||
							
								
								
									
										22
									
								
								roles/jellyfin/tasks/deploy-podman.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								roles/jellyfin/tasks/deploy-podman.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					- name: Ensure container image '{{ jellyfin_container_image_ref }}' is {{ jellyfin_state }}
 | 
				
			||||||
 | 
					  containers.podman.podman_image:
 | 
				
			||||||
 | 
					    name: "{{ jellyfin_container_image_ref }}"
 | 
				
			||||||
 | 
					    state: "{{ jellyfin_state }}"
 | 
				
			||||||
 | 
					    pull: "{{ (jellyfin_container_image_source == 'pull') | bool }}"
 | 
				
			||||||
 | 
					    force: "{{ jellyfin_container_image_tag | default(false, true) }}"
 | 
				
			||||||
 | 
					  register: jellyfin_container_image_pull_result
 | 
				
			||||||
 | 
					  until: jellyfin_container_image_pull_result is succeeded
 | 
				
			||||||
 | 
					  retries: 5
 | 
				
			||||||
 | 
					  delay: 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Ensure container '{{ jellyfin_container_name }}' is {{ jellyfin_container_state }}
 | 
				
			||||||
 | 
					  containers.podman.podman_container:
 | 
				
			||||||
 | 
					    name: "{{ jellyfin_container_name }}"
 | 
				
			||||||
 | 
					    image: "{{ jellyfin_container_image_ref }}"
 | 
				
			||||||
 | 
					    user: "{{ jellyfin_uid }}:{{ jellyfin_gid }}"
 | 
				
			||||||
 | 
					    labels: "{{ jellyfin_container_labels }}"
 | 
				
			||||||
 | 
					    volumes: "{{ jellyfin_container_volumes }}"
 | 
				
			||||||
 | 
					    network: "{{ jellyfin_container_networks | default(omit, True) }}"
 | 
				
			||||||
 | 
					    restart_policy: "{{ jellyfin_container_restart_policy }}"
 | 
				
			||||||
 | 
					    state: "{{ jellyfin_container_state }}"
 | 
				
			||||||
@@ -6,6 +6,13 @@
 | 
				
			|||||||
      states are {{ jellyfin_states | join(', ') }}.
 | 
					      states are {{ jellyfin_states | join(', ') }}.
 | 
				
			||||||
  when: jellyfin_state not in jellyfin_states
 | 
					  when: jellyfin_state not in jellyfin_states
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Check if deployment method is valid
 | 
				
			||||||
 | 
					  ansible.builtin.fail:
 | 
				
			||||||
 | 
					    msg: >-2
 | 
				
			||||||
 | 
					      Unsupported state '{{ jellyfin_deployment_method }}'. Supported
 | 
				
			||||||
 | 
					      states are {{ jellyfin_deployment_methods | join(', ') }}.
 | 
				
			||||||
 | 
					  when: jellyfin_deployment_method not in jellyfin_deployment_methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: Ensure jellyfin user '{{ jellyfin_user }}' is {{ jellyfin_state }}
 | 
					- name: Ensure jellyfin user '{{ jellyfin_user }}' is {{ jellyfin_state }}
 | 
				
			||||||
  ansible.builtin.user:
 | 
					  ansible.builtin.user:
 | 
				
			||||||
    name: "{{ jellyfin_user }}"
 | 
					    name: "{{ jellyfin_user }}"
 | 
				
			||||||
@@ -23,25 +30,6 @@
 | 
				
			|||||||
    mode: "{{ item.mode }}"
 | 
					    mode: "{{ item.mode }}"
 | 
				
			||||||
  loop: "{{ jellyfin_host_directories }}"
 | 
					  loop: "{{ jellyfin_host_directories }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: Ensure container image '{{ jellyfin_container_image_ref }}' is {{ jellyfin_state }}
 | 
					- name: Ensure jellyfin is deployed using {{ jellyfin_deployment_method }}
 | 
				
			||||||
  community.docker.docker_image:
 | 
					  ansible.builtin.include_tasks:
 | 
				
			||||||
    name: "{{ jellyfin_container_image_ref }}"
 | 
					    file: "deploy-{{ jellyfin_deployment_method }}.yml"
 | 
				
			||||||
    state: "{{ jellyfin_state }}"
 | 
					 | 
				
			||||||
    source: "{{ jellyfin_container_image_source }}"
 | 
					 | 
				
			||||||
    force_source: "{{ jellyfin_container_image_tag | default(false, true) }}"
 | 
					 | 
				
			||||||
  register: jellyfin_container_image_pull_result
 | 
					 | 
				
			||||||
  until: jellyfin_container_image_pull_result is succeeded
 | 
					 | 
				
			||||||
  retries: 5
 | 
					 | 
				
			||||||
  delay: 3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- name: Ensure container '{{ jellyfin_container_name }}' is {{ jellyfin_container_state }}
 | 
					 | 
				
			||||||
  community.docker.docker_container:
 | 
					 | 
				
			||||||
    name: "{{ jellyfin_container_name }}"
 | 
					 | 
				
			||||||
    image: "{{ jellyfin_container_image_ref }}"
 | 
					 | 
				
			||||||
    user: "{{ jellyfin_uid }}:{{ jellyfin_gid }}"
 | 
					 | 
				
			||||||
    labels: "{{ jellyfin_container_labels }}"
 | 
					 | 
				
			||||||
    volumes: "{{ jellyfin_container_volumes }}"
 | 
					 | 
				
			||||||
    networks: "{{ jellyfin_container_networks | default(omit, True) }}"
 | 
					 | 
				
			||||||
    network_mode: "{{ jellyfin_container_network_mode }}"
 | 
					 | 
				
			||||||
    restart_policy: "{{ jellyfin_container_restart_policy }}"
 | 
					 | 
				
			||||||
    state: "{{ jellyfin_container_state }}"
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,9 @@
 | 
				
			|||||||
jellyfin_states:
 | 
					jellyfin_states:
 | 
				
			||||||
  - present
 | 
					  - present
 | 
				
			||||||
  - absent
 | 
					  - absent
 | 
				
			||||||
 | 
					jellyfin_deployment_methods:
 | 
				
			||||||
 | 
					  - docker
 | 
				
			||||||
 | 
					  - podman
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jellyfin_container_base_volumes:
 | 
					jellyfin_container_base_volumes:
 | 
				
			||||||
  - "{{ jellyfin_config_path }}:/config:z"
 | 
					  - "{{ jellyfin_config_path }}:/config:z"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user