From c63bab408fcb39110faeacad607a5c55fc98fd5a Mon Sep 17 00:00:00 2001 From: Johanna Dorothea Reichmann Date: Fri, 29 Oct 2021 11:11:15 +0200 Subject: [PATCH] feat(qbittorrent): add ansible role for deploying in a container --- roles/qbittorrent/README.md | 1 + roles/qbittorrent/defaults/main.yml | 28 ++++++++++++++++ roles/qbittorrent/tasks/main.yml | 52 +++++++++++++++++++++++++++++ roles/qbittorrent/vars/main.yml | 12 +++++++ 4 files changed, 93 insertions(+) create mode 100644 roles/qbittorrent/README.md create mode 100644 roles/qbittorrent/defaults/main.yml create mode 100644 roles/qbittorrent/tasks/main.yml create mode 100644 roles/qbittorrent/vars/main.yml diff --git a/roles/qbittorrent/README.md b/roles/qbittorrent/README.md new file mode 100644 index 0000000..cd81f11 --- /dev/null +++ b/roles/qbittorrent/README.md @@ -0,0 +1 @@ +# `finallycoffee.media-streaming.qbittorrent` ansible role diff --git a/roles/qbittorrent/defaults/main.yml b/roles/qbittorrent/defaults/main.yml new file mode 100644 index 0000000..22d3ad5 --- /dev/null +++ b/roles/qbittorrent/defaults/main.yml @@ -0,0 +1,28 @@ +--- + +qbittorrent_user: qbittorrent +qbittorrent_base_path: /opt/qbittorrent +qbittorrent_base_path_owner: "{{ qbittorrent_user_info.uid | default(qbittorrent_user) }}" +qbittorrent_base_path_group: "{{ qbittorrent_user_info.group | default(qbittorrent_user) }}" +qbittorrent_base_path_mode: "0750" +qbittorrent_config_path: "{{ qbittorrent_base_path }}/config" +qbittorrent_config_path_mode: "0750" +qbittorrent_config_path_owner: "{{ qbittorrent_user_info.uid | default(qbittorrent_user) }}" +qbittorrent_config_path_group: "{{ qbittorrent_user_info.group | default(qbittorrent_user) }}" +qbittorrent_data_path: "{{ qbittorrent_base_path }}/data" +qbittorrent_data_path_mode: "0750" +qbittorrent_data_path_owner: "{{ qbittorrent_user_info.uid | default(qbittorrent_user) }}" +qbittorrent_data_path_group: "{{ qbittorrent_user_info.group | default(qbittorrent_user) }}" + + +qbittorrent_container_name: "qbittorrent" +qbittorrent_container_image_name: "docker.io/hotio/qbittorrent" +qbittorrent_container_image_tag: release +qbittorrent_container_image_ref: "{{ qbittorrent_container_image_name }}:{{ qbittorrent_container_image_tag }}" +qbittorrent_container_image_force_source: false +qbittorrent_container_volumes: [] +qbittorrent_container_environment: {} +qbittorrent_container_labels: [] +qbittorrent_container_ports: [] +qbittorrent_container_networks: [] +qbittorrent_container_restart_policy: "unless-stopped" diff --git a/roles/qbittorrent/tasks/main.yml b/roles/qbittorrent/tasks/main.yml new file mode 100644 index 0000000..8357fe1 --- /dev/null +++ b/roles/qbittorrent/tasks/main.yml @@ -0,0 +1,52 @@ +--- + +- name: Ensure user {{ qbittorrent_user }} exists + user: + name: "{{ qbittorrent_user }}" + state: present + system: yes + register: qbittorrent_user_info + +- name: Ensure base directory {{ qbittorrent_base_path }} exists + file: + path: "{{ qbittorrent_base_path }}" + state: directory + owner: "{{ qbittorrent_base_path_owner }}" + group: "{{ qbittorrent_base_path_group }}" + mode: "{{ qbittorrent_base_path_mode }}" + +- name: Ensure config directory {{ qbittorrent_config_path }} exists + file: + path: "{{ qbittorrent_config_path }}" + state: directory + owner: "{{ qbittorrent_config_path_owner }}" + group: "{{ qbittorrent_config_path_group }}" + mode: "{{ qbittorrent_config_path_mode }}" + +- name: Ensure data directory {{ qbittorrent_data_path }} exists + file: + path: "{{ qbittorrent_data_path }}" + state: directory + owner: "{{ qbittorrent_data_path_owner }}" + group: "{{ qbittorrent_data_path_group }}" + mode: "{{ qbittorrent_dat_path_mode }}" + +- name: Ensure container image {{ qbittorrent_container_image_ref }} is present + docker_image: + name: "{{ qbittorrent_container_image_ref }}" + state: present + source: pull + force_source: "{{ qbittorrent_container_image_force_source }}" + +- name: Ensure qbittorrent container is running + docker_container: + name: "{{ qbittorrent_container_name }}" + image: "{{ qbittorrent_container_image_ref }}" + volumes: "{{ qbittorrent_container_complete_volumes }}" + env: "{{ qbittorrent_container_complete_environment }}" + labels: "{{ qbittorrent_container_complete_labels }}" + networks: "{{ qbittorrent_container_complete_networks | default(omit) }}" + ports: "{{ qbittorrent_container_ports }}" + user: "{{ qbittorrent_user_info.uid }}:{{ qbittorrent_user_info.group }}" + restart_policy: "{{ qbittorrent_container_restart_policy }}" + state: started diff --git a/roles/qbittorrent/vars/main.yml b/roles/qbittorrent/vars/main.yml new file mode 100644 index 0000000..e93080a --- /dev/null +++ b/roles/qbittorrent/vars/main.yml @@ -0,0 +1,12 @@ +--- + +qbittorrent_container_volumes_base: + - "{{ qbittorrent_config_path }}:/config:z" + - "{{ qbittorrent_data_path }}:/data:z" +qbittorrent_container_complete_volumes: "{{ qbittorrent_container_volumes_base + qbittorrent_container_volumes }}" + +qbittorrent_container_labels_base: +qbittorrent_container_complete_labels: "{{ qbittorrent_container_labels_base | combine(qbittorrent_container_labels) }}" + +qbittorrent_container_environment_base: +qbittorrent_container_complete_environment: "{{ qbittorrent_container_labels_base | combine(qbittorrent_container_labels) }}" -- 2.45.2