mirror of
https://github.com/iiab/iiab.git
synced 2025-02-13 11:42:08 +00:00
131 lines
5 KiB
YAML
131 lines
5 KiB
YAML
- name: "Set 'nodejs_install: True' and 'nodejs_enabled: True'"
|
|
set_fact:
|
|
nodejs_install: True
|
|
nodejs_enabled: True
|
|
|
|
- name: NODEJS - run 'nodejs' role (attempt to install & enable Node.js)
|
|
include_role:
|
|
name: nodejs
|
|
|
|
- name: FAIL (STOP THE INSTALL) IF 'nodejs_installed is undefined'
|
|
fail:
|
|
msg: "JupyterHub install cannot proceed, as Node.js is not installed."
|
|
when: nodejs_installed is undefined
|
|
|
|
|
|
- name: Record (initial) disk space used
|
|
shell: df -B1 --output=used / | tail -1
|
|
register: df1
|
|
|
|
|
|
- name: "Install package: python3-psutil"
|
|
package:
|
|
name: python3-psutil
|
|
state: present
|
|
|
|
- name: Remove previous virtual environment {{ jupyterhub_venv }}
|
|
file:
|
|
path: "{{ jupyterhub_venv }}"
|
|
state: absent
|
|
|
|
- name: Make 3 directories to hold JupyterHub config
|
|
file:
|
|
state: directory
|
|
path: "{{ item }}"
|
|
with_items:
|
|
- "{{ jupyterhub_venv }}/etc/jupyter" # /opt/iiab/jupyterhub
|
|
- "{{ jupyterhub_venv }}/etc/jupyterhub"
|
|
- "{{ jupyterhub_venv }}/etc/systemd"
|
|
|
|
- name: Use npm to install 'configurable-http-proxy'
|
|
npm:
|
|
name: configurable-http-proxy
|
|
global: yes
|
|
state: latest
|
|
|
|
- name: "pip install 3 packages into virtual environment: {{ jupyterhub_venv }} (~326 MB total, after 2 Ansible calls)"
|
|
pip:
|
|
name:
|
|
- pip
|
|
- wheel
|
|
- jupyterhub
|
|
virtualenv: "{{ jupyterhub_venv }}" # /opt/iiab/jupyterhub
|
|
virtualenv_site_packages: no
|
|
virtualenv_command: python3 -m venv --system-site-packages "{{ jupyterhub_venv }}" # 2021-07-29: This works on RasPiOS 10, Debian 11, Ubuntu 20.04 and Mint 20 -- however if you absolutely must use the older Debian 10 -- you can work around errors "can't find Rust compiler" and "This package requires Rust >=1.41.0" if you (1) revert this line to 'virtualenv_command: virtualenv' AND (2) uncomment the line just below
|
|
#virtualenv_python: python3 # 2021-07-29: Was needed when above line was 'virtualenv_command: virtualenv' (generally for Python 2)
|
|
extra_args: "--no-cache-dir" # 2021-11-30, 2022-07-07: The "--pre" flag had earlier been needed, for beta-like pre-releases of JupyterHub 2.0.0
|
|
|
|
# 2022-07-07: Attempting to "pip install" all 7 together (3 above + 4 below)
|
|
# fails on OS's like 64-bit RasPiOS (but interestingly works on Ubuntu 22.04!)
|
|
# https://github.com/iiab/iiab/issues/3283
|
|
|
|
- name: Break up jupyterhub/jupyterlab pip installs into 2 parts (3 packages above + 4 packages here) due to mutual dependency deadlock on some OS's
|
|
pip:
|
|
name:
|
|
- jupyterlab
|
|
- jupyterhub_firstuseauthenticator
|
|
- jupyterhub-systemdspawner
|
|
- ipywidgets
|
|
virtualenv: "{{ jupyterhub_venv }}"
|
|
virtualenv_site_packages: no
|
|
virtualenv_command: python3 -m venv --system-site-packages "{{ jupyterhub_venv }}"
|
|
extra_args: "--no-cache-dir"
|
|
|
|
- name: "Install from template: {{ jupyterhub_venv }}/etc/jupyterhub/jupyterhub_config.py"
|
|
template:
|
|
src: jupyterhub_config.py.j2
|
|
dest: "{{ jupyterhub_venv }}/etc/jupyterhub/jupyterhub_config.py"
|
|
|
|
- name: "Install from template: /etc/systemd/system/jupyterhub.service"
|
|
template:
|
|
src: jupyterhub.service.j2
|
|
dest: /etc/systemd/system/jupyterhub.service
|
|
|
|
# 2022-07-07: No longer needed, thx to upstream fixes
|
|
# - name: Install {{ jupyterhub_venv }}/bin/getsite.py from template, to fetch site_packages path, e.g. {{ jupyterhub_venv }}/lib/python{{ python_version }}/site-packages
|
|
# template:
|
|
# src: getsite.py.j2
|
|
# dest: "{{ jupyterhub_venv }}/bin/getsite.py"
|
|
# mode: 0755
|
|
#
|
|
# - name: Install patch_FUA.sh from template -- to (1) fix async password-changing page, and (2) force usernames to lowercase -- patching $SITE_PACKAGES/firstuseauthenticator/firstuseauthenticator.py
|
|
# template:
|
|
# src: patch_FUA.sh.j2
|
|
# dest: "{{ jupyterhub_venv }}/bin/patch_FUA.sh"
|
|
# mode: 0755
|
|
#
|
|
# - name: "Run the above two, via: {{ jupyterhub_venv }}/bin/patch_FUA.sh"
|
|
# command: "{{ jupyterhub_venv }}/bin/patch_FUA.sh"
|
|
|
|
- name: Install patch_http-warning.sh from template, to turn off the warning about http insecurity, in {{ jupyterhub_venv }}/share/jupyterhub/templates/login.html
|
|
template:
|
|
src: patch-http-warning.sh.j2
|
|
dest: "{{ jupyterhub_venv }}/bin/patch_http-warning.sh"
|
|
mode: 0755
|
|
|
|
- name: "Now run it: {{ jupyterhub_venv }}/bin/patch_http-warning.sh"
|
|
command: "{{ jupyterhub_venv }}/bin/patch_http-warning.sh"
|
|
|
|
|
|
# RECORD JupyterHub AS INSTALLED
|
|
|
|
- name: Record (final) disk space used
|
|
shell: df -B1 --output=used / | tail -1
|
|
register: df2
|
|
|
|
- name: Add 'jupyterhub_disk_usage = {{ df2.stdout|int - df1.stdout|int }}' to {{ iiab_ini_file }}
|
|
ini_file:
|
|
path: "{{ iiab_ini_file }}" # /etc/iiab/iiab.ini
|
|
section: jupyterhub
|
|
option: jupyterhub_disk_usage
|
|
value: "{{ df2.stdout|int - df1.stdout|int }}"
|
|
|
|
- name: "Set 'jupyterhub_installed: True'"
|
|
set_fact:
|
|
jupyterhub_installed: True
|
|
|
|
- name: "Add 'jupyterhub_installed: True' to {{ iiab_state_file }}"
|
|
lineinfile:
|
|
path: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml
|
|
regexp: '^jupyterhub_installed'
|
|
line: 'jupyterhub_installed: True'
|