mirror of
https://github.com/valitydev/salt.git
synced 2024-11-09 01:36:48 +00:00
145 lines
6.4 KiB
Bash
Executable File
145 lines
6.4 KiB
Bash
Executable File
#!/bin/bash
|
|
###############################################################################
|
|
#
|
|
# Title: Pre Install Script for Salt Installation
|
|
# Authors: Shane Lee
|
|
# Date: December 2015
|
|
#
|
|
# Description: This script stops the salt minion service before attempting to
|
|
# install Salt on macOS. It also removes the /opt/salt/bin
|
|
# directory, symlink to salt-config, and salt from paths.d.
|
|
#
|
|
# Requirements:
|
|
# - None
|
|
#
|
|
# Usage:
|
|
# This script is run as a part of the macOS Salt Installation
|
|
#
|
|
###############################################################################
|
|
|
|
###############################################################################
|
|
# Define Variables
|
|
###############################################################################
|
|
# Get Minor Version
|
|
OSX_VERSION=$(sw_vers | grep ProductVersion | cut -f 2 -d: | tr -d '[:space:]')
|
|
MINOR=$(echo ${OSX_VERSION} | cut -f 2 -d.)
|
|
# Path Variables
|
|
INSTALL_DIR="/opt/salt"
|
|
BIN_DIR="$INSTALL_DIR/bin"
|
|
CONFIG_DIR="/etc/salt"
|
|
TEMP_DIR="/tmp"
|
|
SBIN_DIR="/usr/local/sbin"
|
|
|
|
###############################################################################
|
|
# Set up logging and error handling
|
|
###############################################################################
|
|
echo "Preinstall started on:" > "$TEMP_DIR/preinstall.txt"
|
|
date "+%Y/%m/%d %H:%m:%S" >> "$TEMP_DIR/preinstall.txt"
|
|
trap 'quit_on_error $LINENO $BASH_COMMAND' ERR
|
|
|
|
quit_on_error() {
|
|
echo "$(basename $0) caught error on line : $1 command was: $2" >> "$TEMP_DIR/preinstall.txt"
|
|
exit -1
|
|
}
|
|
|
|
OSX_VERSION=$(sw_vers | grep ProductVersion | cut -f 2 -d: | tr -d '[:space:]')
|
|
MINOR=$(echo ${OSX_VERSION} | cut -f 2 -d.)
|
|
|
|
###############################################################################
|
|
# Stop the service
|
|
###############################################################################
|
|
stop_service_maverick() {
|
|
echo "Service: Using old (< 10.10) launchctl interface" >> "$TEMP_DIR/preinstall.txt"
|
|
if /bin/launchctl list "com.saltstack.salt.minion" &> /dev/null; then
|
|
echo "Service: Unloading minion..." >> "$TEMP_DIR/preinstall.txt"
|
|
launchctl unload -w /Library/LaunchDaemons/com.saltstack.salt.minion.plist
|
|
echo "Service: Unloaded Successfully" >> "$TEMP_DIR/preinstall.txt"
|
|
fi
|
|
if /bin/launchctl list "com.saltstack.salt.master" &> /dev/null; then
|
|
echo "Service: Unloading master..." >> "$TEMP_DIR/preinstall.txt"
|
|
launchctl unload -w /Library/LaunchDaemons/com.saltstack.salt.master.plist
|
|
echo "Service: Unloaded Successfully" >> "$TEMP_DIR/preinstall.txt"
|
|
fi
|
|
if /bin/launchctl list "com.saltstack.salt.syndic" &> /dev/null; then
|
|
echo "Service: Unloading syndic..." >> "$TEMP_DIR/preinstall.txt"
|
|
launchctl unload -w /Library/LaunchDaemons/com.saltstack.salt.syndic.plist
|
|
echo "Service: Unloaded Successfully" >> "$TEMP_DIR/preinstall.txt"
|
|
fi
|
|
if /bin/launchctl list "com.saltstack.salt.api" &> /dev/null; then
|
|
echo "Service: Unloading api..." >> "$TEMP_DIR/preinstall.txt"
|
|
launchctl unload -w /Library/LaunchDaemons/com.saltstack.salt.api.plist
|
|
echo "Service: Unloaded Successfully" >> "$TEMP_DIR/preinstall.txt"
|
|
fi
|
|
}
|
|
|
|
stop_service_yosemite_and_later() {
|
|
echo "Service: Using new (>= 10.10) launchctl interface" >> "$TEMP_DIR/preinstall.txt"
|
|
if /bin/launchctl list "com.saltstack.salt.minion" &> /dev/null; then
|
|
echo "Service: Stopping minion..." >> "$TEMP_DIR/preinstall.txt"
|
|
launchctl disable system/com.saltstack.salt.minion
|
|
launchctl bootout system /Library/LaunchDaemons/com.saltstack.salt.minion.plist
|
|
echo "Service: Stopped Successfully" >> "$TEMP_DIR/preinstall.txt"
|
|
fi
|
|
if /bin/launchctl list "com.saltstack.salt.master" &> /dev/null; then
|
|
echo "Service: Stopping master..." >> "$TEMP_DIR/preinstall.txt"
|
|
launchctl disable system/com.saltstack.salt.master
|
|
launchctl bootout system /Library/LaunchDaemons/com.saltstack.salt.master.plist
|
|
echo "Service: Stopped Successfully" >> "$TEMP_DIR/preinstall.txt"
|
|
fi
|
|
if /bin/launchctl list "com.saltstack.salt.syndic" &> /dev/null; then
|
|
echo "Service: Stopping syndic..." >> "$TEMP_DIR/preinstall.txt"
|
|
launchctl disable system/com.saltstack.salt.syndic
|
|
launchctl bootout system /Library/LaunchDaemons/com.saltstack.salt.syndic.plist
|
|
echo "Service: Stopped Successfully" >> "$TEMP_DIR/preinstall.txt"
|
|
fi
|
|
if /bin/launchctl list "com.saltstack.salt.api" &> /dev/null; then
|
|
echo "Service: Stopping api..." >> "$TEMP_DIR/preinstall.txt"
|
|
launchctl disable system/com.saltstack.salt.api
|
|
launchctl bootout system /Library/LaunchDaemons/com.saltstack.salt.api.plist
|
|
echo "Service: Stopped Successfully" >> "$TEMP_DIR/preinstall.txt"
|
|
fi
|
|
}
|
|
|
|
echo "Service: Configuring..." >> "$TEMP_DIR/preinstall.txt"
|
|
case $MINOR in
|
|
9 )
|
|
stop_service_maverick;
|
|
;;
|
|
* )
|
|
stop_service_yosemite_and_later;
|
|
;;
|
|
esac
|
|
echo "Service: Configured Successfully" >> "$TEMP_DIR/preinstall.txt"
|
|
|
|
###############################################################################
|
|
# Remove the Symlink to salt-config.sh
|
|
###############################################################################
|
|
if [ -L "$SBIN_DIR/salt-config" ]; then
|
|
echo "Cleanup: Removing Symlink $BIN_DIR/salt-config" >> "$TEMP_DIR/preinstall.txt"
|
|
rm "$SBIN_DIR/salt-config"
|
|
echo "Cleanup: Removed Successfully" >> "$TEMP_DIR/preinstall.txt"
|
|
fi
|
|
|
|
###############################################################################
|
|
# Remove the $INSTALL_DIR directory
|
|
###############################################################################
|
|
if [ -d "$INSTALL_DIR" ]; then
|
|
echo "Cleanup: Removing $INSTALL_DIR" >> "$TEMP_DIR/preinstall.txt"
|
|
rm -rf "$INSTALL_DIR"
|
|
echo "Cleanup: Removed Successfully" >> "$TEMP_DIR/preinstall.txt"
|
|
fi
|
|
|
|
###############################################################################
|
|
# Remove the salt from the paths.d
|
|
###############################################################################
|
|
if [ -f "/etc/paths.d/salt" ]; then
|
|
echo "Path: Removing salt from the path..." >> "$TEMP_DIR/preinstall.txt"
|
|
rm "/etc/paths.d/salt"
|
|
echo "Path: Removed Successfully" >> "$TEMP_DIR/preinstall.txt"
|
|
fi
|
|
|
|
echo "Preinstall Completed Successfully on:" >> "$TEMP_DIR/preinstall.txt"
|
|
date "+%Y/%m/%d %H:%m:%S" >> "$TEMP_DIR/preinstall.txt"
|
|
|
|
exit 0
|