1
0
Fork 0
mirror of https://github.com/iiab/iiab.git synced 2025-02-13 11:42:08 +00:00
iiab/roles/kolibri/tasks/main.yml

183 lines
6.7 KiB
YAML
Raw Normal View History

- name: Create Linux user '{{ kolibri_user }}' and add it to groups '{{ apache_user }}', 'disk'
user:
name: "{{ kolibri_user }}"
groups:
2018-07-16 20:23:07 +00:00
- "{{ apache_user }}"
- disk
state: present
shell: /bin/false
system: yes
create_home: no
2019-09-30 04:12:53 +00:00
- name: Create {{ kolibri_home }} (for Kolibri content, configuration, sqlite3 databases)
file:
2019-09-26 23:48:41 +00:00
path: "{{ kolibri_home }}" # /library/kolibri
owner: "{{ kolibri_user }}" # kolibri
2019-09-26 23:48:41 +00:00
group: "{{ apache_user }}" # www-data (on Debian/Ubuntu/Raspbian)
mode: 0755
state: directory
2019-09-30 04:12:53 +00:00
- name: Create /etc/kolibri
file:
name: /etc/kolibri
state: directory
owner: root
group: root
mode: 0755
# 2019-10-14: An alternative might be to put KOLIBRI_USER="kolibri" into
# /etc/kolibri/conf.d/iiab.conf
- name: Save kolibri_user ({{ kolibri_user }}) to /etc/kolibri/username
copy:
content: "{{ kolibri_user }}" # i.e. kolibri
dest: /etc/kolibri/username
owner: root
group: root
mode: 0644
# 2019-10-14: An alternative mentioned by @benjaoming (Benjamin Bach) would be
# to put KOLIBRI_HOME="/library/kolibri" into /etc/kolibri/conf.d/iiab.conf
- name: Save kolibri_home (KOLIBRI_HOME="{{ kolibri_home }}") to /etc/kolibri/daemon.conf
copy:
content: 'KOLIBRI_HOME="{{ kolibri_home }}"' # i.e. /library/kolibri
dest: /etc/kolibri/daemon.conf
owner: root
group: root
mode: 0644
- name: apt install latest Kolibri .deb from {{ kolibri_deb_url }} (populates {{ kolibri_home }} / migrates database, based on params set in /etc/kolibri)
apt:
2019-09-26 23:37:28 +00:00
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
2019-09-26 23:37:28 +00:00
when: internet_available | bool
- name: 'Install from templates: kolibri.service unit file for systemd & sites-available/kolibri.conf for Apache'
template:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: root
group: root
mode: 0644
with_items:
- { src: 'kolibri.service.j2', dest: '/etc/systemd/system/kolibri.service' }
- { src: 'kolibri.conf.j2', dest: '/etc/apache2/sites-available/kolibri.conf' }
- name: Enable 'kolibri' systemd service (for reboots) but ensure it's stopped for Kolibri provisioning
systemd:
name: kolibri
daemon_reload: yes
enabled: 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 | bool
2018-09-23 05:00:22 +00:00
- name: Set Kolibri default language ({{ kolibri_language }})
2018-09-23 05:00:22 +00:00
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 | bool
2018-09-23 05:00:22 +00:00
- name: 'Provision Kolibri, while setting: facility name, admin acnt / password, preset type, and language'
2018-09-23 05:00:22 +00:00
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
2018-09-23 05:00:22 +00:00
ignore_errors: yes
become: yes
become_user: "{{ kolibri_user }}"
when: kolibri_provision | bool
2018-09-23 05:00:22 +00:00
# 2019-10-14: This stanza should not be necessary according to @benjaoming
# (Benjamin Bach) especially as migration & provisiondevice were run above.
#- 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 | bool
2018-09-23 05:00:22 +00:00
# 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
- name: Supply /etc/nginx/conf.d/kolibri-nginx.conf when nginx_enabled
template:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
mode: "{{ item.mode }}"
owner: root
group: root
with_items:
- { src: 'kolibri-nginx.conf.j2', dest: '/etc/nginx/conf.d/kolibri-nginx.conf', mode: '0644' }
when: kolibri_enabled | bool and nginx_enabled | bool
- name: Enable & (Re)Start kolibri service
2018-07-16 20:57:11 +00:00
systemd:
2018-09-01 21:35:25 +00:00
name: kolibri
state: started
when: kolibri_enabled | bool
2018-09-01 21:35:25 +00:00
- name: Enable http://box{{ kolibri_url }} with Apache (a2ensite) if kolibri_enabled # i.e. http://box/kolibri
command: a2ensite kolibri.conf
when: kolibri_enabled | bool and not nginx_enabled | bool
- name: Disable & Stop 'kolibri' systemd service if not kolibri_enabled
2018-09-01 21:35:25 +00:00
systemd:
name: kolibri
enabled: no
state: stopped
when: not kolibri_enabled
- name: Disable http://box{{ kolibri_url }} with Apache (a2dissite) if not kolibri_enabled
command: a2dissite kolibri.conf
when: not kolibri_enabled or nginx_enabled | bool
- name: Restart Apache service ({{ apache_service }}) # e.g. apache2
systemd:
name: "{{ apache_service }}"
state: restarted
when: not nginx_enabled | bool
- name: Restart nginx service
systemd:
name: nginx
state: restarted
when: nginx_enabled | bool
- name: Add 'kolibri' variable values to {{ iiab_ini_file }} # /etc/iiab/iiab.ini
ini_file:
2018-10-31 05:25:23 +00:00
path: "{{ iiab_ini_file }}"
section: kolibri
option: "{{ item.option }}"
value: "{{ item.value }}"
with_items:
- option: name
value: kolibri
- option: description
value: '"Kolibri is an open-source educational platform specially designed to provide offline access to a wide range of quality, openly licensed educational contents in low-resource contexts like rural schools, refugee camps, orphanages, and also in non-formal school programs."'
- option: kolibri_url
value: "{{ kolibri_url }}"
2019-09-28 04:58:13 +00:00
- option: kolibri_exec_path
2018-09-01 21:35:25 +00:00
value: "{{ kolibri_exec_path }}"
- option: kolibri_http_port
value: "{{ kolibri_http_port }}"
0.3 patch1 (#1377) * expand zim_versions_idx to include menuItem name, mediaCount, articleCount, size * create a stub menuItem if none exists * remember to change consumer of zim_version_idx in iiab-admin * comment out some debugging prints * do not change the name of a variable in iiab.ini * consistent variable names for *_enabled * start work on menus for enabled iiab roles * changes to display cups in home menu * remove reference to admin console which may not be installed * print error message * dict.get errors * handle undefined menuItem" * handle undefined menuItem again * some work on logos * break out the zim_versions_idx routines for use by update_menus in admin-console * remove old menuDef creation code * new variable names for zim_versions_idx * missing the tags data in zim_versions_idx * un-break-apart iiab-make-kiwix-lib.py * return an empty string * make size human_readable * getting console and iiab to work together on menus * add the new zim_date field to zim_versions_idx * get the latest into repo * found lost code iiab-make-kiwix-lib.py * Create Lokole admin user during setup * Add requested content to lokole readme Per iiab/iiab#1293 * Update default password * Add Lokole-IIAB user manual * Update default_vars.yml * Update local_vars_min.yml * Update local_vars_min.yml * Update local_vars_medium.yml * Update local_vars_min.yml * Update default_vars.yml * Update local_vars_big.yml * Update local_vars_medium.yml * Update default_vars.yml * Update default_vars.yml * Update local_vars_min.yml * Update local_vars_medium.yml * Update local_vars_big.yml * Update default_vars.yml * Update default_vars.yml * Update local_vars_big.yml * Update local_vars_medium.yml * Update local_vars_min.yml * Update default_vars.yml * Update local_vars_big.yml * Update local_vars_medium.yml * Update local_vars_min.yml * Change admin username to uppercase * Revert "Lokole: change admin to Admin per IIAB app norms" * Update main.yml * Update README.rst * Update capture-wsgi.py * Update main.yml * Update main.yml * Update default_vars.yml * Update local_vars_big.yml * Update local_vars_medium.yml * Update local_vars_min.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update default_vars.yml * Update local_vars_big.yml * Update local_vars_medium.yml * Update local_vars_min.yml * Address TODOs in Lokole documentation See https://github.com/ascoderu/opwen-webapp/issues/81 * Update main.yml * Update local_vars_big.yml * Update local_vars_medium.yml * Update local_vars_big.yml * Update local_vars_min.yml * Update default_vars.yml * expand zim_versions_idx to include menuItem name, mediaCount, articleCount, size * create a stub menuItem if none exists * remember to change consumer of zim_version_idx in iiab-admin * comment out some debugging prints * do not change the name of a variable in iiab.ini * consistent variable names for *_enabled * start work on menus for enabled iiab roles * changes to display cups in home menu * remove reference to admin console which may not be installed * print error message * dict.get errors * handle undefined menuItem" * handle undefined menuItem again * some work on logos * break out the zim_versions_idx routines for use by update_menus in admin-console * remove old menuDef creation code * new variable names for zim_versions_idx * missing the tags data in zim_versions_idx * un-break-apart iiab-make-kiwix-lib.py * return an empty string * make size human_readable * getting console and iiab to work together on menus * add the new zim_date field to zim_versions_idx * get the latest into repo * found lost code iiab-make-kiwix-lib.py
2019-01-10 22:26:47 +00:00
- option: kolibri_enabled
value: "{{ kolibri_enabled }}"