From fab0d5d2065b385849b8e639e80e4197eb2ce5b4 Mon Sep 17 00:00:00 2001
From: Adar Nimrod <nimrod@shore.co.il>
Date: Wed, 17 May 2017 20:25:41 +0300
Subject: [PATCH] - Full role.

---
 defaults/main.yml                     |  2 ++
 tasks/main.yml                        | 16 ++++++++++++
 tasks/transmission-rss.yml            | 37 +++++++++++++++++++++++++++
 templates/transmission-rss.service.j2 | 13 ++++++++++
 tests/playbook.yml                    |  3 +++
 tests/test_transmission.py            |  9 +++++++
 tests/test_transmission_rss.py        |  9 +++++++
 7 files changed, 89 insertions(+)
 create mode 100644 tasks/transmission-rss.yml
 create mode 100644 templates/transmission-rss.service.j2
 create mode 100644 tests/test_transmission.py
 create mode 100644 tests/test_transmission_rss.py

diff --git a/defaults/main.yml b/defaults/main.yml
index 0cb6c98..79eb997 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -1,2 +1,4 @@
 ---
 # defaults file for transmission
+
+transmission_rss_version: '0.2.4'
diff --git a/tasks/main.yml b/tasks/main.yml
index 2255ca0..723567e 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -6,3 +6,19 @@
     that:
         - ansible_pkg_mgr == 'apt'
         - ansible_service_mgr == 'systemd'
+
+- name: APT install
+  apt:
+      name: transmission-daemon
+      state: present
+      update_cache: True
+      cache_valid_time: 3600
+
+- name: Enable service
+  service:
+      name: transmission-daemon
+      state: started
+      enabled: True
+
+- include: transmission-rss.yml
+  when: transmission_rss_config is defined
diff --git a/tasks/transmission-rss.yml b/tasks/transmission-rss.yml
new file mode 100644
index 0000000..efcc0e4
--- /dev/null
+++ b/tasks/transmission-rss.yml
@@ -0,0 +1,37 @@
+---
+# tasks file for transmission-rss
+
+- name: APT install transmission-rss pre-requisites
+  apt:
+      name: ruby-rb-inotify
+      state: present
+      update_cache: True
+      cache_valid_time: 3600
+
+- name: Gem install transmission-rss
+  gem:
+      name: transmission-rss
+      version: '{{ transmission_rss_version }}'
+      state: present
+
+- name: Configure transmission-rss
+  copy:
+      content: '{{ transmission_rss_config|to_nice_yaml }}'
+      dest: /etc/transmission-rss.conf
+      owner: root
+      group: root
+      mode: 0o0644
+
+- name: Add transmission-rss service
+  template:
+      src: transmission-rss.service.j2
+      dest: /etc/systemd/system/transmission-rss.service
+      owner: root
+      group: root
+      mode: 0o0644
+
+- name: Enable transmission-rss service
+  service:
+      name: transmission-rss
+      state: started
+      enabled: True
diff --git a/templates/transmission-rss.service.j2 b/templates/transmission-rss.service.j2
new file mode 100644
index 0000000..b6fa2d2
--- /dev/null
+++ b/templates/transmission-rss.service.j2
@@ -0,0 +1,13 @@
+[Unit]
+Description=Transmission RSS daemon.
+After=network.target transmission-daemon.service
+
+[Service]
+Type=simple
+ExecStart=/usr/local/bin/transmission-rss
+ExecReload=/bin/kill -s HUP $MAINPID
+User=debian-transmission
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
diff --git a/tests/playbook.yml b/tests/playbook.yml
index 5e3cd37..97529ec 100644
--- a/tests/playbook.yml
+++ b/tests/playbook.yml
@@ -20,3 +20,6 @@
 - hosts: all
   roles:
     - role: transmission
+      transmission_rss_config:
+          feeds:
+          seen_file: ~/.config/transmission/seen
diff --git a/tests/test_transmission.py b/tests/test_transmission.py
new file mode 100644
index 0000000..67c6940
--- /dev/null
+++ b/tests/test_transmission.py
@@ -0,0 +1,9 @@
+from testinfra.utils.ansible_runner import AnsibleRunner
+
+testinfra_hosts = AnsibleRunner('.molecule/ansible_inventory').get_hosts('all')
+
+
+def test_transmission(host):
+    service = host.service('transmission-daemon')
+    assert service.is_running
+    assert service.is_enabled
diff --git a/tests/test_transmission_rss.py b/tests/test_transmission_rss.py
new file mode 100644
index 0000000..89490a3
--- /dev/null
+++ b/tests/test_transmission_rss.py
@@ -0,0 +1,9 @@
+from testinfra.utils.ansible_runner import AnsibleRunner
+
+testinfra_hosts = AnsibleRunner('.molecule/ansible_inventory').get_hosts('all')
+
+
+def test_transmission_rss(host):
+    service = host.service('transmission-rss')
+    assert service.is_running
+    assert service.is_enabled
-- 
GitLab