diff --git a/jupyter-notebook/README.md b/jupyter-notebook/README.md new file mode 100644 index 0000000..f3730b6 --- /dev/null +++ b/jupyter-notebook/README.md @@ -0,0 +1,21 @@ +--- +display_name: Jupyter Notebook +description: A module that adds Jupyter Notebook in your Coder template. +icon: ../.icons/jupyter.svg +maintainer_github: coder +verified: true +tags: [jupyter, helper, ide, web] +--- + +# Jupyter Notebook + +A module that adds Jupyter Notebook in your Coder template. + +![Jupyter Notebook](../.images/jupyter-notebook.png) + +```hcl +module "jupyter-notebook" { + source = "https://registry.coder.com/modules/jupyter-notebook" + agent_id = coder_agent.example.id +} +``` diff --git a/jupyter-notebook/main.tf b/jupyter-notebook/main.tf new file mode 100644 index 0000000..fb36b86 --- /dev/null +++ b/jupyter-notebook/main.tf @@ -0,0 +1,49 @@ +terraform { + required_version = ">= 1.0" + + required_providers { + coder = { + source = "coder/coder" + version = ">= 0.12" + } + } +} + +# Add required variables for your modules and remove any unneeded variables +variable "agent_id" { + type = string + description = "The ID of a Coder agent." +} + +variable "log_path" { + type = string + description = "The path to log jupyter notebook to." + default = "/tmp/jupyter-notebook.log" +} + +variable "port" { + type = number + description = "The port to run jupyter-notebook on." + default = 19999 +} + +resource "coder_script" "jupyter-notebook" { + agent_id = var.agent_id + display_name = "jupyter-notebook" + icon = "/icon/jupyter.svg" + script = templatefile("${path.module}/run.sh", { + LOG_PATH : var.log_path, + PORT : var.port + }) + run_on_start = true +} + +resource "coder_app" "jupyter-notebook" { + agent_id = var.agent_id + slug = "jupyter-notebook" + display_name = "Jupyter Notebook" + url = "http://localhost:${var.port}" + icon = "/icon/jupyter.svg" + subdomain = true + share = "owner" +} diff --git a/jupyter-notebook/run.sh b/jupyter-notebook/run.sh new file mode 100755 index 0000000..ed683f0 --- /dev/null +++ b/jupyter-notebook/run.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env sh + +BOLD='\033[0;1m' + +echo "$${BOLD}Installing jupyter-notebook!\n" + +# check if jupyter-notebook is installed +if ! command -v jupyter-notebook >/dev/null 2>&1; then + # install jupyter-notebook + # check if python3 pip is installed + if ! command -v pip3 >/dev/null 2>&1; then + echo "pip3 is not installed" + echo "Please install pip3 in your Dockerfile/VM image before running this script" + exit 1 + fi + # install jupyter-notebook + pip3 install --upgrade --no-cache-dir --no-warn-script-location jupyter + echo "🥳 jupyter-notebook has been installed\n\n" +else + echo "🥳 jupyter-notebook is already installed\n\n" +fi + +echo "👷 Starting jupyter-notebook in background..." +echo "check logs at ${LOG_PATH}" +$HOME/.local/bin/jupyter notebook --NotebookApp.ip='0.0.0.0' --ServerApp.port=${PORT} --no-browser --ServerApp.token='' --ServerApp.password='' >${LOG_PATH} 2>&1 &