feat(qbittorrent): add ansible role for deploying in a container #10

Open
transcaffeine wants to merge 1 commits from transcaffeine/qbittorrent into main
4 changed files with 93 additions and 0 deletions
Showing only changes of commit c63bab408f - Show all commits

View File

@ -0,0 +1 @@
# `finallycoffee.media-streaming.qbittorrent` ansible role

View File

@ -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"

View File

@ -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

View File

@ -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) }}"