From 6b4ebe1881f98db3069368fbcc16a92ebca76bc7 Mon Sep 17 00:00:00 2001
From: Daniel M <daniel.q.mueller@stud.h-da.de>
Date: Fri, 29 Oct 2021 17:26:39 +0200
Subject: [PATCH] Add tasks

---
 local.yml                               | 37 +++++++++++++--------
 roles/jupyter-lab/files/jupyter.service | 15 +++++++++
 roles/jupyter-lab/tasks/main.yml        | 43 +++++++++++++++++++++++--
 roles/misc-applications/tasks/main.yml  |  4 +--
 roles/ml-python-packages/tasks/main.yml | 38 ++++++++++++++++++++--
 5 files changed, 117 insertions(+), 20 deletions(-)
 create mode 100644 roles/jupyter-lab/files/jupyter.service

diff --git a/local.yml b/local.yml
index 23019a8..1197008 100644
--- a/local.yml
+++ b/local.yml
@@ -1,14 +1,23 @@
----
-- hosts: localhost
-  pre_tasks:
-    - name: Upgrade packages
-      become: true
-      apt:
-        upgrade: true
-        update_cache: true
-        force_apt_get: true
-
-  roles:
-    - jupyter-lab
-    - ml-python-packages
-    - misc-applications
+---
+- hosts: localhost
+  pre_tasks:
+    # - name: Upgrade packages
+    #   become: true
+    #   apt:
+    #     upgrade: true
+    #     update_cache: true
+    #     force_apt_get: true
+
+    # - name: Install pip3
+    #   become: true
+    #   apt:
+    #     update_cache: true
+    #     name:
+    #       - python3-pip
+    #       - libffi-dev # This is needed for jupyter on aarch64 to compile its C backend
+    #     state: present
+
+  roles:
+    - jupyter-lab
+    - ml-python-packages
+    - misc-applications
diff --git a/roles/jupyter-lab/files/jupyter.service b/roles/jupyter-lab/files/jupyter.service
new file mode 100644
index 0000000..5b44a74
--- /dev/null
+++ b/roles/jupyter-lab/files/jupyter.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Jupyter Lab
+
+[Service]
+Type=simple
+PIDFile=/run/jupyter.pid
+# Password: [empty string]
+ExecStart=/usr/bin/python3 -m jupyterlab --ip="0.0.0.0" --notebook-dir=/home/pi/notebooks --no-browser --NotebookApp.password='sha1:9a2d316959ac:843b251c27024afb46174ce40ce0ebebcf29217b'
+User=pi
+Group=pi
+Restart=always
+RestartSec=10
+
+[Install]
+WantedBy=multi-user.target
diff --git a/roles/jupyter-lab/tasks/main.yml b/roles/jupyter-lab/tasks/main.yml
index 7da5b80..6ae98f2 100644
--- a/roles/jupyter-lab/tasks/main.yml
+++ b/roles/jupyter-lab/tasks/main.yml
@@ -1,2 +1,41 @@
----
-# roles/jupyter-lab
+---
+# roles/jupyter-lab
+
+- name: Notebooks dir
+  file:
+    path: /home/pi/notebooks
+    state: directory
+    owner: pi
+    group: pi
+
+# This should be optimized so that only one check / install is needed
+# Still we should make sure that pip3 is actually installed before trying to use it
+- name: Install dependecies
+  become: true
+  apt:
+    name:
+      - python3-pip
+    state: present
+    update_cache: true
+
+- name: Install jupyter-lab
+  become: true
+  pip:
+    executable: pip3
+    name: jupyterlab
+    state: present
+
+- name: Install systemd service
+  become: true
+  copy:
+    src: files/jupyter.service
+    dest: /etc/systemd/system/jupyter.service
+    mode: '0644'
+  
+- name: Start Jupyter-Lab service
+  become: true
+  systemd:
+    name: jupyter
+    state: started
+    enabled: true
+    daemon_reload: true
diff --git a/roles/misc-applications/tasks/main.yml b/roles/misc-applications/tasks/main.yml
index 633a707..3903dcf 100644
--- a/roles/misc-applications/tasks/main.yml
+++ b/roles/misc-applications/tasks/main.yml
@@ -1,2 +1,2 @@
----
-# roles/misc-applications
+---
+# roles/misc-applications
diff --git a/roles/ml-python-packages/tasks/main.yml b/roles/ml-python-packages/tasks/main.yml
index 9ad5a51..359f487 100644
--- a/roles/ml-python-packages/tasks/main.yml
+++ b/roles/ml-python-packages/tasks/main.yml
@@ -1,2 +1,36 @@
----
-# roles/ml-python-packages
+---
+# roles/ml-python-packages
+
+# This should be optimized so that only one check / install for pip3 is needed
+# Still we should make sure that pip3 is actually installed before trying to use it
+- name: Install dependecies
+  become: true
+  apt:
+    name:
+      - python3-pip
+      - libatlas-base-dev
+    state: present
+    update_cache: true
+
+- name: Remove conflicting apt packages
+  become: true
+  apt:
+    name:
+      - python3-pil
+      - python3-numpy
+    state: absent
+
+- name: Install ml python packages
+  become: true
+  pip:
+    executable: pip3
+    name:
+      - numpy
+      - sklearn
+      - matplotlib
+      - pandas
+      - Pillow
+      # - torch
+      # - torchvision
+      # - fastai
+    state: present
-- 
GitLab