diff --git a/roles/calibre/tasks/install.yml b/roles/calibre/tasks/install.yml new file mode 100644 index 000000000..25e498906 --- /dev/null +++ b/roles/calibre/tasks/install.yml @@ -0,0 +1,117 @@ +- name: Download latest linux-installer.py from GitHub to calibre-installer.py +# seems to work with just about any Linux, and deals with dependencies + get_url: + url: "{{ calibre_src_url }}" + dest: "{{ downloads_dir }}/calibre-installer.py" + mode: 0755 + force: yes + backup: yes + register: calibre_download_output + when: internet_available and is_redhat + +# ALWAYS DEFINED, DESPITE get_url DOCUMENTATION CLAIM... +# - debug: +# msg: "{{ calibre_download_output.src }}" +# +# DEFINED ONLY WHEN /opt/iiab/downloads/calibre-installer.py CHANGES +# - debug: +# msg: "{{ calibre_download_output.backup_file }}" + +# OOPS BAD IDEA: changes in https://github.com/kovidgoyal/calibre/commits/master/setup/linux-installer.py are not sync'd with Calibre releases! +# - name: FORCE AN UPGRADE IF calibre-installer.py HAS CHANGED, IF SO ORIGINAL IS SAVED TO {{ calibre_download_output.backup_file }} +# file: +# path: /usr/bin/calibre-uninstall +# state: absent +# when: calibre_download_output.backup_file is defined + +- name: Check if calibre-installer.py exists in /opt/iiab/downloads + stat: + path: "{{ downloads_dir }}/calibre-installer.py" + register: calib_inst + when: is_redhat + +- name: Check if calibre-uninstall exists in /usr/bin + stat: + path: "/usr/bin/calibre-uninstall" + register: calib_uninst + when: is_redhat + +#- name: FAIL (force Ansible to exit) IF /opt/iiab/downloads/calibre-installer.py doesn't exist OR needed Internet connection is missing +# meta: end_play +# fail: +# msg: "{{ downloads_dir }}/calibre-installer.py and an Internet connection are REQUIRED in order to install Calibre!" +# when: (not calib_inst.stat.exists) or (not internet_available and not calib_uninst.stat.exists) + +# INSTALL THE LATEST CALIBRE (calibre-server etc) ON ALL OS'S - RUNS IF /usr/bin/calibre-uninstall DOES NOT ALEADY EXIST + +- name: Run calibre-installer.py to install Calibre programs into /usr/bin - MANUALLY REMOVE /usr/bin/calibre-uninstall TO FORCE calibre-installer.py TO REINSTALL/UPGRADE HERE! + shell: "{{ downloads_dir }}/calibre-installer.py >> /dev/null" + args: + creates: /usr/bin/calibre-uninstall + when: internet_available and is_redhat + +- name: Install Calibre (OS's other than CentOS) + package: name={{ item }} + state=present + with_items: + - calibre + when: calibre_install and ansible_distribution != 'CentOS' + +- name: Create calibre-serve.service and calibre.conf + template: + backup: no + src: "{{ item.src }}" + dest: "{{ item.dest }}" + owner: root + group: root + mode: "{{ item.mode }}" + 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'} + +# http://box:8080 & http://box:8080/mobile WORK BUT OTHER URL'S LIKE http://box/books ARE A MESS (BOOKS RARELY DISPLAY) +- name: Create calibre.conf link for UNTESTED http://box/books etc (debuntu) + file: + src: /etc/apache2/sites-available/calibre.conf + dest: /etc/apache2/sites-enabled/calibre.conf + state: link + when: is_debuntu + +# CREATE CALIBRE DATABASE WITH A SAMPLE BOOK + +- name: Disable Calibre service -- stops calibre-server by Kovid Goyal + service: + name: calibre-serve + enabled: no + state: stopped + +- name: Create /library/calibre (mandatory since Calibre 3.x) + file: + path: "{{ calibre_dbpath }}" + state: directory + mode: 0666 + +- name: Check if sample book exists in /opt/iiab/downloads + stat: + path: "{{ content_base }}/downloads/{{ calibre_sample_book }}" + register: sample_bk + +- name: Download sample book (mandatory since Calibre 3.x) + get_url: + url: "{{ iiab_download_url }}/{{ calibre_sample_book }}" + dest: "{{ content_base }}/downloads" + when: internet_available and not sample_bk.stat.exists + +- name: Check if sample book exists in /opt/iiab/downloads + stat: + path: "{{ content_base }}/downloads/{{ calibre_sample_book }}" + register: sample_bk + +- name: Check if /library/calibre/metadata.db exists + stat: + path: "{{ calibre_dbpath }}/metadata.db" + register: calibre_db + +- name: Incorporate sample book into Calibre DB (mandatory since Calibre 3.x) + shell: "calibredb add {{ content_base }}/downloads/{{ calibre_sample_book }} --with-library {{ calibre_dbpath }}" + when: sample_bk.stat.exists and not calibre_db.stat.exists diff --git a/roles/calibre/tasks/main.yml b/roles/calibre/tasks/main.yml index fff786e61..02005883a 100644 --- a/roles/calibre/tasks/main.yml +++ b/roles/calibre/tasks/main.yml @@ -1,61 +1,11 @@ -- name: Download latest linux-installer.py from GitHub to calibre-installer.py -# seems to work with just about any Linux, and deals with dependencies - get_url: - url: "{{ calibre_src_url }}" - dest: "{{ downloads_dir }}/calibre-installer.py" - mode: 0755 - force: yes - backup: yes - register: calibre_download_output - when: internet_available and is_redhat - -# ALWAYS DEFINED, DESPITE get_url DOCUMENTATION CLAIM... -# - debug: -# msg: "{{ calibre_download_output.src }}" -# -# DEFINED ONLY WHEN /opt/iiab/downloads/calibre-installer.py CHANGES -# - debug: -# msg: "{{ calibre_download_output.backup_file }}" - -# OOPS BAD IDEA: changes in https://github.com/kovidgoyal/calibre/commits/master/setup/linux-installer.py are not sync'd with Calibre releases! -# - name: FORCE AN UPGRADE IF calibre-installer.py HAS CHANGED, IF SO ORIGINAL IS SAVED TO {{ calibre_download_output.backup_file }} -# file: -# path: /usr/bin/calibre-uninstall -# state: absent -# when: calibre_download_output.backup_file is defined - -- name: Check if calibre-installer.py exists in /opt/iiab/downloads +- name: Check if /library/calibre/metadata.db exists stat: - path: "{{ downloads_dir }}/calibre-installer.py" - register: calib_inst - when: is_redhat + path: "{{ calibre_dbpath }}/metadata.db" + register: calibre_db -- name: Check if calibre-uninstall exists in /usr/bin - stat: - path: "/usr/bin/calibre-uninstall" - register: calib_uninst - when: is_redhat - -#- name: FAIL (force Ansible to exit) IF /opt/iiab/downloads/calibre-installer.py doesn't exist OR needed Internet connection is missing -# meta: end_play -# fail: -# msg: "{{ downloads_dir }}/calibre-installer.py and an Internet connection are REQUIRED in order to install Calibre!" -# when: (not calib_inst.stat.exists) or (not internet_available and not calib_uninst.stat.exists) - -# INSTALL THE LATEST CALIBRE (calibre-server etc) ON ALL OS'S - RUNS IF /usr/bin/calibre-uninstall DOES NOT ALEADY EXIST - -- name: Run calibre-installer.py to install Calibre programs into /usr/bin - MANUALLY REMOVE /usr/bin/calibre-uninstall TO FORCE calibre-installer.py TO REINSTALL/UPGRADE HERE! - shell: "{{ downloads_dir }}/calibre-installer.py >> /dev/null" - args: - creates: /usr/bin/calibre-uninstall - when: internet_available and is_redhat - -- name: Install Calibre (OS's other than CentOS) - package: name={{ item }} - state=present - with_items: - - calibre - when: calibre_install and ansible_distribution != 'CentOS' +- name: Install Calibre + include_tasks: install.yml + when: not calibre_db.stat.exists - name: Create calibre-serve.service and calibre.conf template: @@ -68,6 +18,7 @@ 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: calibre_enabled # http://box:8080 & http://box:8080/mobile WORK BUT OTHER URL'S LIKE http://box/books ARE A MESS (BOOKS RARELY DISPLAY) - name: Create calibre.conf link for UNTESTED http://box/books etc (debuntu) @@ -75,48 +26,7 @@ src: /etc/apache2/sites-available/calibre.conf dest: /etc/apache2/sites-enabled/calibre.conf state: link - when: is_debuntu - -# CREATE CALIBRE DATABASE WITH A SAMPLE BOOK - -- name: Disable Calibre service -- stops calibre-server by Kovid Goyal - service: - name: calibre-serve - enabled: no - state: stopped - -- name: Create /library/calibre (mandatory since Calibre 3.x) - file: - path: "{{ calibre_dbpath }}" - state: directory - mode: 0666 - -- name: Check if sample book exists in /opt/iiab/downloads - stat: - path: "{{ content_base }}/downloads/{{ calibre_sample_book }}" - register: sample_bk - -- name: Download sample book (mandatory since Calibre 3.x) - get_url: - url: "{{ iiab_download_url }}/{{ calibre_sample_book }}" - dest: "{{ content_base }}/downloads" - when: internet_available and not sample_bk.stat.exists - -- name: Check if sample book exists in /opt/iiab/downloads - stat: - path: "{{ content_base }}/downloads/{{ calibre_sample_book }}" - register: sample_bk - -- name: Check if /library/calibre/metadata.db exists - stat: - path: "{{ calibre_dbpath }}/metadata.db" - register: calibre_db - -- name: Incorporate sample book into Calibre DB (mandatory since Calibre 3.x) - shell: "calibredb add {{ content_base }}/downloads/{{ calibre_sample_book }} --with-library {{ calibre_dbpath }}" - when: sample_bk.stat.exists and not calibre_db.stat.exists - -# WRAP UP CALIBRE INSTALLATION + when: calibre_enabled and is_debuntu - name: Enable Calibre service -- runs calibre-server by Kovid Goyal service: @@ -127,11 +37,17 @@ #poll: 5 when: calibre_enabled -# - name: Disable Calibre service -- stops calibre-server by Kovid Goyal -# service: name=calibre-serve -# enabled=no -# state=stopped -# when: not calibre_enabled +#- 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: Disable Calibre service -- stops calibre-server by Kovid Goyal +# service: name=calibre-serve +# enabled=no +# state=stopped +# when: not calibre_enabled - name: Add 'calibre-serve' to service list ini_file: