diff --git a/.github/ISSUE_TEMPLATE/shared_directories.yml b/.github/ISSUE_TEMPLATE/shared_directories.yml index 064c47ce7..af6384a85 100644 --- a/.github/ISSUE_TEMPLATE/shared_directories.yml +++ b/.github/ISSUE_TEMPLATE/shared_directories.yml @@ -1,4 +1,4 @@ -name: Setup Shared/Shared-readwrite directories +name: Setup Shared directories description: To store large datasets that can be read by student notebooks labels: "support" assignees: @@ -68,7 +68,7 @@ body: label: Shared Directory Name description: What should be the name of the shared and shared-readwrite directories? value: | - - + - validations: required: true - type: textarea diff --git a/deployments/data100/config/common.yaml b/deployments/data100/config/common.yaml index 80fde6ff9..5d5081af6 100644 --- a/deployments/data100/config/common.yaml +++ b/deployments/data100/config/common.yaml @@ -111,6 +111,24 @@ jupyterhub: course::1524699::group::all-admins: admin: true mem_limit: 4G + + # Data C100, Fall 2024, https://github.com/berkeley-dsep-infra/datahub/issues/6316 + course::1537664::enrollment_type::teacher: + extraVolumeMounts: + - name: home + mountPath: /home/jovyan/data100-shared-readwrite + subPath: _shared/course/data100-shared-readwrite + course::1537664::enrollment_type::ta: + extraVolumeMounts: + - name: homes + mountPath: /home/jovyan/data100-shared-readwrite + subPath: _shared/course/data100-shared-readwrite + course::1537664::enrollment_type::student: + extraVolumeMounts: + - name: home + mountPath: /home/jovyan/data100-shared + subPath: _shared/course/data100-shared + readOnly: true admin: mem_guarantee: 2G extraVolumeMounts: diff --git a/deployments/logodev/image/apt.txt b/deployments/logodev/image/apt.txt deleted file mode 100644 index a6c4589ed..000000000 --- a/deployments/logodev/image/apt.txt +++ /dev/null @@ -1,93 +0,0 @@ -# Some linux packages for basic terminal work, particularly -# oriented at users new to Unix/cmd line environments. - -# installing less as more just isn't enough -less - -# Basic unix tools -man -man-db -manpages-posix -manpages-dev -manpages-posix-dev - -# Download tools -curl -wget - -# Core text editors on a *nix box: vim -vim - -# A couple of CLI editors that are easier than vim -# micro # currently not working on 18.04 -nano -jed -jed-extra - -# powerful terminal-based file manager, better than the one in JLab -mc - -# for easily managing multiple repositories with one command (perl-doc -# is needed for its help pages to work) -mr -perl-doc - -# Regular build tools for compiling common stuff -build-essential -gfortran - -# Dependencies for nbconvert -texlive-xetex -texlive-fonts-recommended -texlive-plain-generic -# https://github.com/berkeley-dsep-infra/datahub/issues/3719 -texlive-lang-chinese -lmodern - -# Other useful document-related tools -pandoc -latexdiff - -# Some useful git utilities use basic Ruby -ruby - -# Other niceties for command-line work and life -ack # powerful grep-like tool -pydf # colorized disk usage -tmux -screen -htop -nnn # cmd line file manager -zsh -rsync -tig # console UI for git -multitail - -# For later, these are not available in 18.04 -#browsh # text-based web browser, occasionally handy -#dasel # json/yml/csv/etc data wrangling at the terminal -#fzf # fuzzy file finder - -## This section adds tools for desktop environment usage -dbus-x11 -xorg -xubuntu-icon-theme -xfce4 -xfce4-goodies -xclip -xsel -firefox -chromium-browser - -# GUI text editors -vim-gtk3 -gedit - -# Git clients and tools -git-gui -gitg -qgit -meld - -# For jupyter-tree-download. Ref: https://github.com/berkeley-dsep-infra/datahub/issues/3979 -zip diff --git a/deployments/logodev/image/environment.yml b/deployments/logodev/image/environment.yml deleted file mode 100644 index c4de2ee40..000000000 --- a/deployments/logodev/image/environment.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: data100-FA23 - -channels: -- conda-forge -- pytorch - -dependencies: -- python==3.11.* -- git==2.39.1 -- jupyter-resource-usage==1.0.0 -- jupyterlab==4.0.11 -- jupyterlab-favorites==3.0.0 -- jupyterlab_server==2.23.0 -- jupyterlab_widgets==3.0.8 -- jupyter_server==2.7.0 -- nbgitpuller==1.2.1 -- notebook==7.0.7 -- folium==0.14.0 -- h5netcdf==1.0.2 -- ipywidgets==8.0.7 -- jupysql==0.8.0 -- jupyter-archive==3.4.0 -- matplotlib==3.7.1 -- mdit-py-plugins==0.4.0 -- numpy==1.24.2 -- pandas==2.2.2 -- plotly==5.13.1 -- requests==2.28.2 -- scikit-image==0.19.3 -- scikit-learn==1.2.2 -- scipy==1.10.1 -- seaborn==0.12.2 -- statsmodels==0.14.0 -- tensorflow-cpu==2.12.1 -- sqlalchemy==2.0.16 -- mlxtend==0.23.0 -# Spring 2024 data 100 -- pytorch==2.1.2 -- cpuonly==2.0 -- transformers==4.37.1 -# Spring 2024 table demos -- lxml==5.1.0 -# Spring 2024 Econ 148 Packages -- geopandas==0.14.2 -- geopy==2.4.1 -- lifelines==0.27.8 -- pycountry==22.3.5 -- pip -- pip: - # - -r infra-requirements.txt - - ipywidgets==8.0.7 - # disable until fixed (probably this: https://github.com/jupyterlab/jupyter-collaboration/issues/162) - # - jupyter_collaboration==1.0.1 - - jupyterhub==4.1.6 - - nbconvert[webpdf] - # - pyppeteer==2.0.0 - - pytest-notebook==0.8.1 - - gh-scoped-creds==4.1 - - git+https://github.com/shaneknapp/python-popularity-contest.git@add-error-handling - - ydata-profiling==4.6.4 - - otter-grader==5.4.0 - - duckdb==0.10.1 - - duckdb_engine==0.11.2 - # pulled in by ottr, if not pinned to 1.16.2, 1.16.3 causes DH-323 - - jupytext==1.16.2 diff --git a/deployments/logodev/image/infra-requirements.txt b/deployments/logodev/image/infra-requirements.txt deleted file mode 100644 index 0fb0bd930..000000000 --- a/deployments/logodev/image/infra-requirements.txt +++ /dev/null @@ -1,29 +0,0 @@ -# WARNING: Original source at scripts/infra-packages/requirements.txt -# PLEASE DO NOT EDIT ELSEWHERE -# After editing scripts/infra-packages/requirements.txt, please run -# scripts/infra-packages/sync.bash. - -# This file pins versions of notebook related python packages we want -# across all hubs. This makes sure we don't need to upgrade them -# everwhere one by one. - -# FIXME: Freeze this to get exact versions of all dependencies -notebook==7.0.7 -jupyterlab==4.0.11 -nbgitpuller==1.2.1 -jupyter-resource-usage==1.0.1 -# Matches version in images/hub/Dockerfile -jupyterhub==4.1.6 -appmode==0.8.0 -ipywidgets==8.0.7 -jupyter-tree-download==1.0.1 -git-credential-helpers==0.2 -# Measure popularity of different packages in our hubs -# https://discourse.jupyter.org/t/request-for-implementation-instrument-libraries-actively-used-by-users-on-a-jupyterhub/7994?u=yuvipanda -git+https://github.com/shaneknapp/python-popularity-contest.git@add-error-handling -# RISE is useful for presentations - see https://github.com/berkeley-dsep-infra/datahub/issues/2527 -RISE==5.7.1 -# syncthing for dropbox-like functionality -jupyter-syncthing-proxy==1.0.3 -# jupyter archival tool for easy user downloads -jupyter-archive==3.4.0 diff --git a/deployments/logodev/image/postBuild b/deployments/logodev/image/postBuild deleted file mode 100644 index 9514de431..000000000 --- a/deployments/logodev/image/postBuild +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -# installing chromium browser to enable webpdf conversion using nbconvert -export PLAYWRIGHT_BROWSERS_PATH=${CONDA_DIR} -npm install -g playwright -playwright install chromium diff --git a/docs/_quarto.yml b/docs/_quarto.yml index b950a8b95..04930cc37 100644 --- a/docs/_quarto.yml +++ b/docs/_quarto.yml @@ -61,6 +61,7 @@ website: - admins/howto/clusterswitch.qmd - admins/howto/github-token.qmd - admins/howto/google-sheets.qmd + - admins/howto/cheatsheet.qmd - section: "Policy" contents: - policy/create_policy.qmd diff --git a/docs/admins/howto/cheatsheet.qmd b/docs/admins/howto/cheatsheet.qmd new file mode 100644 index 000000000..d63df3f6c --- /dev/null +++ b/docs/admins/howto/cheatsheet.qmd @@ -0,0 +1,29 @@ +--- +title: Operations Cheatsheet +--- + +We periodically need to perform various tasks that can be quickly described by short shell fragments. This page is meant to be a dumping ground for them. It may be useful on occasion to move such fragments into more relevant pages. + +## Get Root Access in a User Pod + +It can be useful to run commands as root in a user's pod to quickly install or reconfigure software. This could be done during the development of a PR to change a user image. + +In this fragment, `local$` conveys operations performed on your own device and `node$` shows operations performed on the cloud node. + +```bash +local$ pod=jupyter-username +local$ ns=datahub-prod + +# Obtain and display the user's container ID +local$ cid=$(kubectl -n $ns get pod $pod -o jsonpath="{.status.containerStatuses[].containerID}" | sed 's,.*//,,') +local$ echo $cid + +# ssh into the node hosting the user's pod, substituting `NODE_NAME` +local$ kubectl -n $ns get pod $pod -o wide +local$ gcloud compute ssh --zone us-central1-b --project ucb-datahub-2018 NODE_NAME + +# Exec into the user's container as root, where `CID_FROM_ABOVE` is the +# value of $cid from above +node$ sudo -i +node# runc --root /run/containerd/runc/k8s.io/ exec -t -u 0 CID_FROM_ABOVE bash +```