From 8c8e44ce03d045a97204fa8a0d4a10e6c37379d1 Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Sat, 14 Sep 2019 17:26:37 -0500 Subject: [PATCH] calibre - iiab_installed --- roles/calibre/tasks/enable.yml | 54 +++++++++++ roles/calibre/tasks/install.yml | 87 ++++++++++++++++++ roles/calibre/tasks/main.yml | 154 +------------------------------- 3 files changed, 145 insertions(+), 150 deletions(-) create mode 100644 roles/calibre/tasks/enable.yml create mode 100644 roles/calibre/tasks/install.yml diff --git a/roles/calibre/tasks/enable.yml b/roles/calibre/tasks/enable.yml new file mode 100644 index 000000000..64e0215de --- /dev/null +++ b/roles/calibre/tasks/enable.yml @@ -0,0 +1,54 @@ +# 5. WRAP UP: ENABLE CALIBRE SERVICE, http://box/books ETC + +# http://box:8080 & http://box:8080/mobile WORK BUT OTHER URL'S LIKE http://box/calibre ARE A MESS (BOOKS RARELY DISPLAY) +# +# 2018-08-27 POSSIBLE FIX...CONSIDER THIS ProxyPass / ProxyPassReverse TECHNIQUE: +# https://github.com/iiab/iiab/tree/master/roles/calibre-web/templates/calibre-web.conf.j2 +# (anyway this works great for calibre-web, allowing http://box/books +# to work even better than http://box:8083 when box == 192.168.0.x !) +- name: Create symlink calibre.conf from sites-enabled to sites-available, for UNTESTED http://box/calibre etc (debuntu) + file: + src: /etc/apache2/sites-available/calibre.conf + dest: /etc/apache2/sites-enabled/calibre.conf + state: link + when: calibre_enabled and is_debuntu + +- name: Remove symlink /etc/apache2/sites-enabled/calibre.conf (debuntu) + file: + dest: /etc/apache2/sites-enabled/calibre.conf + state: absent + when: (not calibre_enabled) and is_debuntu + +- name: Enable & Start service 'calibre-serve' (/usr/bin/calibre-server by Kovid Goyal) + service: + name: calibre-serve + enabled: yes + state: started + when: calibre_enabled | bool + #async: 900 + #poll: 5 + +- name: Reload Apache service ({{ apache_service }}) + systemd: + name: "{{ apache_service }}" + state: reloaded + +- name: Add 'calibre' variable values to {{ iiab_ini_file }} + ini_file: + path: "{{ iiab_ini_file }}" + section: calibre + option: "{{ item.option }}" + value: "{{ item.value }}" + with_items: + - option: name + value: Calibre + - option: description + value: '"Calibre is an extremely popular personal library system for e-books."' + - option: url + value: "{{ calibre_src_url }}" + - option: database + value: "{{ calibre_dbpath }}" + - option: port + value: "{{ calibre_port }}" + - option: calibre_enabled + value: "{{ calibre_enabled }}" diff --git a/roles/calibre/tasks/install.yml b/roles/calibre/tasks/install.yml new file mode 100644 index 000000000..c0e147e8a --- /dev/null +++ b/roles/calibre/tasks/install.yml @@ -0,0 +1,87 @@ +# 1. INSTALL THE LATEST CALIBRE 3.X+ (calibre, calibredb, calibre-server etc) ON ALL OS'S + +- name: Does /usr/bin/calibre exist? + stat: + path: "/usr/bin/calibre" + register: calib_executable + +- name: "Install OS's latest packages: calibre, calibre-bin (IF not rpi AND /usr/bin/calibre MISSING)" + package: + name: + - calibre + - calibre-bin + state: latest + when: internet_available and not is_rpi and (not calib_executable.stat.exists) + +- name: Install Calibre .debs IF calibre_via_debs (AND /usr/bin/calibre WAS MISSING) + include_tasks: debs.yml + when: calibre_via_debs and (not calib_executable.stat.exists) + +- name: Install Calibre via calibre-installer.py IF calibre_via_python (AND /usr/bin/calibre WAS MISSING) + include_tasks: py-installer.yml + when: calibre_via_python and (not calib_executable.stat.exists) + +# SEE calibre_via_python's value vars/default_vars.yml, vars/ubuntu-18.yml & +# vars/raspbian-9.yml: try to AVOID Python installer on Raspbian since its +# .deb's (http://raspbian.raspberrypi.org/raspbian/pool/main/c/calibre/) +# are updated within about 10 days of Calibre's quasi-monthly releases! +# +# BUT IF ABSOLUTELY NEC: (SEE roles/calibre/tasks/debs.yml) +# - run testing branch for RPi: scripts/calibre-install-latest-rpi.sh +# - run testing branch for Ubuntu 16.04: scripts/calibre-install-latest.sh +# - run unstable branch for Debian etc: scripts/calibre-install-unstable.sh + +- name: Create calibre-serve.service and calibre.conf (IF /usr/bin/calibre WAS MISSING) + template: + src: "{{ item.src }}" + dest: "{{ item.dest }}" + owner: root + group: root + mode: "{{ item.mode }}" + backup: no + #register: calibre_config + with_items: + - { src: 'calibre-serve.service.j2', dest: '/etc/systemd/system/calibre-serve.service', mode: '0644'} + - { src: 'calibre.conf', dest: '/etc/{{ apache_config_dir }}', mode: '0644'} + when: (not calib_executable.stat.exists) + +- name: Stop service 'calibre-serve' (/usr/bin/calibre-server by Kovid Goyal) + systemd: + name: calibre-serve + state: stopped + daemon_reload: yes + +# 3. CREATE USER DATABASE + +- name: Create /library/calibre (mandatory since Calibre 3.x) + file: + path: "{{ calibre_dbpath }}" + state: directory + #mode: 0755 + +- name: Copy template userdb to /library/calibre/users.sqlite (IF /usr/bin/calibre WAS MISSING) + copy: + src: /opt/iiab/iiab/roles/calibre/templates/users.sqlite + dest: "{{ calibre_userdb }}" + owner: root + group: root + mode: 0644 + when: (not calib_executable.stat.exists) + +# 4. CREATE CONTENT DATABASE WITH A SAMPLE BOOK (REQUIRED AS OF CALIBRE 3.x) + +- name: Does /library/calibre/metadata.db exist? + stat: + path: "{{ calibre_dbpath }}/metadata.db" + register: calibre_db + +- name: Create database (required since Calibre 3.x) with a sample book + include_tasks: create-db.yml + when: not calibre_db.stat.exists + +- name: Add 'calibre_installed' variable values to {{ iiab_installed }} + lineinfile: + dest: "{{ iiab_installed }}" + regexp: '^calibreweb_installed' + line: 'calibre_installed' + state: present diff --git a/roles/calibre/tasks/main.yml b/roles/calibre/tasks/main.yml index b327558e4..6b0a77d70 100644 --- a/roles/calibre/tasks/main.yml +++ b/roles/calibre/tasks/main.yml @@ -1,151 +1,5 @@ -# 1. INSTALL THE LATEST CALIBRE 3.X+ (calibre, calibredb, calibre-server etc) ON ALL OS'S +- include_tasks: install.yml + when: calibre_install and not calibre_installed is defined -- name: Does /usr/bin/calibre exist? - stat: - path: "/usr/bin/calibre" - register: calib_executable - -- name: "Install OS's latest packages: calibre, calibre-bin (IF not rpi AND /usr/bin/calibre MISSING)" - package: - name: - - calibre - - calibre-bin - state: latest - when: internet_available and not is_rpi and (not calib_executable.stat.exists) - -- name: Install Calibre .debs IF calibre_via_debs (AND /usr/bin/calibre WAS MISSING) - include_tasks: debs.yml - when: calibre_via_debs and (not calib_executable.stat.exists) - -- name: Install Calibre via calibre-installer.py IF calibre_via_python (AND /usr/bin/calibre WAS MISSING) - include_tasks: py-installer.yml - when: calibre_via_python and (not calib_executable.stat.exists) - -# SEE calibre_via_python's value vars/default_vars.yml, vars/ubuntu-18.yml & -# vars/raspbian-9.yml: try to AVOID Python installer on Raspbian since its -# .deb's (http://raspbian.raspberrypi.org/raspbian/pool/main/c/calibre/) -# are updated within about 10 days of Calibre's quasi-monthly releases! -# -# BUT IF ABSOLUTELY NEC: (SEE roles/calibre/tasks/debs.yml) -# - run testing branch for RPi: scripts/calibre-install-latest-rpi.sh -# - run testing branch for Ubuntu 16.04: scripts/calibre-install-latest.sh -# - run unstable branch for Debian etc: scripts/calibre-install-unstable.sh - -- name: Create calibre-serve.service and calibre.conf (IF /usr/bin/calibre WAS MISSING) - template: - src: "{{ item.src }}" - dest: "{{ item.dest }}" - owner: root - group: root - mode: "{{ item.mode }}" - backup: no - #register: calibre_config - with_items: - - { src: 'calibre-serve.service.j2', dest: '/etc/systemd/system/calibre-serve.service', mode: '0644'} - - { src: 'calibre.conf', dest: '/etc/{{ apache_config_dir }}', mode: '0644'} - when: (not calib_executable.stat.exists) - -- name: Force systemd to reread configs (IF /usr/bin/calibre WAS MISSING) - systemd: - daemon_reload: yes - when: (not calib_executable.stat.exists) - #when: calibre_config.changed - -# 2. STOP CALIBRE SERVICE (REQUIRED FOR DB ACTIVITY...AND IF not calibre_enabled) - -#- name: Check if Calibre systemd service exists -# stat: -# path: /etc/systemd/system/calibre-serve.service -# register: calibre_svc - -- name: Stop service 'calibre-serve' (/usr/bin/calibre-server by Kovid Goyal) - systemd: - name: calibre-serve - state: stopped - #enabled: no - #register: command_result # gist.github.com/tyrells/0a79681de339237cb04c - #failed_when: False # Never Fail during "systemctl stop calibre-serve" (even if service doesn't exist!) - #when: calibre_svc.stat.exists - -# 3. CREATE USER DATABASE - -- name: Create /library/calibre (mandatory since Calibre 3.x) - file: - path: "{{ calibre_dbpath }}" - state: directory - #mode: 0755 - -- name: Copy template userdb to /library/calibre/users.sqlite (IF /usr/bin/calibre WAS MISSING) - copy: - src: /opt/iiab/iiab/roles/calibre/templates/users.sqlite - dest: "{{ calibre_userdb }}" - owner: root - group: root - mode: 0644 - when: (not calib_executable.stat.exists) - -# 4. CREATE CONTENT DATABASE WITH A SAMPLE BOOK (REQUIRED AS OF CALIBRE 3.x) - -- name: Does /library/calibre/metadata.db exist? - stat: - path: "{{ calibre_dbpath }}/metadata.db" - register: calibre_db - -- name: Create database (required since Calibre 3.x) with a sample book - include_tasks: create-db.yml - when: not calibre_db.stat.exists - -# 5. WRAP UP: ENABLE CALIBRE SERVICE, http://box/books ETC - -# http://box:8080 & http://box:8080/mobile WORK BUT OTHER URL'S LIKE http://box/calibre ARE A MESS (BOOKS RARELY DISPLAY) -# -# 2018-08-27 POSSIBLE FIX...CONSIDER THIS ProxyPass / ProxyPassReverse TECHNIQUE: -# https://github.com/iiab/iiab/tree/master/roles/calibre-web/templates/calibre-web.conf.j2 -# (anyway this works great for calibre-web, allowing http://box/books -# to work even better than http://box:8083 when box == 192.168.0.x !) -- name: Create symlink calibre.conf from sites-enabled to sites-available, for UNTESTED http://box/calibre etc (debuntu) - file: - src: /etc/apache2/sites-available/calibre.conf - dest: /etc/apache2/sites-enabled/calibre.conf - state: link - when: calibre_enabled and is_debuntu - -- name: Remove symlink /etc/apache2/sites-enabled/calibre.conf (debuntu) - file: - dest: /etc/apache2/sites-enabled/calibre.conf - state: absent - when: (not calibre_enabled) and is_debuntu - -- name: Enable & Start service 'calibre-serve' (/usr/bin/calibre-server by Kovid Goyal) - service: - name: calibre-serve - enabled: yes - state: started - when: calibre_enabled | bool - #async: 900 - #poll: 5 - -- name: Reload Apache service ({{ apache_service }}) - systemd: - name: "{{ apache_service }}" - state: reloaded - -- name: Add 'calibre' variable values to {{ iiab_ini_file }} - ini_file: - path: "{{ iiab_ini_file }}" - section: calibre - option: "{{ item.option }}" - value: "{{ item.value }}" - with_items: - - option: name - value: Calibre - - option: description - value: '"Calibre is an extremely popular personal library system for e-books."' - - option: url - value: "{{ calibre_src_url }}" - - option: database - value: "{{ calibre_dbpath }}" - - option: port - value: "{{ calibre_port }}" - - option: calibre_enabled - value: "{{ calibre_enabled }}" +- include_tasks: enable.yml + when: calibre_install or calibre_installed is defined