aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar meisterfischy <grbmn@kstn.in> 2022-01-22 17:17:33 +0100
committerGravatar meisterfischy <grbmn@kstn.in> 2022-01-22 17:17:33 +0100
commita28793b684b3299c95e04924ed18e0fe5cd6f107 (patch)
treeb91a6de277fd71f51f0e1ef9e9fdf1ff872c4104
parent07fbef0c792f8a6d0bade63aa4ec7372391a8696 (diff)
downloadansible_collection-a28793b684b3299c95e04924ed18e0fe5cd6f107.tar.gz
Added a role for a calibre-web server
-rw-r--r--roles/calibre/README.md16
-rw-r--r--roles/calibre/files/white.pdfbin0 -> 11540 bytes
-rw-r--r--roles/calibre/handlers/main.yml7
-rw-r--r--roles/calibre/tasks/main.yml56
-rw-r--r--roles/calibre/templates/cps.service.j214
5 files changed, 93 insertions, 0 deletions
diff --git a/roles/calibre/README.md b/roles/calibre/README.md
new file mode 100644
index 0000000..1dbc079
--- /dev/null
+++ b/roles/calibre/README.md
@@ -0,0 +1,16 @@
+# calibre-web
+
+Installed calibre-web with optional features if specified.
+Assumes the ssl cert and key are located at `/etc/ssl/certs/FQDN.(pem | key)`.
+
+```yaml
+ssl: true
+
+features:
+ - ldap
+ - oauth
+ - metadata
+ - comics
+```
+
+[List of possible features](https://github.com/janeczku/calibre-web/wiki/Dependencies-in-Calibre-Web-Linux-Windows)
diff --git a/roles/calibre/files/white.pdf b/roles/calibre/files/white.pdf
new file mode 100644
index 0000000..95ea114
--- /dev/null
+++ b/roles/calibre/files/white.pdf
Binary files differ
diff --git a/roles/calibre/handlers/main.yml b/roles/calibre/handlers/main.yml
new file mode 100644
index 0000000..735348d
--- /dev/null
+++ b/roles/calibre/handlers/main.yml
@@ -0,0 +1,7 @@
+---
+- name: Restart cps
+ systemd:
+ name: cps.service
+ state: restarted
+ enabled: true
+ become: true
diff --git a/roles/calibre/tasks/main.yml b/roles/calibre/tasks/main.yml
new file mode 100644
index 0000000..705d167
--- /dev/null
+++ b/roles/calibre/tasks/main.yml
@@ -0,0 +1,56 @@
+---
+- name: Install packages
+ apt:
+ name:
+ - calibre
+ - python3-pip
+ - libsasl2-dev
+ - libldap2-dev
+ - libssl-dev
+ become: true
+
+- name: Check library existence
+ stat:
+ path: /opt/calibre/library
+ register: library
+
+- name: Copy first book
+ copy:
+ dest: /opt/calibre
+ src: white.pdf
+ become: true
+ when: not library.stat.exists
+
+- name: Initialize calibre library
+ shell:
+ cmd: calibredb --library-path=library add white.pdf & calibredb --library-path=library remove 1
+ chdir: /opt/calibre
+ creates: library
+ become: true
+
+- name: Change ownership of calibre library
+ file:
+ path: /opt/calibre/library
+ recurse: true
+ owner: calibre
+ group: calibre
+ become: true
+
+- name: Remove first book file
+ file:
+ path: /opt/calibre/white.pdf
+ state: absent
+ become: true
+ when: not library.stat.exists
+
+- name: Install calibre web with pip
+ pip:
+ name: calibreweb[{{ features | join(",") }}]
+ become: true
+
+- name: Create systemd unit
+ template:
+ dest: /etc/systemd/system/cps.service
+ src: cps.service.j2
+ become: true
+ notify: Restart cps
diff --git a/roles/calibre/templates/cps.service.j2 b/roles/calibre/templates/cps.service.j2
new file mode 100644
index 0000000..005297d
--- /dev/null
+++ b/roles/calibre/templates/cps.service.j2
@@ -0,0 +1,14 @@
+[Unit]
+Description=Calibre-Web
+
+[Service]
+Type=simple
+User=calibre
+{% if ssl == true %}
+ExecStart=/usr/local/bin/cps -c '/etc/ssl/certs/{{ ansible_facts.fqdn }}.pem' -k '/etc/ssl/private/{{ ansible_facts.fqdn }}.key'
+{% else %}
+ExecStart=/usr/local/bin/cps
+{% endif %}
+
+[Install]
+WantedBy=multi-user.target