#!/usr/bin/env bash # # install-storage-server.sh: Installs a VMOps Storage Server # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. choose_correct_filename() { local default_filename=$1 local user_specified_filename=$2 if [ -f "$user_specified_filename" ] then echo $user_specified_filename return 0 else if [ -f "$default_filename" ] then echo $default_filename return 0 else echo "" return 1 fi fi } install_opensolaris_package() { pkg_name=$1 pkg info $pkg_name >> /dev/null if [ $? -gt 0 ] then # The package is not installed, so install it pkg install $pkg_name return $? else # The package is already installed return 0 fi } exit_if_error() { return_code=$1 msg=$2 if [ $return_code -gt 0 ] then echo $msg exit 1 fi } usage() { printf "Usage: ./install-storage-server.sh " } AGENT_FILE=$(choose_correct_filename "./agent.zip" $1) exit_if_error $? "Please download agent.zip to your Storage Server." TEMPLATES_FILE=$(choose_correct_filename "./templates.tar.gz" $2) exit_if_error $? "Please download templates.tar.gz to your Storage Server." VMOPS_DIR="/usr/local/vmops" AGENT_DIR="/usr/local/vmops/agent" CONF_DIR="/etc/vmops" TEMPLATES_DIR="/root/template" # Make all the necessary directories if they don't already exist echo "Creating VMOps directories..." for dir in $VMOPS_DIR $CONF_DIR $TEMPLATES_DIR do mkdir -p $dir done # Unzip agent.zip to $AGENT_DIR echo "Uncompressing and installing VMOps Storage Agent..." unzip -o $AGENT_FILE -d $AGENT_DIR >> /dev/null # Remove agent/conf/agent.properties, since we should use the file in the real configuration directory rm $AGENT_DIR/conf/agent.properties # Backup any existing VMOps configuration files, if there aren't any backups already if [ ! -d $CONF_DIR/BACKUP ] then echo "Backing up existing configuration files..." mkdir -p $CONF_DIR/BACKUP cp $CONF_DIR/*.properties $CONF_DIR/BACKUP >> /dev/null fi # Copy all the files in storagehdpatch to their proper places echo "Installing system files..." (cd $AGENT_DIR/storagehdpatch; tar cf - .) | (cd /; tar xf -) exit_if_error $? "There was a problem with installing system files. Please contact VMOps Support." # Make vsetup executable chmod +x /usr/sbin/vsetup # Make vmops executable chmod +x /lib/svc/method/vmops # Uncompress the templates and copy them to the templates directory echo "Uncompressing templates..." tar -xzf $TEMPLATES_FILE -C $TEMPLATES_DIR >> /dev/null exit_if_error $? "There was a problem with uncompressing templates. Please contact VMOps Support." # Install the storage-server package, if it is not already installed echo "Installing OpenSolaris storage server package..." install_opensolaris_package "storage-server" exit_if_error $? "There was a problem with installing the storage server package. Please contact VMOps Support." echo "Installing COMSTAR..." install_opensolaris_package "SUNWiscsit" exit_if_error $? "Unable to install COMSTAR iscsi target. Please contact VMOps Support." # Install the SUNWinstall-test package, if it is not already installed echo "Installing OpenSolaris test tools package..." install_opensolaris_package "SUNWinstall-test" exit_if_error $? "There was a problem with installing the test tools package. Please contact VMOps Support." # Print a success message printf "\nSuccessfully installed the VMOps Storage Server.\n" printf "Please complete the following steps to configure your networking settings and storage pools:\n\n" printf "1. Specify networking settings in /etc/vmops/network.properties\n" printf "2. Run \"vsetup networking\" and then specify disk settings in /etc/vmops/disks.properties\n" printf "3. Run \"vsetup zpool\" and reboot the machine when prompted.\n\n"