aboutsummaryrefslogtreecommitdiff
path: root/roles
diff options
context:
space:
mode:
Diffstat (limited to 'roles')
-rw-r--r--roles/calibre/README.md16
-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
4 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/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..d3b0d06
--- /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: Download first book
+ get_url:
+ url: https://github.com/progit/progit2/releases/download/2.1.336/progit.pdf
+ dest: /opt/calibre/progit.pdf
+ become: true
+ when: not library.stat.exists
+
+- name: Initialize calibre library
+ shell:
+ cmd: calibredb --library-path=library add progit.pdf
+ 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/progit.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