- name: Create Linux user {{ kolibri_user }} and add it to groups {{ apache_user }}, disk
  user:
    name: "{{ kolibri_user }}"
    groups:
      - "{{ apache_user }}"
      - disk
    state: present
    shell: /bin/false
    system: yes
    create_home: no

- name: Create directory {{ kolibri_home }} for Kolibri content, configuration, sqlite3 databases ({{ kolibri_user }}:{{ apache_user }}, '0755')
  file:
    state: directory
    path: "{{ kolibri_home }}"     # /library/kolibri
    owner: "{{ kolibri_user }}"    # kolibri
    group: "{{ apache_user }}"     # www-data (on Debian/Ubuntu/Raspbian)

- name: Create directory /etc/kolibri
  file:
    state: directory
    name: /etc/kolibri

- name: Save kolibri_user ({{ kolibri_user }}) to /etc/kolibri/username
  copy:
    content: "{{ kolibri_user }}"
    dest: /etc/kolibri/username

- name: Save kolibri_home (KOLIBRI_HOME="{{ kolibri_home }}") to /etc/kolibri/daemon.conf
  copy:
    content: 'KOLIBRI_HOME="{{ kolibri_home }}"'
    dest: /etc/kolibri/daemon.conf

- name: apt install latest Kolibri .deb from {{ kolibri_deb_url }} (populates {{ kolibri_home }}, migrates database)    # i.e. /library/kolibri
  apt:
    deb: "{{ kolibri_deb_url }}"    # https://learningequality.org/r/kolibri-deb-latest
  environment:
    KOLIBRI_HOME: "{{ kolibri_home }}"    # these don't do a thing for now but
    KOLIBRI_USER: "{{ kolibri_user }}"    # both can't hurt & Might Help Later
  when: internet_available

- name: 'Install from template: /etc/systemd/system/kolibri.service'
  template:
    src: kolibri.service.j2
    dest: /etc/systemd/system/kolibri.service

- name: 'Install from template: /etc/{{ apache_conf_dir }}/kolibri.conf'
  template:
    src: kolibri.conf.j2
    dest: "/etc/{{ apache_conf_dir }}/kolibri.conf"    # apache2/sites-available
  when: apache_installed is defined

- name: Stop 'kolibri' systemd service, for Kolibri provisioning (after daemon_reload)
  systemd:
    name: kolibri
    daemon_reload: yes
    state: stopped


# 2019-10-01: Should no longer be nec, thanks to /etc/kolibri/daemon.conf
#             containing KOLIBRI_HOME="/library/kolibri" (above)
#- name: Run Kolibri migrations to begin populating {{ kolibri_home }}    # i.e. /library/kolibri
#  shell: export KOLIBRI_HOME="{{ kolibri_home }}" && "{{ kolibri_exec_path }}" manage migrate
#  ignore_errors: yes
#  become: yes
#  become_user: "{{ kolibri_user }}"
#  when: kolibri_provision

# 2020-01-05: Deprecated per https://github.com/iiab/iiab/issues/2103
#- name: Set Kolibri default language ({{ kolibri_language }})
#  shell: export KOLIBRI_HOME="{{ kolibri_home }}" && "{{ kolibri_exec_path }}" language setdefault "{{ kolibri_language }}"
#  ignore_errors: yes
#  become: yes
#  become_user: "{{ kolibri_user }}"
#  when: kolibri_provision

- name: 'Provision Kolibri, while setting: facility name, admin acnt / password, preset type, and language'
  shell: >
    export KOLIBRI_HOME="{{ kolibri_home }}" &&
    "{{ kolibri_exec_path }}" manage provisiondevice --facility "{{ kolibri_facility }}"
    --superusername "{{ kolibri_admin_user }}" --superuserpassword "{{ kolibri_admin_password }}"
    --preset "{{ kolibri_preset }}" --language_id "{{ kolibri_language }}"
    #--preset "{{ kolibri_preset }}" --language_id "{{ kolibri_language }}" --verbosity 0 --noinput
  ignore_errors: yes
  become: yes
  become_user: "{{ kolibri_user }}"
  when: kolibri_provision

- name: chown -R {{ kolibri_user }}:{{ apache_user }} {{ kolibri_home }} for good measure?
  file:
    path: "{{ kolibri_home }}"     # /library/kolibri
    owner: "{{ kolibri_user }}"    # kolibri
    group: "{{ apache_user }}"     # www-data (on Debian/Ubuntu/Raspbian)
    recurse: yes
  when: kolibri_provision


# 2019-10-07: Moved to roles/httpd/tasks/main.yml
# 2019-09-29: roles/kiwix/tasks/kiwix_install.yml installs 4 Apache modules
# for similar purposes (not all nec?)  Only 1 (proxy_http) is needed here.
#- name: Enable Apache module proxy_http for http://box{{ kolibri_url }}    # i.e. http://box/kolibri
#  apache2_module:
#    name: proxy_http


# RECORD Kolibri AS INSTALLED

- name: "Set 'kolibri_installed: True'"
  set_fact:
    kolibri_installed: True

- name: "Add 'kolibri_installed: True' to {{ iiab_state_file }}"
  lineinfile:
    path: "{{ iiab_state_file }}"    # /etc/iiab/iiab_state.yml
    regexp: '^kolibri_installed'
    line: 'kolibri_installed: True'
