# 1. INSTALL THE LATEST CALIBRE 3.X+ (calibre, calibredb, calibre-server etc) ON ALL OS'S - name: Check if /usr/bin/calibre exists stat: path: "/usr/bin/calibre" register: calib_executable - name: Install Calibre via OS's package installer (IF /usr/bin/calibre MISSING) package: name: "{{ item }}" state: latest with_items: - calibre - calibre-bin 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 IF IT EXISTS (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 Calibre service -- calibre-server by Kovid Goyal # systemd: service: 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: Check if /library/calibre/metadata.db exists 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 calibre.conf link 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 calibre.conf link if disabled (debuntu) file: dest: /etc/apache2/sites-enabled/calibre.conf state: absent when: (not calibre_enabled) and is_debuntu - name: Enable Calibre service -- runs calibre-server by Kovid Goyal service: name: calibre-serve enabled: yes state: started when: calibre_enabled #async: 900 #poll: 5 - name: Forcing apache to reread configs service: name: "{{ apache_service }}" state: reloaded - name: Add 'calibre' to list of services at /etc/iiab/iiab.ini ini_file: dest: "{{ 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: enabled value: "{{ calibre_enabled }}"