From 0b9618febed23c7937f4d91f33c9e954d0745ead Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Thu, 13 Feb 2020 12:46:12 +0100
Subject: [PATCH] ansible-roles/spideroak#3 Implement spideroak validation

---
 tasks/main.yml      |  3 +++
 tasks/spideroak.yml |  8 ++++++++
 tasks/validate.yml  | 50 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 61 insertions(+)
 create mode 100644 tasks/validate.yml

diff --git a/tasks/main.yml b/tasks/main.yml
index cff401b..d601f28 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -12,4 +12,7 @@
     - name: Import spideroak
       import_tasks: spideroak.yml
 
+    - name: Validate Backup
+      import_tasks: validate.yml
+
   when: (not excluded_roles or "spideroak" not in excluded_roles) and spideroak_username is defined and spideroak_username != ""
diff --git a/tasks/spideroak.yml b/tasks/spideroak.yml
index 8f79019..b131cfc 100644
--- a/tasks/spideroak.yml
+++ b/tasks/spideroak.yml
@@ -37,6 +37,14 @@
 - name: Wait
   shell: sleep 5
 
+- name: Ensure Monitoring Directory
+  file:
+    path: /var/backups/spideroak-monitoring
+    state: directory
+
+- name: Add Monitoring Directory to SpiderOak
+  shell: SpiderOakONE --include-dir=/var/backups/spideroak-monitoring
+
 - name: Add Directories to SpiderOak
   shell: SpiderOakONE --include-dir={{ item }}
   with_items: '{{ spideroak_include|default([]) }}'
diff --git a/tasks/validate.yml b/tasks/validate.yml
new file mode 100644
index 0000000..046ce70
--- /dev/null
+++ b/tasks/validate.yml
@@ -0,0 +1,50 @@
+---
+# file: roles/spideroak/tasks/validate.yml
+
+- block:
+
+    - name: Generate Random String
+      set_fact: random_string="{{ lookup('password', '/tmp/passwordfile length=25 chars=ascii_letters,digits') }}"
+
+    - name: Store Random String in validation.txt
+      copy:
+        dest: /var/backups/spideroak-monitoring/validation.txt
+        mode: 0644
+        content: '{{ random_string }}'
+
+  tags:
+    - validation_create_random
+
+- block:
+
+    - name: Stop SpiderOak
+      service:
+        name: spideroak
+        state: stopped
+        pattern: SpiderOakONE
+
+    - name: Wait
+      shell: sleep 5
+
+    - name: Create File Share
+      shell: SpiderOakONE --share-single-file=/var/backups/spideroak-monitoring/validation.txt
+      register: spideroak_validation_link
+
+    - name: Start SpiderOak
+      service:
+        name: spideroak
+        state: started
+
+    - name: Download Share
+      get_url:
+        url: '{{ spideroak_validation_link.stdout_lines[0] }}'
+        dest: /tmp/spideroak.validation
+        mode: 0644
+
+    - name: Compare Strings
+      raw: diff /var/backups/spideroak-monitoring/validation.txt /tmp/spideroak.validation
+      register: diff_cmd
+      failed_when: diff_cmd.rc > 0
+
+  tags:
+    - validation_verify
-- 
GitLab