This project builds webmo in a container for deployment into the kubernetes environment.
Warning
OSC staff members should commit to the original repository which is on UCR at https://code.osu.edu/osc-web-services/osc/webmo. This is a public copy of that repository that cannot be open sourced.
The webmo installation is seperated by what's in the container and what's on the host file systems. When the container builds it adds all the source into the container so that it can serve webpages.
However, installers will need to install the same souce code
on a host filesystem so that when webmo (the web application) submits
jobs the source files are available to that job. the host filesystem
will also contain a user_data
directory that webmo (the web application)
writes to and updates as it submits jobs.
All source files and user_data
directories are on the webmo
user's
$HOME
directory. All members of the wiagstf
unix group should be able
to sudo su - webmo
or sudo -i -u webmo /bin/bash
depending on the system.
To install updates to the host file systems, do the following:
-
Change into the
webmo
user as described above.You can do this on web08 or any login node.
-
cd ~/k8s_webmo
This directory should already be populated with this git repository. You can issue a
git status
to confirm. -
git pull
Pull your updates to this repository.
-
./install.rb
Just issuing this command is not enough. If
WEBMO_ENVIRONMENT
is not set, you'll need to set it. If you're updating all 3 environments, update dev & test first and login to test to see the results. After which you can install to production.If
WEBMO_LICENSE
is not set you should issuesource .webmo.info
. This file should already exist for thewebmo
user and be populated correctly.
Should you need to build the image locally to verify this or that
use build.sh
to do so. Note that t
Pre-requisites
- This requires the
WEBMO_LICENSE
environment variable set to the license you want use. - This also requires you to have the WebMO source code
.tar.gz
file located in this directory. The source code will never be commited to this repository, so go download the.tar.gz
for the webmo version you want to build now.
The build script below will source a .webmo.info
file in this directory
if it exists. It is a part of the .gitignore list because it holds
sensitive information. Specifically WEBMO_LICENSE
, but should also
hold WEBMO_VERSION
so that you don't have to export these variables.
This file should never be commited as it should hold license information that is sensitive.
./build.sh
You may notice that some libraries webmo uses, we ourselves built.
Namely mopac
which resides in the webmo
users HOME directory
(instead of system installed in /usr/local/
).
Source files for any of these packages should be in ~webmo/src
.
To build mopac just clone the source and use cmake
to build it.
Here are a few things to keep in mind.
- Make sure you're building on the same target cluster it'll run on. Currently webmo jobs run on Owens, so this means you'll need to build the mopac binaries on Owens.
- When building, you may have to run tests off due to python errors. That's
OK just use the
-DTESTS=OFF
flag. - CMake uses the environment flag -DCMAKE_INSTALL_PREFIX if you're looking
to
make install
with a prefix. (This is equivalent to the./configure --prefix=/some/location
if you're familiar with configure or autoconf scripts.)
Here's an example command that was used to build 22.0.6.
cmake -DTESTS=OFF -DCMAKE_INSTALL_PREFIX="$HOME/webmo-packages/mopac/22.0.6" ..
Mopac binaries need an extra LD_LIBRARY_PATH
to work correctly.
However, there's no way to specify such an environment variable in
WebMo.
So we have to provide wrappers for these binaries that set the correct
LD_LIBRARY_PATH
.
You should have binaries made in the bin
directory. Now you need to:
- make a
real
directory in thebin
directory. - move all binaries to the
real
subdirectory - add this file as a
mopac_wrapper
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
LIB_DIR=$(cd $SCRIPT_DIR/../lib64 && pwd)
REAL_DIR="$SCRIPT_DIR/real"
COMMAND=$(basename $0)
LD_LIBRARY_PATH="$LIB_DIR:$LD_LIBRARY_PATH"
$REAL_DIR/$COMMAND $@
- create symlinks for all the binaries in the
real
directory to this wrapper file.