diff --git a/source/architecture.rst b/source/architecture.rst index a45ab2414..d10768e79 100644 --- a/source/architecture.rst +++ b/source/architecture.rst @@ -5,7 +5,7 @@ Architecture Below are some diagrams of OnDemand's architecture: -#. Overview is a high level visual generated from Powerpoint. +#. Overview is a high level visual generated from PowerPoint. #. System context and Container context diagrams below follow the `C4 `_. model for software diagrams, are more technically detailed and are built using draw.io #. Request flow diagram is a sequence diagram built using plantuml. @@ -97,7 +97,7 @@ Linux Host Adapter .. figure:: /app-flow-diagrams/flow_linux_host_adapter.png =========== -Rstudio Job +RStudio Job =========== .. figure:: /app-flow-diagrams/flow_rstudio_job.png diff --git a/source/authentication.rst b/source/authentication.rst index e62b44fcb..dc524e6a2 100644 --- a/source/authentication.rst +++ b/source/authentication.rst @@ -21,7 +21,7 @@ No Open OnDemand functionality is available without authentication. If you managed to install an Apache authentication module at your center that currently does not have a tutorial listed below we would greatly appreciate it if you could take the time to contribute a detailed - walkthrough. + walk-through. .. tip:: diff --git a/source/authentication/adfs-with-auth-mellon.rst b/source/authentication/adfs-with-auth-mellon.rst index 0e91bc045..42805859d 100644 --- a/source/authentication/adfs-with-auth-mellon.rst +++ b/source/authentication/adfs-with-auth-mellon.rst @@ -81,7 +81,7 @@ Note that this configuration assumes that SAML has been configured such that the MellonEnable "auth" -#. Convert the key and cert files into pfx format +#. Convert the key and cert files into PFX format .. code-block:: shell diff --git a/source/authentication/dex.rst b/source/authentication/dex.rst index 371208195..72a086ca7 100644 --- a/source/authentication/dex.rst +++ b/source/authentication/dex.rst @@ -96,7 +96,7 @@ The service for OnDemand Dex is ``ondemand-dex``: OnDemand Dex behind Apache reverse proxy ---------------------------------------- -By default Dex sits behing Apache and is accessed via a reverse proxy. +By default Dex sits behind Apache and is accessed via a reverse proxy. OnDemand Dex behind the reverse proxy logic will force Dex to listen only on ``localhost`` and only via HTTP. diff --git a/source/spelling_wordlist.txt b/source/spelling_wordlist.txt index 763341640..e84d503c3 100644 --- a/source/spelling_wordlist.txt +++ b/source/spelling_wordlist.txt @@ -4,4 +4,30 @@ websocket Phusion Stata VNC -Fluxbox \ No newline at end of file +Fluxbox +subdirectory +entrypoint +conf +Kubernetes +filesystems +Jupyter +RStudio +configmap +init +nsswitch +millicores +executables +libraries +Lmod +plantuml +cgroups +namespaces +Nginx +auth +mellon +Dex +systemd +SSL +Keycloak +apache +mapfile diff --git a/source/tutorials/tutorials-interactive-apps/add-matlab/edit-form-yml.rst b/source/tutorials/tutorials-interactive-apps/add-matlab/edit-form-yml.rst index ce641a947..9c514cf6d 100644 --- a/source/tutorials/tutorials-interactive-apps/add-matlab/edit-form-yml.rst +++ b/source/tutorials/tutorials-interactive-apps/add-matlab/edit-form-yml.rst @@ -106,7 +106,7 @@ The main responsibility of the ``form.yml`` file (:ref:`app-development-interact --- cluster: "owens" form: - - version # <-- OSC supports multiple versions of MATLAB via LMod + - version # <-- OSC supports multiple versions of MATLAB via Lmod - bc_account # <-- the charge account - bc_num_hours # <-- the number of user requested hours that the job run - bc_num_slots # <-- the number of nodes diff --git a/source/tutorials/tutorials-interactive-apps/add-rstudio/customize-attributes.rst b/source/tutorials/tutorials-interactive-apps/add-rstudio/customize-attributes.rst index d03a193d1..fc768f463 100644 --- a/source/tutorials/tutorials-interactive-apps/add-rstudio/customize-attributes.rst +++ b/source/tutorials/tutorials-interactive-apps/add-rstudio/customize-attributes.rst @@ -27,9 +27,9 @@ The main responsibility of the ``form.yml`` file (:ref:`app-development-interact 2. Next we will modify the runtime environment to allow RStudio to launch inside a Singularity container. There are two ways to accomplish this, and both modify the file ``~/ondemand/dev/bc_example_rstudio/template/script.sh.erb``. - If you are not using LMod, then in the function ``setup_env`` replace the value for ``RSTUDIO_SERVER_IMAGE`` with the absolute path to the Singularity image, and ``SINGULARITY_BINDPATH`` with all the directories that contain dependencies for RStudio server and R. Discovering those paths may benefit from using ``ptrace`` or ``lsof``. Finally ensure that ``R`` and ``rserver`` are in the ``PATH``. + If you are not using Lmod, then in the function ``setup_env`` replace the value for ``RSTUDIO_SERVER_IMAGE`` with the absolute path to the Singularity image, and ``SINGULARITY_BINDPATH`` with all the directories that contain dependencies for RStudio server and R. Discovering those paths may benefit from using ``ptrace`` or ``lsof``. Finally ensure that ``R`` and ``rserver`` are in the ``PATH``. - If you are using LMod then create a module like the following: + If you are using Lmod then create a module like the following: .. code-block:: lua :emphasize-lines: 4,5,6 diff --git a/source/tutorials/tutorials-interactive-apps/add-rstudio/setup-singularity.rst b/source/tutorials/tutorials-interactive-apps/add-rstudio/setup-singularity.rst index 6de5ca28c..f1239f686 100644 --- a/source/tutorials/tutorials-interactive-apps/add-rstudio/setup-singularity.rst +++ b/source/tutorials/tutorials-interactive-apps/add-rstudio/setup-singularity.rst @@ -6,7 +6,7 @@ Setup Singularity Download The Singularity Image ------------------------------ -The Singularity image may be downloaded from Singularity Hub by users without sudoer rights by running the following: +The Singularity image may be downloaded from Singularity Hub by users without sudo rights by running the following: .. code-block:: sh @@ -21,11 +21,11 @@ This will download the pre-built image to the current working directory. Alternatively, Build The Singularity Image ------------------------------------------ -Running a build is trivial but does require sudoer access to the build host. +Running a build is trivial but does require sudo access to the build host. Where ``Singularity`` is the file that defines the image. The image is just the base CentOS 7 packages plus a run script. This simplicity is because the actual executables and libraries must be bound and mounted into the container/guest at runtime from the host. By bind-mounting executables and libaries from the host system we are able to swap RStudio versions at launch time without having to update the Singuarlity image. -Likewise the runscript defined in the image uses the host ``$PATH`` which is propagated into the guest's environment as ``$USER_PATH``. +Likewise the ``runscript`` defined in the image uses the host ``$PATH`` which is propagated into the guest's environment as ``$USER_PATH``. An example Singularity file for running RStudio: diff --git a/source/tutorials/tutorials-interactive-apps/k8s-jupyter.rst b/source/tutorials/tutorials-interactive-apps/k8s-jupyter.rst index bc4d9aeb1..7ef0e0f45 100644 --- a/source/tutorials/tutorials-interactive-apps/k8s-jupyter.rst +++ b/source/tutorials/tutorials-interactive-apps/k8s-jupyter.rst @@ -4,10 +4,10 @@ Add a Jupyter App on a Kubernetes Cluster ========================================= This tutorial will walk you through creating an interactive Jupyter app that -your users will use to launch a `Jupyter Notebook Server`_ in a kubernetes cluster. +your users will use to launch a `Jupyter Notebook Server`_ in a Kubernetes cluster. It assumes you have a working understanding of app development already. The purpose of -this document is to describe how to write apps specifically for a kubernetes cluster, +this document is to describe how to write apps specifically for a Kubernetes cluster, so it skips a lot of important details about app development that may be found in other tutorials like :ref:`app-development-tutorials-interactive-apps-add-jupyter`. @@ -62,7 +62,7 @@ resource requests ----------------- ``port`` is is the port the container is going to listen on. ``cpu`` and ``memory`` -are the cpu and memory request. Note that memory here has ``Gi`` which is the unit. +are the CPU and memory request. Note that memory here has ``Gi`` which is the unit. .. code-block:: yaml @@ -75,7 +75,7 @@ are the cpu and memory request. Note that memory here has ``Gi`` which is the un Kubernetes has some flexibility in requests. One can make _requests_ and _limits_ which are like hard and soft limits. In the example above, they're both the same. -Here's an example utilizing requests and limits for both memory and cpu. Note that +Here's an example utilizing requests and limits for both memory and CPU. Note that we're using millicores in ``cpu_request``. .. code-block:: yaml @@ -88,7 +88,7 @@ we're using millicores in ``cpu_request``. memory_request: "500Mi" memory_limit: "4Gi" -See `kubernetes pod memory`_ and `kubernetes pod cpu`_ for more details. +See `Kubernetes pod memory`_ and `Kubernetes pod CPU`_ for more details. configmap --------- @@ -126,7 +126,7 @@ Even though these are containers, users often want to persist the files they work on. This example mounts the home directory, but could mount any project or scratch space just the same. -When mounting a host directory ``host_type`` must alwasy be Directory. +When mounting a host directory ``host_type`` must always be Directory. This example shows how to mount host directories and nfs storage locations. .. code-block:: yaml @@ -172,7 +172,7 @@ You must specify a ``name``, an ``image`` and the ``command`` to be run. Let's walk through these init containers and what they're doing. -``init-secret`` does just that. It initialzies a `kubernetes secret`_. +``init-secret`` does just that. It initialzies a `Kubernetes secret`_. ``add-passwd-to-cfg`` then reads that secret and creates a salt and sha1 of this secret (these are needed specifically for Jupyter). Lastly it adds a single line to our configmap, which is the ``c.NotebookApp.password``. @@ -253,7 +253,7 @@ submit yml in full .. _jupyter notebook server: http://jupyter.readthedocs.io/en/latest/ .. _bc k8s jupyter: https://github.com/OSC/bc_k8s_jupyter -.. _kubernetes pod memory: https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/ -.. _kubernetes pod cpu: https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/ -.. _kubernetes configmap: https://kubernetes.io/docs/concepts/configuration/configmap/\ -.. _kubernetes secret: https://kubernetes.io/docs/concepts/configuration/secret/ +.. _Kubernetes pod memory: https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/ +.. _Kubernetes pod CPU: https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/ +.. _Kubernetes configmap: https://kubernetes.io/docs/concepts/configuration/configmap/\ +.. _Kubernetes secret: https://kubernetes.io/docs/concepts/configuration/secret/ diff --git a/source/tutorials/tutorials-passenger-apps/nodejs-starter-app.rst b/source/tutorials/tutorials-passenger-apps/nodejs-starter-app.rst index 3f4999883..4175f5e6a 100644 --- a/source/tutorials/tutorials-passenger-apps/nodejs-starter-app.rst +++ b/source/tutorials/tutorials-passenger-apps/nodejs-starter-app.rst @@ -21,7 +21,7 @@ You may want to rename this directory to something more appropriate. npm init .. warning:: - ``npm init`` will initialize the ``main`` script as ``index.js``. For OnDemand to recognzie + ``npm init`` will initialize the ``main`` script as ``index.js``. For OnDemand to recognize this application, the ``main`` attribute in ``package.json`` should be ``app.js`` not ``index.js``. @@ -52,7 +52,7 @@ to the file. This ``app.js`` imports the `Express`_ framework and sets up the ``router`` to route requests to the functions that can serve that request. This starter -file only has one route to the root url ``/`` and returns a simple ``Hello World`` +file only has one route to the root URL ``/`` and returns a simple ``Hello World`` string. .. code:: javascript diff --git a/source/tutorials/tutorials-passenger-apps/python-starter-app.rst b/source/tutorials/tutorials-passenger-apps/python-starter-app.rst index 4e318f9e8..4cd68acd7 100644 --- a/source/tutorials/tutorials-passenger-apps/python-starter-app.rst +++ b/source/tutorials/tutorials-passenger-apps/python-starter-app.rst @@ -55,8 +55,8 @@ So this section goes over adding the `Flask`_ web framework and having the application load the virtual environment that has your dependencies in it. -Create the virtual environmet -````````````````````````````` +Create the virtual environment +`````````````````````````````` First, we need to create the virtual environment. Issue this command below to create one. This will create a subdirectory ``python-hello-world`` with a @@ -94,7 +94,7 @@ for this file. # passenger_wsgi.py from app import MyApp as application -``app.py`` on the other hand, has logic associcated with the web application in it. +``app.py`` on the other hand, has logic associated with the web application in it. It imports the `Flask`_ libraries, configures the routes and starts the flask server. .. code:: python @@ -132,7 +132,7 @@ virtual environment. exec /bin/env python3 "$@" .. warning:: - Ensure that this ``bin/python`` file has executable permissons on it. + Ensure that this ``bin/python`` file has executable permissions on it. Issue the command ``chmod +x bin.python`` to give it executable permissions. Now, with the python wrapper script to load the environment for your application,