playbooks/roles/ood-applications/files/bc_codeserver/template/script.sh.erb (39 lines of code) (raw):
#!/usr/bin/env bash
<%
# Set our working directory.
working_dir = Pathname.new(context.working_dir)
# Ensure that code-server always starts up in either a user defined directory or the home directory.
if ! working_dir.exist?
working_dir = Pathname.new(ENV['HOME'])
elsif working_dir.file?
working_dir = working_dir.parent
end
%>
if ! which code-server; then
mkdir -p /mnt/resource/$USER
pushd /mnt/resource/$USER
curl -fsSL https://code-server.dev/install.sh | sh -s -- --version 4.8.3 --method standalone --prefix /mnt/resource/$USER
popd
fi
export PATH=/mnt/resource/$USER/bin:$PATH
CODE_SERVER_DATAROOT="$HOME/.local/share/code-server"
# Expose the password to the server.
export PASSWORD="$password"
# Print compute node.
echo "$(date): Running on compute node ${compute_node}:$port"
#
# Start Code Server.
#
echo "$(date): Started code-server"
echo ""
# Remove scheduler environment variables to make code server a login node
unset $(compgen -e SLURM_)
unset $(compgen -e PBS_)
code-server \
--auth="password" \
--bind-addr="0.0.0.0:${port}" \
--disable-telemetry \
--user-data-dir="$CODE_SERVER_DATAROOT" \
--log debug \
--ignore-last-opened \
"<%= working_dir.to_s %>"