123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- #!/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
|