First commit
This commit is contained in:
6
README.md
Normal file
6
README.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Installing CryoSPARC on Merlin 7
|
||||||
|
|
||||||
|
This repository contains the necessary scripts to install CryoSPARC on the Merlin 7 cluster.
|
||||||
|
|
||||||
|
For the complete installation guide, please refer to the following page:
|
||||||
|
https://intranet.psi.ch/en/cls/cryosparc-merlin-7-installation
|
41
scripts/configure_cryosparc_for_slurm.sh
Executable file
41
scripts/configure_cryosparc_for_slurm.sh
Executable file
@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check that CRYOSPARC_HOME is set and directory exists
|
||||||
|
if [ -z "$CRYOSPARC_HOME" ]; then
|
||||||
|
echo "Error: CRYOSPARC_HOME is not set."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$CRYOSPARC_HOME" ]; then
|
||||||
|
echo "Error: CRYOSPARC_HOME directory '$CRYOSPARC_HOME' does not exist."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$CRYOSPARC_HOME" || { echo "Failed to change directory to $CRYOSPARC_HOME"; return 1; }
|
||||||
|
|
||||||
|
echo "Cloning merlin7 branch of merlin-cryosparc into 'config' directory..."
|
||||||
|
if git clone -b merlin7 git@gitea.psi.ch:CLS-IT/merlin-cryosparc.git config; then
|
||||||
|
echo "Clone successful."
|
||||||
|
else
|
||||||
|
echo "Git clone failed."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Define remote host
|
||||||
|
remote_host="merlin7-cryosparc01.psi.ch"
|
||||||
|
|
||||||
|
echo "Running install_filter on remote host..."
|
||||||
|
if ssh "$USER@$remote_host" install_filter; then
|
||||||
|
echo "install_filter command completed successfully."
|
||||||
|
else
|
||||||
|
echo "install_filter command failed."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Running connect_all on remote host..."
|
||||||
|
if ssh "$USER@$remote_host" connect_all; then
|
||||||
|
echo "connect_all command completed successfully."
|
||||||
|
else
|
||||||
|
echo "connect_all command failed."
|
||||||
|
return 1
|
||||||
|
fi
|
46
scripts/create_cryosparc_user.sh
Executable file
46
scripts/create_cryosparc_user.sh
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Define remote host
|
||||||
|
remote_host="merlin7-cryosparc01.psi.ch"
|
||||||
|
|
||||||
|
echo "------------------------------------------------------------"
|
||||||
|
echo "CryoSPARC User Creation Script"
|
||||||
|
echo "This script will help you create a new CryoSPARC user on the"
|
||||||
|
echo "remote master node ($remote_host)."
|
||||||
|
echo "You will be prompted for the user's email, username, name,"
|
||||||
|
echo "and password, and then asked to confirm before proceeding."
|
||||||
|
echo "------------------------------------------------------------"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Prompt for inputs
|
||||||
|
read -rp "Enter your first name: " cryo_firstname
|
||||||
|
read -rp "Enter your last name: " cryo_lastname
|
||||||
|
read -rp "Enter your PSI email: " cryo_user_email
|
||||||
|
read -rp "Enter your CryoSPARC login username: " cryo_username
|
||||||
|
read -rsp "Enter your CryoSPARC password: " cryo_user_password
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Confirm user input
|
||||||
|
read -rp "Do you wish to proceed with user creation? (y/n): " confirm
|
||||||
|
|
||||||
|
if [[ "$confirm" != [Yy]* ]]; then
|
||||||
|
echo "Aborted."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Execute createuser command on remote host
|
||||||
|
echo "Creating user on CryoSPARC at $remote_host..."
|
||||||
|
ssh "$USER@$remote_host" "cryosparcm createuser \
|
||||||
|
--email '$cryo_user_email' \
|
||||||
|
--password '$cryo_user_password' \
|
||||||
|
--username '$cryo_username' \
|
||||||
|
--firstname '$cryo_firstname' \
|
||||||
|
--lastname '$cryo_lastname'"
|
||||||
|
|
||||||
|
# Check if creation was successful
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "✅ User '$cryo_username' created successfully."
|
||||||
|
else
|
||||||
|
echo "❌ Failed to create user."
|
||||||
|
return 1
|
||||||
|
fi
|
82
scripts/install_cryosparc_master.sh
Executable file
82
scripts/install_cryosparc_master.sh
Executable file
@ -0,0 +1,82 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Set CryoSPARC installation directory
|
||||||
|
CRYOSPARC_HOME="/data/user/$USER/cryosparc"
|
||||||
|
|
||||||
|
# Check if CRYOSPARC_HOME already exists and is not empty
|
||||||
|
if [ -d "$CRYOSPARC_HOME" ] && [ "$(ls -A "$CRYOSPARC_HOME")" ]; then
|
||||||
|
echo "Warning: CryoSPARC home directory already exists at: $CRYOSPARC_HOME"
|
||||||
|
read -rp "Are you sure you want to overwrite it? [y/N]: " confirm
|
||||||
|
case "$confirm" in
|
||||||
|
[yY][eE][sS]|[yY])
|
||||||
|
echo -e "\nProceeding with installation and overwriting existing directory."
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "\nInstallation aborted by user."
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create CryoSPARC home directory
|
||||||
|
mkdir -p "$CRYOSPARC_HOME"
|
||||||
|
cd "$CRYOSPARC_HOME" || { echo "Failed to enter directory $CRYOSPARC_HOME"; return 1; }
|
||||||
|
echo "CryoSPARC home directory ready at: $CRYOSPARC_HOME"
|
||||||
|
|
||||||
|
# Set and create temporary directory
|
||||||
|
export TMPDIR="/scratch/$USER"
|
||||||
|
mkdir -p "$TMPDIR"
|
||||||
|
|
||||||
|
# Prompt for license ID
|
||||||
|
read -rp "Enter your CryoSPARC License ID: " CRYOSPARC_LICENSE_ID
|
||||||
|
if [ -z "$CRYOSPARC_LICENSE_ID" ]; then
|
||||||
|
echo "Error: License ID is required."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prompt for base port
|
||||||
|
read -rp "Enter CryoSPARC base port: " CRYOSPARC_BASE_PORT
|
||||||
|
if ! [[ "$CRYOSPARC_BASE_PORT" =~ ^[0-9]+$ ]]; then
|
||||||
|
echo "Error: Port must be a number."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Download and extract CryoSPARC master package
|
||||||
|
echo "Downloading CryoSPARC master package..."
|
||||||
|
curl -L -o cryosparc_master.tar.gz "https://get.cryosparc.com/download/master-latest/$CRYOSPARC_LICENSE_ID"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Download failed. Please check your license ID and internet connection."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Extracting CryoSPARC master package..."
|
||||||
|
tar -xf cryosparc_master.tar.gz && rm cryosparc_master.tar.gz
|
||||||
|
echo "CryoSPARC master package extracted."
|
||||||
|
|
||||||
|
cd cryosparc_master || { echo "Failed to enter cryosparc_master directory"; return 1; }
|
||||||
|
|
||||||
|
# Define remote host
|
||||||
|
remote_host="merlin7-cryosparc01.psi.ch"
|
||||||
|
|
||||||
|
# Run installer
|
||||||
|
echo "Running CryoSPARC installer..."
|
||||||
|
./install.sh --license "$CRYOSPARC_LICENSE_ID" \
|
||||||
|
--hostname "$remote_host" \
|
||||||
|
--dbpath "$CRYOSPARC_HOME/database" \
|
||||||
|
--port "$CRYOSPARC_BASE_PORT"
|
||||||
|
|
||||||
|
# Start CryoSPARC master process
|
||||||
|
INSTALL_EXIT_CODE=$?
|
||||||
|
if [ $INSTALL_EXIT_CODE -eq 0 ]; then
|
||||||
|
echo "CryoSPARC installation completed successfully."
|
||||||
|
|
||||||
|
echo "Attempting to start CryoSPARC master process on $remote_host..."
|
||||||
|
ssh "$USER@$remote_host" "cryosparcm start"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "CryoSPARC master process started successfully on $remote_host."
|
||||||
|
else
|
||||||
|
echo "Failed to start CryoSPARC master process on $remote_host."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "CryoSPARC installation failed with exit code $INSTALL_EXIT_CODE. Not attempting to start master process."
|
||||||
|
fi
|
35
scripts/install_cryosparc_worker.sh
Executable file
35
scripts/install_cryosparc_worker.sh
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check CRYOSPARC_HOME
|
||||||
|
if [ -z "$CRYOSPARC_HOME" ]; then
|
||||||
|
echo "Error: CRYOSPARC_HOME is not set."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$CRYOSPARC_HOME" || { echo "Failed to enter directory $CRYOSPARC_HOME"; return 1; }
|
||||||
|
|
||||||
|
# Check license ID
|
||||||
|
if [ -z "$CRYOSPARC_LICENSE_ID" ]; then
|
||||||
|
read -rp "Enter your CryoSPARC License ID: " CRYOSPARC_LICENSE_ID
|
||||||
|
if [ -z "$CRYOSPARC_LICENSE_ID" ]; then
|
||||||
|
echo "Error: License ID is required."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Downloading CryoSPARC worker package..."
|
||||||
|
curl -L -o cryosparc_worker.tar.gz "https://get.cryosparc.com/download/worker-latest/$CRYOSPARC_LICENSE_ID"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Download failed. Please check your license ID and internet connection."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Extracting CryoSPARC worker package..."
|
||||||
|
tar -xf cryosparc_worker.tar.gz || { echo "Failed to extract package."; return 1; }
|
||||||
|
rm cryosparc_worker.tar.gz
|
||||||
|
echo "Extraction complete."
|
||||||
|
|
||||||
|
cd cryosparc_worker || { echo "Failed to enter cryosparc_worker directory"; return 1; }
|
||||||
|
|
||||||
|
echo "Running CryoSPARC worker installer..."
|
||||||
|
./install.sh --license "$CRYOSPARC_LICENSE_ID"
|
31
scripts/reset_cryosparc_password.sh
Executable file
31
scripts/reset_cryosparc_password.sh
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Prompt for CryoSPARC email
|
||||||
|
read -rp "Enter your CryoSPARC email (e.g. your_email@psi.ch): " CRYO_EMAIL
|
||||||
|
|
||||||
|
# Prompt for new password (hidden input)
|
||||||
|
read -rsp "Enter your new CryoSPARC password: " CRYO_PASSWORD
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Confirm before executing
|
||||||
|
echo "Resetting CryoSPARC password for: $CRYO_EMAIL"
|
||||||
|
read -rp "Are you sure you want to proceed? [y/N]: " confirm
|
||||||
|
case "$confirm" in
|
||||||
|
[yY][eE][sS]|[yY])
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Operation cancelled."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Run the reset command over SSH
|
||||||
|
ssh "$USER@merlin7-cryosparc01.psi.ch" \
|
||||||
|
"cryosparcm resetpassword --email '$CRYO_EMAIL' --password '$CRYO_PASSWORD'"
|
||||||
|
|
||||||
|
# Check result
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "✅ Password reset successfully."
|
||||||
|
else
|
||||||
|
echo "❌ Failed to reset password. Please check your inputs and try again."
|
||||||
|
fi
|
Reference in New Issue
Block a user