123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- #!/bin/bash
- ###############################################################################
- #
- # Title: Post Script for Salt Installation
- # Authors: Shane Lee
- # Date: December 2015
- #
- # Description: This script copies the minion config file and starts the salt
- # service
- #
- # 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 "Post install script started on:" > "$TEMP_DIR/postinstall.txt"
- date "+%Y/%m/%d %H:%m:%S" >> "$TEMP_DIR/postinstall.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/postinstall.txt"
- exit -1
- }
- ###############################################################################
- # Check for existing minion config, copy if it doesn't exist
- ###############################################################################
- if [ ! -f "$CONFIG_DIR/minion" ]; then
- echo "Config: Copy Started..." >> "$TEMP_DIR/postinstall.txt"
- cp "$CONFIG_DIR/minion.dist" "$CONFIG_DIR/minion"
- echo "Config: Copied Successfully" >> "$TEMP_DIR/postinstall.txt"
- fi
- ###############################################################################
- # Create symlink to salt-config.sh
- ###############################################################################
- if [ ! -d "$SBIN_DIR" ]; then
- echo "Symlink: Creating $SBIN_DIR..." >> "$TEMP_DIR/postinstall.txt"
- mkdir "$SBIN_DIR"
- echo "Symlink: Created Successfully" >> "$TEMP_DIR/postinstall.txt"
- fi
- echo "Symlink: Creating symlink for salt-config..." >> "$TEMP_DIR/postinstall.txt"
- ln -sf "$BIN_DIR/salt-config.sh" "$SBIN_DIR/salt-config"
- echo "Symlink: Created Successfully" >> "$TEMP_DIR/postinstall.txt"
- ###############################################################################
- # Add salt to paths.d
- ###############################################################################
- if [ ! -d "/etc/paths.d" ]; then
- echo "Path: Creating paths.d directory..." >> "$TEMP_DIR/postinstall.txt"
- mkdir /etc/paths.d
- echo "Path: Created Successfully" >> "$TEMP_DIR/postinstall.txt"
- fi
- echo "Path: Adding salt to the path..." >> "$TEMP_DIR/postinstall.txt"
- sh -c "echo \"$BIN_DIR\" > /etc/paths.d/salt"
- sh -c "echo \"$SBIN_DIR\" >> /etc/paths.d/salt"
- echo "Path: Added Successfully" >> "$TEMP_DIR/postinstall.txt"
- ###############################################################################
- # Register Salt as a service
- ###############################################################################
- setup_services_maverick() {
- echo "Service: Using old (< 10.10) launchctl interface" >> "$TEMP_DIR/postinstall.txt"
- if /bin/launchctl list "com.saltstack.salt.minion" &> /dev/null; then
- echo "Service: Stopping salt-minion..." >> "$TEMP_DIR/postinstall.txt"
- launchctl unload -w /Library/LaunchDaemons/com.saltstack.salt.minion.plist
- echo "Service: Stopped Successfully" >> "$TEMP_DIR/postinstall.txt"
- fi;
- echo "Service: Starting salt-minion..." >> "$TEMP_DIR/postinstall.txt"
- launchctl load -w /Library/LaunchDaemons/com.saltstack.salt.minion.plist || return 1
- echo "Service: Started Successfully" >> "$TEMP_DIR/postinstall.txt"
- echo "Service: Disabling Master, Syndic, and API services..." >> "$TEMP_DIR/postinstall.txt"
- launchctl unload -w /Library/LaunchDaemons/com.saltstack.salt.api.plist
- launchctl unload -w /Library/LaunchDaemons/com.saltstack.salt.master.plist
- launchctl unload -w /Library/LaunchDaemons/com.saltstack.salt.syndic.plist
- echo "Service: Disabled Successfully" >> "$TEMP_DIR/postinstall.txt"
- return 0
- }
- setup_services_yosemite_and_later() {
- echo "Service: Using new (>= 10.10) launchctl interface" >> "$TEMP_DIR/postinstall.txt"
- echo "Service: Enabling salt-minion..." >> "$TEMP_DIR/postinstall.txt"
- launchctl enable system/com.saltstack.salt.minion
- echo "Service: Enabled Successfully" >> "$TEMP_DIR/postinstall.txt"
- echo "Service: Bootstrapping salt-minion..." >> "$TEMP_DIR/postinstall.txt"
- launchctl bootstrap system /Library/LaunchDaemons/com.saltstack.salt.minion.plist
- echo "Service: Bootstrapped Successfully" >> "$TEMP_DIR/postinstall.txt"
- if /bin/launchctl list "com.saltstack.salt.minion" &> /dev/null; then
- echo "Service: Service Running" >> "$TEMP_DIR/postinstall.txt"
- else
- echo "Service: Kickstarting Service..." >> "$TEMP_DIR/postinstall.txt"
- launchctl kickstart -kp system/com.saltstack.salt.minion
- echo "Service: Kickstarted Successfully" >> "$TEMP_DIR/postinstall.txt"
- fi
- echo "Service: Started Successfully" >> "$TEMP_DIR/postinstall.txt"
- echo "Service: Disabling Master, Syndic, and API services" >> "$TEMP_DIR/postinstall.txt"
- launchctl disable system/com.saltstack.salt.master
- launchctl disable system/com.saltstack.salt.syndic
- launchctl disable system/com.saltstack.salt.api
- echo "Service: Disabled Successfully" >> "$TEMP_DIR/postinstall.txt"
- return 0
- }
- echo "Service: Configuring..." >> "$TEMP_DIR/postinstall.txt"
- case $MINOR in
- 9 )
- setup_services_maverick;
- ;;
- * )
- setup_services_yosemite_and_later;
- ;;
- esac
- echo "Service: Configured Successfully" >> "$TEMP_DIR/postinstall.txt"
- echo "Post install completed successfully on:" >> "$TEMP_DIR/postinstall.txt"
- date "+%Y/%m/%d %H:%m:%S" >> "$TEMP_DIR/postinstall.txt"
- exit 0
|