From 737962f4e850669499412b49076a3b07647a8c03 Mon Sep 17 00:00:00 2001 From: Ken Erwin Date: Wed, 13 Apr 2016 12:46:36 -0400 Subject: [PATCH 01/12] Fixed script to use latest version automatically --- bootstrap-salt.ps1 | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/bootstrap-salt.ps1 b/bootstrap-salt.ps1 index 0ea731b..4bf26f9 100644 --- a/bootstrap-salt.ps1 +++ b/bootstrap-salt.ps1 @@ -1,27 +1,34 @@ <# .SYNOPSIS A simple Powershell script to download and install a salt minion on windows. + .DESCRIPTION The script will download the official salt package from saltstack. It will install a specific package version and accept parameters for the master and minion ids. Finally, it can stop and set the windows service to "manual" for local testing. + .EXAMPLE ./bootstrap-salt.ps1 Runs without any parameters. Uses all the default values/settings. + .EXAMPLE ./bootstrap-salt.ps1 -version 2015.4.1-3 Specifies a particular version of the installer. + .EXAMPLE ./bootstrap-salt.ps1 -runservice false Specifies the salt-minion service to stop and be set to manual. Useful for testing locally from the command line with the --local switch + .EXAMPLE ./bootstrap-salt.ps1 -minion minion-box -master master-box Specifies the minion and master ids in the minion config. Defaults to the installer values of "minion" and "master". + .EXAMPLE ./bootstrap-salt.ps1 -minion minion-box -master master-box -version 2015.5.2 -runservice false Specifies all the optional parameters in no particular order. + .PARAMETER version - Default version defined in this script. .PARAMETER runservice - Boolean flag to stop the windows service and set to "manual". @@ -47,7 +54,7 @@ Param( [Parameter(Mandatory=$false,ValueFromPipeline=$true)] # Doesn't support versions prior to "YYYY.M.R-B" [ValidatePattern('^(201[0-9]\.[0-9]\.[0-9](\-\d{1})?)$')] - [string]$version = "2015.8.8-2", + [string]$version = '', [Parameter(Mandatory=$false,ValueFromPipeline=$true)] [ValidateSet("true","false")] @@ -99,15 +106,33 @@ If ([IntPtr]::Size -eq 4) { $arch = "AMD64" } +# If version isn't supplied, use latest. +if (!$version) { + # Find latest version of Salt Minion + $repo = Invoke-Restmethod 'http://repo.saltstack.com/windows/' + $regex = "<\s*a\s*[^>]*?href\s*=\s*[`"']*([^`"'>]+)[^>]*?>" + $returnMatches = new-object System.Collections.ArrayList + $resultingMatches = [Regex]::Matches($repo, $regex, "IgnoreCase") + foreach($match in $resultingMatches) + { + $cleanedMatch = $match.Groups[1].Value.Trim() + [void] $returnMatches.Add($cleanedMatch) + } + if ($arch -eq 'x86') {$returnMatches = $returnMatches | Where {$_ -like "Salt-Minion*x86-Setup.exe"}} + else {$returnMatches = $returnMatches | Where {$_ -like "Salt-Minion*AMD64-Setup.exe"}} + + $version = $(($returnMatches | Sort-Object -Descending)[0]).Split('-')[2] +} + # Download minion setup file -Write-Host -NoNewline "Downloading Salt minion installer Salt-Minion-$version-$arch-Setup.exe" +Write-Output -NoNewline "Downloading Salt minion installer Salt-Minion-$version-$arch-Setup.exe" $webclient = New-Object System.Net.WebClient $url = "https://repo.saltstack.com/windows/Salt-Minion-$version-$arch-Setup.exe" $file = "C:\tmp\salt.exe" $webclient.DownloadFile($url, $file) # Install minion silently -Write-Host -NoNewline "Installing Salt minion" +Write-Output -NoNewline "Installing Salt minion" #Wait for process to exit before continuing. C:\tmp\salt.exe /S /minion-name=$minion /master=$master | Out-Null @@ -141,14 +166,14 @@ If($runservice) { # If the salt-minion service is still not running, something probably # went wrong and user intervention is required - report failure. If ($service.Status -eq "Stopped") { - Write-Host -NoNewline "Failed to start salt minion" + Write-Output -NoNewline "Failed to start salt minion" exit 1 } } Else { - Write-Host -NoNewline "Stopping salt minion and setting it to 'Manual'" + Write-Output -NoNewline "Stopping salt minion and setting it to 'Manual'" Set-Service "salt-minion" -startupType "Manual" Stop-Service "salt-minion" } -Write-Host -NoNewline "Salt minion successfully installed" +Write-Output "Salt minion successfully installed" \ No newline at end of file From 71f1e0bce3eae67e2c3694f1a036c7ac661278db Mon Sep 17 00:00:00 2001 From: Justin Findlay Date: Fri, 15 Apr 2016 13:32:42 -0600 Subject: [PATCH 02/12] workaround packages for non-LTS ubuntu --- bootstrap-salt.sh | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index 5f0f916..8d74ec1 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -2156,6 +2156,9 @@ install_ubuntu_deps() { # Minimal systems might not have upstart installed, install it __PACKAGES="upstart" + if [ "$DISTRO_MAJOR_VERSION" -ge 15 ]; then + __PACKAGES="${__PACKAGES} python2.7" + fi if [ "$_VIRTUALENV_DIR" != "null" ]; then __PACKAGES="${__PACKAGES} python-virtualenv" fi @@ -2214,17 +2217,29 @@ install_ubuntu_stable_deps() { # Versions starting with 2015.5.6 and 2015.8.1 are hosted at repo.saltstack.com if [ "$(echo "$STABLE_REV" | egrep '^(2015\.5|2015\.8|latest|archive\/)')" != "" ]; then - # Saltstack's Stable Ubuntu repository + # Workaround for latest non-LTS ubuntu + if [ "$DISTRO_MAJOR_VERSION" -eq 15 ]; then + echowarn "Non-LTS Ubuntu detected, but stable packages requested. Trying packages from latest LTS release. You may experience problems" + UBUNTU_VERSION=14.04 + UBUNTU_CODENAME=trusty + else + UBUNTU_VERSION=$DISTRO_VERSION + UBUNTU_CODENAME=$DISTRO_CODENAME + fi + + # SaltStack's stable Ubuntu repository + SALTSTACK_UBUNTU_URL="${HTTP_VAL}://repo.saltstack.com/apt/ubuntu/$UBUNTU_VERSION/$repo_arch/$STABLE_REV" if [ "$(grep -ER 'latest .+ main' /etc/apt)" = "" ]; then - echo "deb http://repo.saltstack.com/apt/ubuntu/$DISTRO_VERSION/$repo_arch/$STABLE_REV $DISTRO_CODENAME main" > \ - "/etc/apt/sources.list.d/saltstack.list" + set +o nounset + echo "deb $SALTSTACK_UBUNTU_URL $UBUNTU_CODENAME main" > "/etc/apt/sources.list.d/saltstack.list" + set -o nounset fi # Make sure wget is available __apt_get_install_noinput wget # shellcheck disable=SC2086 - wget $_WGET_ARGS -q $HTTP_VAL://repo.saltstack.com/apt/ubuntu/$DISTRO_VERSION/$repo_arch/$STABLE_REV/SALTSTACK-GPG-KEY.pub -O - | apt-key add - || return 1 + wget $_WGET_ARGS -q $SALTSTACK_UBUNTU_URL/SALTSTACK-GPG-KEY.pub -O - | apt-key add - || return 1 else # Alternate PPAs: salt16, salt17, salt2014-1, salt2014-7 From e31d7f4495130ff681d150e9712ea71ebcfa62b5 Mon Sep 17 00:00:00 2001 From: Denys Havrysh Date: Mon, 18 Apr 2016 18:46:36 +0300 Subject: [PATCH 03/12] Fix Amazon Linux EOL check --- bootstrap-salt.sh | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index e94b2d6..b33aeef 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -1588,6 +1588,16 @@ __check_end_of_life_versions() { fi ;; + amazon*linux*ami) + # Amazon Linux versions lower than 2012.0X no longer supported + if [ "$DISTRO_MAJOR_VERSION" -lt 2012 ]; then + echoerror "End of life distributions are not supported." + echoerror "Please consider upgrading to the next stable. See:" + echoerror " https://aws.amazon.com/amazon-linux-ami/" + exit 1 + fi + ;; + freebsd) # FreeBSD versions lower than 9.1 are not supported. if ([ "$DISTRO_MAJOR_VERSION" -eq 9 ] && [ "$DISTRO_MINOR_VERSION" -lt 01 ]) || [ "$DISTRO_MAJOR_VERSION" -lt 9 ]; then @@ -3991,23 +4001,6 @@ install_scientific_linux_check_services() { # Amazon Linux AMI Install Functions # -# FIXME: 2010.xx releases are no longer avaliable: https://aws.amazon.com/amazon-linux-ami/ -# Need to add amazon case to __check_end_of_life_versions - -install_amazon_linux_ami_2010_deps() { - # Linux Amazon AMI 2010.xx seems to use EPEL5 but the system is based on CentOS6. - # Supporting this would be quite troublesome and we need to workaround some serious package conflicts - echoerror "Amazon Linux AMI 2010 is not supported. Please use a more recent image (Amazon Linux AMI >= 2011.xx)" - exit 1 -} - -install_amazon_linux_ami_2010_git_deps() { - # Linux Amazon AMI 2010.xx seems to use EPEL5 but the system is based on CentOS6. - # Supporting this would be quite troublesome and we need to workaround some serious package conflicts - echoerror "Amazon Linux AMI 2010 is not supported. Please use a more recent image (Amazon Linux AMI >= 2011.xx)" - exit 1 -} - install_amazon_linux_ami_deps() { # enable the EPEL repo /usr/bin/yum-config-manager --enable epel || return 1 From baa54a64112536a0eac684e4aec9813bc71b6c14 Mon Sep 17 00:00:00 2001 From: Justin Findlay Date: Mon, 18 Apr 2016 10:21:53 -0600 Subject: [PATCH 04/12] workaround start services for non-LTS ubuntu --- bootstrap-salt.sh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index 8d74ec1..e1817ae 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -2370,6 +2370,36 @@ install_ubuntu_git() { return 0 } +install_ubuntu_stable_post() { + # Workaround for latest LTS packages on latest ubuntu. Normally packages on + # debian-based systems will automatically start the corresponding daemons + if [ "$DISTRO_MAJOR_VERSION" -ne 15 ]; then + return 0 + fi + + for fname in minion master syndic api; do + # Skip if not meant to be installed + # Skip salt-api since the service should be opt-in and not necessarily started on boot + [ $fname = "api" ] && continue + + [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue + [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue + #[ $fname = "api" ] && ([ "$_INSTALL_MASTER" -eq $BS_FALSE ] || ! __check_command_exists "salt-${fname}") && continue + [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue + + if [ -f /bin/systemctl ]; then + # Using systemd + /bin/systemctl is-enabled salt-$fname.service > /dev/null 2>&1 || ( + /bin/systemctl preset salt-$fname.service > /dev/null 2>&1 && + /bin/systemctl enable salt-$fname.service > /dev/null 2>&1 + ) + sleep 0.1 + /usr/bin/systemctl daemon-reload + elif [ -f /etc/init.d/salt-$fname ]; then + update-rc.d salt-$fname defaults + fi + done +} install_ubuntu_git_post() { for fname in minion master syndic api; do From 41121f8254db1a7c4fc8201a58857049dc8f91f5 Mon Sep 17 00:00:00 2001 From: rallytime Date: Mon, 18 Apr 2016 11:57:24 -0600 Subject: [PATCH 05/12] Add an option (-r) to disable repository configuration --- bootstrap-salt.sh | 355 ++++++++++++++++++++++++++-------------------- 1 file changed, 199 insertions(+), 156 deletions(-) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index 8c90ee6..83be1a1 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -231,6 +231,7 @@ _SALT_GIT_CHECKOUT_DIR=${BS_SALT_GIT_CHECKOUT_DIR:-/tmp/git/salt} _NO_DEPS=$BS_FALSE _FORCE_SHALLOW_CLONE=$BS_FALSE _DISABLE_SSL=$BS_FALSE +_DISABLE_REPOS=$BS_FALSE #--- FUNCTION ------------------------------------------------------------------------------------------------------- @@ -330,12 +331,15 @@ __usage() { -a Pip install all python pkg dependencies for salt. Requires -V to install all pip pkgs into the virtualenv(Only available for Ubuntu base distributions) + -r Disable all repository configuration performed by this script. This + option assumes all necessary repository configuration is already present + on the system. EOT } # ---------- end of function __usage ---------- -while getopts ":hvnDc:Gg:wk:s:MSNXCPFUKIA:i:Lp:dH:ZbflV:a" opt +while getopts ":hvnDc:Gg:wk:s:MSNXCPFUKIA:i:Lp:dH:ZbflV:ar" opt do case "${opt}" in @@ -398,6 +402,7 @@ do l ) _DISABLE_SSL=$BS_TRUE ;; V ) _VIRTUALENV_DIR="$OPTARG" ;; a ) _PIP_ALL=$BS_TRUE ;; + r ) _DISABLE_REPOS=$BS_TRUE ;; \?) echo echoerror "Option does not exist : $OPTARG" @@ -2123,30 +2128,33 @@ install_ubuntu_deps() { __apt_get_install_noinput python-software-properties || return 1 fi - __enable_universe_repository || return 1 - # Versions starting with 2015.5.6 and 2015.8.1 are hosted at repo.saltstack.com - if [ "$(echo "$STABLE_REV" | egrep '^(2015\.5|2015\.8|latest|archive\/)')" = "" ]; then - if [ "$DISTRO_MAJOR_VERSION" -lt 14 ]; then - echoinfo "Installing Python Requests/Chardet from Chris Lea's PPA repository" - if [ "$DISTRO_MAJOR_VERSION" -gt 11 ] || ([ "$DISTRO_MAJOR_VERSION" -eq 11 ] && [ "$DISTRO_MINOR_VERSION" -gt 04 ]); then - # Above Ubuntu 11.04 add a -y flag - add-apt-repository -y "ppa:chris-lea/python-requests" || return 1 - add-apt-repository -y "ppa:chris-lea/python-chardet" || return 1 - add-apt-repository -y "ppa:chris-lea/python-urllib3" || return 1 - add-apt-repository -y "ppa:chris-lea/python-crypto" || return 1 - else - add-apt-repository "ppa:chris-lea/python-requests" || return 1 - add-apt-repository "ppa:chris-lea/python-chardet" || return 1 - add-apt-repository "ppa:chris-lea/python-urllib3" || return 1 - add-apt-repository "ppa:chris-lea/python-crypto" || return 1 + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + __enable_universe_repository || return 1 + + # Versions starting with 2015.5.6 and 2015.8.1 are hosted at repo.saltstack.com + if [ "$(echo "$STABLE_REV" | egrep '^(2015\.5|2015\.8|latest|archive\/)')" = "" ]; then + if [ "$DISTRO_MAJOR_VERSION" -lt 14 ]; then + echoinfo "Installing Python Requests/Chardet from Chris Lea's PPA repository" + if [ "$DISTRO_MAJOR_VERSION" -gt 11 ] || ([ "$DISTRO_MAJOR_VERSION" -eq 11 ] && [ "$DISTRO_MINOR_VERSION" -gt 04 ]); then + # Above Ubuntu 11.04 add a -y flag + add-apt-repository -y "ppa:chris-lea/python-requests" || return 1 + add-apt-repository -y "ppa:chris-lea/python-chardet" || return 1 + add-apt-repository -y "ppa:chris-lea/python-urllib3" || return 1 + add-apt-repository -y "ppa:chris-lea/python-crypto" || return 1 + else + add-apt-repository "ppa:chris-lea/python-requests" || return 1 + add-apt-repository "ppa:chris-lea/python-chardet" || return 1 + add-apt-repository "ppa:chris-lea/python-urllib3" || return 1 + add-apt-repository "ppa:chris-lea/python-crypto" || return 1 + fi fi - fi - if [ "$DISTRO_MAJOR_VERSION" -gt 12 ] || ([ "$DISTRO_MAJOR_VERSION" -eq 12 ] && [ "$DISTRO_MINOR_VERSION" -gt 03 ]); then - if ([ "$DISTRO_MAJOR_VERSION" -lt 15 ] && [ "$_ENABLE_EXTERNAL_ZMQ_REPOS" -eq $BS_TRUE ]); then - echoinfo "Installing ZMQ>=4/PyZMQ>=14 from Chris Lea's PPA repository" - add-apt-repository -y ppa:chris-lea/zeromq || return 1 + if [ "$DISTRO_MAJOR_VERSION" -gt 12 ] || ([ "$DISTRO_MAJOR_VERSION" -eq 12 ] && [ "$DISTRO_MINOR_VERSION" -gt 03 ]); then + if ([ "$DISTRO_MAJOR_VERSION" -lt 15 ] && [ "$_ENABLE_EXTERNAL_ZMQ_REPOS" -eq $BS_TRUE ]); then + echoinfo "Installing ZMQ>=4/PyZMQ>=14 from Chris Lea's PPA repository" + add-apt-repository -y ppa:chris-lea/zeromq || return 1 + fi fi fi fi @@ -2206,56 +2214,61 @@ install_ubuntu_deps() { } install_ubuntu_stable_deps() { - if [ "$CPU_ARCH_L" = "amd64" ] || [ "$CPU_ARCH_L" = "x86_64" ]; then - repo_arch="amd64" - elif [ "$CPU_ARCH_L" = "i386" ] || [ "$CPU_ARCH_L" = "i686" ]; then - echoerror "repo.saltstack.com likely doesn't have 32-bit packages for Ubuntu (yet?)" - repo_arch="i386" + + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + if [ "$CPU_ARCH_L" = "amd64" ] || [ "$CPU_ARCH_L" = "x86_64" ]; then + repo_arch="amd64" + elif [ "$CPU_ARCH_L" = "i386" ] || [ "$CPU_ARCH_L" = "i686" ]; then + echoerror "repo.saltstack.com likely doesn't have 32-bit packages for Ubuntu (yet?)" + repo_arch="i386" + fi fi install_ubuntu_deps || return 1 - # Versions starting with 2015.5.6 and 2015.8.1 are hosted at repo.saltstack.com - if [ "$(echo "$STABLE_REV" | egrep '^(2015\.5|2015\.8|latest|archive\/)')" != "" ]; then - # Workaround for latest non-LTS ubuntu - if [ "$DISTRO_MAJOR_VERSION" -eq 15 ]; then - echowarn "Non-LTS Ubuntu detected, but stable packages requested. Trying packages from latest LTS release. You may experience problems" - UBUNTU_VERSION=14.04 - UBUNTU_CODENAME=trusty + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + # Versions starting with 2015.5.6 and 2015.8.1 are hosted at repo.saltstack.com + if [ "$(echo "$STABLE_REV" | egrep '^(2015\.5|2015\.8|latest|archive\/)')" != "" ]; then + # Workaround for latest non-LTS ubuntu + if [ "$DISTRO_MAJOR_VERSION" -eq 15 ]; then + echowarn "Non-LTS Ubuntu detected, but stable packages requested. Trying packages from latest LTS release. You may experience problems" + UBUNTU_VERSION=14.04 + UBUNTU_CODENAME=trusty + else + UBUNTU_VERSION=$DISTRO_VERSION + UBUNTU_CODENAME=$DISTRO_CODENAME + fi + + # SaltStack's stable Ubuntu repository + SALTSTACK_UBUNTU_URL="${HTTP_VAL}://repo.saltstack.com/apt/ubuntu/$UBUNTU_VERSION/$repo_arch/$STABLE_REV" + if [ "$(grep -ER 'latest .+ main' /etc/apt)" = "" ]; then + set +o nounset + echo "deb $SALTSTACK_UBUNTU_URL $UBUNTU_CODENAME main" > "/etc/apt/sources.list.d/saltstack.list" + set -o nounset + fi + + # Make sure wget is available + __apt_get_install_noinput wget + + # shellcheck disable=SC2086 + wget $_WGET_ARGS -q $SALTSTACK_UBUNTU_URL/SALTSTACK-GPG-KEY.pub -O - | apt-key add - || return 1 + else - UBUNTU_VERSION=$DISTRO_VERSION - UBUNTU_CODENAME=$DISTRO_CODENAME - fi + # Alternate PPAs: salt16, salt17, salt2014-1, salt2014-7 + if [ ! "$(echo "$STABLE_REV" | egrep '^(1\.6|1\.7)$')" = "" ]; then + STABLE_PPA="saltstack/salt$(echo "$STABLE_REV" | tr -d .)" + elif [ ! "$(echo "$STABLE_REV" | egrep '^(2014\.1|2014\.7)$')" = "" ]; then + STABLE_PPA="saltstack/salt$(echo "$STABLE_REV" | tr . -)" + else + STABLE_PPA="saltstack/salt" + fi - # SaltStack's stable Ubuntu repository - SALTSTACK_UBUNTU_URL="${HTTP_VAL}://repo.saltstack.com/apt/ubuntu/$UBUNTU_VERSION/$repo_arch/$STABLE_REV" - if [ "$(grep -ER 'latest .+ main' /etc/apt)" = "" ]; then - set +o nounset - echo "deb $SALTSTACK_UBUNTU_URL $UBUNTU_CODENAME main" > "/etc/apt/sources.list.d/saltstack.list" - set -o nounset - fi - - # Make sure wget is available - __apt_get_install_noinput wget - - # shellcheck disable=SC2086 - wget $_WGET_ARGS -q $SALTSTACK_UBUNTU_URL/SALTSTACK-GPG-KEY.pub -O - | apt-key add - || return 1 - - else - # Alternate PPAs: salt16, salt17, salt2014-1, salt2014-7 - if [ ! "$(echo "$STABLE_REV" | egrep '^(1\.6|1\.7)$')" = "" ]; then - STABLE_PPA="saltstack/salt$(echo "$STABLE_REV" | tr -d .)" - elif [ ! "$(echo "$STABLE_REV" | egrep '^(2014\.1|2014\.7)$')" = "" ]; then - STABLE_PPA="saltstack/salt$(echo "$STABLE_REV" | tr . -)" - else - STABLE_PPA="saltstack/salt" - fi - - if [ "$DISTRO_MAJOR_VERSION" -gt 11 ] || ([ "$DISTRO_MAJOR_VERSION" -eq 11 ] && [ "$DISTRO_MINOR_VERSION" -gt 04 ]); then - # Above Ubuntu 11.04 add a -y flag - add-apt-repository -y "ppa:$STABLE_PPA" || return 1 - else - add-apt-repository "ppa:$STABLE_PPA" || return 1 + if [ "$DISTRO_MAJOR_VERSION" -gt 11 ] || ([ "$DISTRO_MAJOR_VERSION" -eq 11 ] && [ "$DISTRO_MINOR_VERSION" -gt 04 ]); then + # Above Ubuntu 11.04 add a -y flag + add-apt-repository -y "ppa:$STABLE_PPA" || return 1 + else + add-apt-repository "ppa:$STABLE_PPA" || return 1 + fi fi fi @@ -2272,18 +2285,20 @@ install_ubuntu_daily_deps() { __apt_get_install_noinput python-software-properties || return 1 fi - __enable_universe_repository || return 1 + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + __enable_universe_repository || return 1 - # for anything up to and including 11.04 do not use the -y option - if [ "$DISTRO_MAJOR_VERSION" -gt 11 ] || ([ "$DISTRO_MAJOR_VERSION" -eq 11 ] && [ "$DISTRO_MINOR_VERSION" -gt 04 ]); then - # Above Ubuntu 11.04 add a -y flag - add-apt-repository -y ppa:saltstack/salt-daily || return 1 - else - add-apt-repository ppa:saltstack/salt-daily || return 1 + # for anything up to and including 11.04 do not use the -y option + if [ "$DISTRO_MAJOR_VERSION" -gt 11 ] || ([ "$DISTRO_MAJOR_VERSION" -eq 11 ] && [ "$DISTRO_MINOR_VERSION" -gt 04 ]); then + # Above Ubuntu 11.04 add a -y flag + add-apt-repository -y ppa:saltstack/salt-daily || return 1 + else + add-apt-repository ppa:saltstack/salt-daily || return 1 + fi + + apt-get update fi - apt-get update - if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then __apt_get_upgrade_noinput || return 1 fi @@ -2637,26 +2652,30 @@ _eof __apt_get_install_noinput -t unstable libzmq3 libzmq3-dev || return 1 __apt_get_install_noinput build-essential python-dev python-pip python-setuptools || return 1 - # Saltstack's Unstable Debian repository - if [ "$(grep -R 'debian.saltstack.com' /etc/apt)" = "" ]; then - echo "deb http://debian.saltstack.com/debian unstable main" >> \ - /etc/apt/sources.list.d/saltstack.list + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + # Saltstack's Unstable Debian repository + if [ "$(grep -R 'debian.saltstack.com' /etc/apt)" = "" ]; then + echo "deb http://debian.saltstack.com/debian unstable main" >> \ + /etc/apt/sources.list.d/saltstack.list + fi fi return 0 fi - # Debian Backports - if [ "$(grep -R 'squeeze-backports' /etc/apt | grep -v "^#")" = "" ]; then - echo "deb http://ftp.de.debian.org/debian-backports squeeze-backports main" >> \ - /etc/apt/sources.list.d/backports.list - fi + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + # Debian Backports + if [ "$(grep -R 'squeeze-backports' /etc/apt | grep -v "^#")" = "" ]; then + echo "deb http://ftp.de.debian.org/debian-backports squeeze-backports main" >> \ + /etc/apt/sources.list.d/backports.list + fi - # Saltstack's Stable Debian repository - if [ "$(grep -R 'squeeze-saltstack' /etc/apt)" = "" ]; then - echo "deb http://debian.saltstack.com/debian squeeze-saltstack main" >> \ - /etc/apt/sources.list.d/saltstack.list + # Saltstack's Stable Debian repository + if [ "$(grep -R 'squeeze-saltstack' /etc/apt)" = "" ]; then + echo "deb http://debian.saltstack.com/debian squeeze-saltstack main" >> \ + /etc/apt/sources.list.d/saltstack.list + fi + apt-get update || return 1 fi - apt-get update || return 1 # Python requests is available through Squeeze backports # Additionally install procps and pciutils which allows for Docker bootstraps. See 366#issuecomment-39666813 @@ -2714,16 +2733,18 @@ install_debian_7_deps() { apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553 || return 1 fi - # Debian Backports - if [ "$(grep -R 'wheezy-backports' /etc/apt | grep -v "^#")" = "" ]; then - echo "deb http://httpredir.debian.org/debian wheezy-backports main" >> \ - /etc/apt/sources.list.d/backports.list - fi + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + # Debian Backports + if [ "$(grep -R 'wheezy-backports' /etc/apt | grep -v "^#")" = "" ]; then + echo "deb http://httpredir.debian.org/debian wheezy-backports main" >> \ + /etc/apt/sources.list.d/backports.list + fi - # Saltstack's Stable Debian repository - if [ "$(grep -R 'wheezy-saltstack' /etc/apt)" = "" ]; then - echo "deb http://debian.saltstack.com/debian wheezy-saltstack main" >> \ - /etc/apt/sources.list.d/saltstack.list + # Saltstack's Stable Debian repository + if [ "$(grep -R 'wheezy-saltstack' /etc/apt)" = "" ]; then + echo "deb http://debian.saltstack.com/debian wheezy-saltstack main" >> \ + /etc/apt/sources.list.d/saltstack.list + fi fi # shellcheck disable=SC2086 @@ -2763,11 +2784,13 @@ install_debian_7_deps() { install_debian_8_deps() { echodebug "install_debian_8_deps" - if [ "$CPU_ARCH_L" = "amd64" ] || [ "$CPU_ARCH_L" = "x86_64" ]; then - repo_arch="amd64" - elif [ "$CPU_ARCH_L" = "i386" ] || [ "$CPU_ARCH_L" = "i686" ]; then - echoerror "repo.saltstack.com likely doesn't have 32-bit packages for Debian (yet?)" - repo_arch="i386" + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + if [ "$CPU_ARCH_L" = "amd64" ] || [ "$CPU_ARCH_L" = "x86_64" ]; then + repo_arch="amd64" + elif [ "$CPU_ARCH_L" = "i386" ] || [ "$CPU_ARCH_L" = "i686" ]; then + echoerror "repo.saltstack.com likely doesn't have 32-bit packages for Debian (yet?)" + repo_arch="i386" + fi fi if [ $_START_DAEMONS -eq $BS_FALSE ]; then @@ -2789,16 +2812,18 @@ install_debian_8_deps() { apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010 || return 1 fi - # Versions starting with 2015.5.6 and 2015.8.1 are hosted at repo.saltstack.com - if [ "$(echo "$STABLE_REV" | egrep '^(2015\.5|2015\.8|latest|archive\/)')" != "" ]; then - SALTSTACK_DEBIAN_URL="${HTTP_VAL}://repo.saltstack.com/apt/debian/$DISTRO_MAJOR_VERSION/$repo_arch/$STABLE_REV" - echo "deb $SALTSTACK_DEBIAN_URL jessie main" > "/etc/apt/sources.list.d/saltstack.list" + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + # Versions starting with 2015.5.6 and 2015.8.1 are hosted at repo.saltstack.com + if [ "$(echo "$STABLE_REV" | egrep '^(2015\.5|2015\.8|latest|archive\/)')" != "" ]; then + SALTSTACK_DEBIAN_URL="${HTTP_VAL}://repo.saltstack.com/apt/debian/$DISTRO_MAJOR_VERSION/$repo_arch/$STABLE_REV" + echo "deb $SALTSTACK_DEBIAN_URL jessie main" > "/etc/apt/sources.list.d/saltstack.list" - # shellcheck disable=SC2086 - wget $_WGET_ARGS -q "$SALTSTACK_DEBIAN_URL/SALTSTACK-GPG-KEY.pub" -O - | apt-key add - || return 1 + # shellcheck disable=SC2086 + wget $_WGET_ARGS -q "$SALTSTACK_DEBIAN_URL/SALTSTACK-GPG-KEY.pub" -O - | apt-key add - || return 1 - if [ "${HTTP_VAL}" = "https" ] ; then - __apt_get_install_noinput apt-transport-https || return 1 + if [ "${HTTP_VAL}" = "https" ] ; then + __apt_get_install_noinput apt-transport-https || return 1 + fi fi fi @@ -3126,11 +3151,14 @@ __fedora_get_package_manager() { install_fedora_deps() { __fedora_get_package_manager - if [ "$_ENABLE_EXTERNAL_ZMQ_REPOS" -eq $BS_TRUE ]; then - __install_saltstack_copr_zeromq_repository || return 1 - fi - __install_saltstack_copr_salt_repository || return 1 + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + if [ "$_ENABLE_EXTERNAL_ZMQ_REPOS" -eq $BS_TRUE ]; then + __install_saltstack_copr_zeromq_repository || return 1 + fi + + __install_saltstack_copr_salt_repository || return 1 + fi __PACKAGES="yum-utils PyYAML libyaml m2crypto python-crypto python-jinja2 python-msgpack python-zmq python-requests" @@ -3411,8 +3439,11 @@ __install_saltstack_copr_salt_repository() { } install_centos_stable_deps() { - __install_epel_repository || return 1 - __install_saltstack_rhel_repository || return 1 + + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + __install_epel_repository || return 1 + __install_saltstack_rhel_repository || return 1 + fi if [ -f "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" ]; then # We're on the develop branch, install whichever tornado is on the requirements file @@ -4054,16 +4085,18 @@ install_amazon_linux_ami_2010_git_deps() { } install_amazon_linux_ami_deps() { - # enable the EPEL repo - /usr/bin/yum-config-manager --enable epel || return 1 - # exclude Salt and ZeroMQ packages from EPEL - /usr/bin/yum-config-manager epel --setopt "epel.exclude=zeromq* salt* python-zmq*" --save || return 1 + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + # enable the EPEL repo + /usr/bin/yum-config-manager --enable epel || return 1 - __REPO_FILENAME="saltstack-repo.repo" + # exclude Salt and ZeroMQ packages from EPEL + /usr/bin/yum-config-manager epel --setopt "epel.exclude=zeromq* salt* python-zmq*" --save || return 1 - if [ ! -s "/etc/yum.repos.d/${__REPO_FILENAME}" ]; then - cat <<_eof > "/etc/yum.repos.d/${__REPO_FILENAME}" + __REPO_FILENAME="saltstack-repo.repo" + + if [ ! -s "/etc/yum.repos.d/${__REPO_FILENAME}" ]; then + cat <<_eof > "/etc/yum.repos.d/${__REPO_FILENAME}" [saltstack-repo] disabled=False name=SaltStack repo for RHEL/CentOS 6 @@ -4072,10 +4105,11 @@ gpgkey=$HTTP_VAL://repo.saltstack.com/yum/redhat/6/\$basearch/$STABLE_REV/SALTST baseurl=$HTTP_VAL://repo.saltstack.com/yum/redhat/6/\$basearch/$STABLE_REV/ humanname=SaltStack repo for RHEL/CentOS 6 _eof - fi + fi - if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then - yum -y update || return 1 + if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then + yum -y update || return 1 + fi fi __PACKAGES="PyYAML m2crypto python-crypto python-msgpack python-zmq python26-ordereddict python-jinja2 python-requests" @@ -4437,21 +4471,24 @@ __configure_freebsd_pkg_details() { } install_freebsd_9_stable_deps() { - #make variables available even if pkg already installed - __freebsd_get_packagesite - if [ ! -x /usr/local/sbin/pkg ]; then + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + #make variables available even if pkg already installed + __freebsd_get_packagesite - # install new `pkg` code from its own tarball. - fetch "${_PACKAGESITE}/Latest/pkg.txz" || return 1 - tar xf ./pkg.txz -s ",/.*/,,g" "*/pkg-static" || return 1 - ./pkg-static add ./pkg.txz || return 1 - /usr/local/sbin/pkg2ng || return 1 + if [ ! -x /usr/local/sbin/pkg ]; then + + # install new `pkg` code from its own tarball. + fetch "${_PACKAGESITE}/Latest/pkg.txz" || return 1 + tar xf ./pkg.txz -s ",/.*/,,g" "*/pkg-static" || return 1 + ./pkg-static add ./pkg.txz || return 1 + /usr/local/sbin/pkg2ng || return 1 + fi + + # Configure the pkg repository using new approach + __configure_freebsd_pkg_details || return 1 fi - # Configure the pkg repository using new approach - __configure_freebsd_pkg_details || return 1 - # Now install swig # shellcheck disable=SC2086 /usr/local/sbin/pkg install ${FROM_FREEBSD} -y swig || return 1 @@ -5076,12 +5113,14 @@ install_opensuse_stable_deps() { DISTRO_REPO="openSUSE_${DISTRO_MAJOR_VERSION}.${DISTRO_MINOR_VERSION}" fi - # Is the repository already known - __set_suse_pkg_repo - __zypper repos --details | grep "${SUSE_PKG_URL}" >/dev/null 2>&1 - if [ $? -eq 1 ]; then - # zypper does not yet know nothing about systemsmanagement_saltstack - __zypper addrepo --refresh "${SUSE_PKG_URL}" || return 1 + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + # Is the repository already known + __set_suse_pkg_repo + __zypper repos --details | grep "${SUSE_PKG_URL}" >/dev/null 2>&1 + if [ $? -eq 1 ]; then + # zypper does not yet know anything about systemsmanagement_saltstack + __zypper addrepo --refresh "${SUSE_PKG_URL}" || return 1 + fi fi __zypper --gpg-auto-import-keys refresh @@ -5306,12 +5345,14 @@ install_suse_12_stable_deps() { DISTRO_REPO="SLE_${DISTRO_MAJOR_VERSION}" - # Is the repository already known - __set_suse_pkg_repo - __zypper repos | grep "${SUSE_PKG_URL}" >/dev/null 2>&1 - if [ $? -eq 1 ]; then - # zypper does not yet know nothing about systemsmanagement_saltstack - __zypper addrepo --refresh "${SUSE_PKG_URL}" || return 1 + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + # Is the repository already known + __set_suse_pkg_repo + __zypper repos | grep "${SUSE_PKG_URL}" >/dev/null 2>&1 + if [ $? -eq 1 ]; then + # zypper does not yet know nothing about systemsmanagement_saltstack + __zypper addrepo --refresh "${SUSE_PKG_URL}" || return 1 + fi fi __zypper --gpg-auto-import-keys refresh || return 1 @@ -5492,12 +5533,14 @@ install_suse_11_stable_deps() { fi DISTRO_REPO="SLE_${DISTRO_MAJOR_VERSION}${DISTRO_PATCHLEVEL}" - # Is the repository already known - __set_suse_pkg_repo - __zypper repos | grep "${SUSE_PKG_URL}" >/dev/null 2>&1 - if [ $? -eq 1 ]; then - # zypper does not yet know nothing about systemsmanagement_saltstack - __zypper addrepo --refresh "${SUSE_PKG_URL}" || return 1 + if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + # Is the repository already known + __set_suse_pkg_repo + __zypper repos | grep "${SUSE_PKG_URL}" >/dev/null 2>&1 + if [ $? -eq 1 ]; then + # zypper does not yet know nothing about systemsmanagement_saltstack + __zypper addrepo --refresh "${SUSE_PKG_URL}" || return 1 + fi fi __zypper --gpg-auto-import-keys refresh || return 1 From 3354a484e0e7d2fd2edb9beaad45b564675ece01 Mon Sep 17 00:00:00 2001 From: Denys Havrysh Date: Wed, 20 Apr 2016 11:04:22 +0300 Subject: [PATCH 06/12] Always download and install latest `epel-release` package on RHEL systems --- bootstrap-salt.sh | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index 83be1a1..c7dfbf2 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -3339,26 +3339,19 @@ __install_epel_repository() { return 0 fi - if [ "$CPU_ARCH_L" = "i686" ]; then - EPEL_ARCH="i386" - else - EPEL_ARCH=$CPU_ARCH_L - fi + # Download latest 'epel-release' package for the distro version directly + epel_repo_url="${HTTP_VAL}://dl.fedoraproject.org/pub/epel/epel-release-latest-${DISTRO_MAJOR_VERSION}.noarch.rpm" if [ "$DISTRO_MAJOR_VERSION" -eq 5 ]; then - # Install curl which is not included in minimal CentOS 5 images - rpm -q curl > /dev/null 2>&1 || yum -y install curl - # rpm from CentOS/RHEL release 5 does not support HTTP downloads - # properly, especially 3XX code redirects - __fetch_url /tmp/epel-release.rpm "${HTTP_VAL}://download.fedoraproject.org/pub/epel/5/${EPEL_ARCH}/epel-release-5-4.noarch.rpm" || return 1 + __fetch_url /tmp/epel-release.rpm "$epel_repo_url" || return 1 rpm -Uvh --force /tmp/epel-release.rpm || return 1 - elif [ "$DISTRO_MAJOR_VERSION" -eq 6 ]; then - rpm -Uvh --force "${HTTP_VAL}://download.fedoraproject.org/pub/epel/6/${EPEL_ARCH}/epel-release-6-8.noarch.rpm" || return 1 - elif [ "$DISTRO_MAJOR_VERSION" -eq 7 ]; then - rpm -Uvh --force "${HTTP_VAL}://download.fedoraproject.org/pub/epel/7/${EPEL_ARCH}/e/epel-release-7-6.noarch.rpm" || return 1 + rm -f /tmp/epel-release.rpm + elif [ "$DISTRO_MAJOR_VERSION" -ge 6 ]; then + rpm -Uvh --force "$epel_repo_url" || return 1 else echoerror "Failed add EPEL repository support." return 1 fi + _EPEL_REPOS_INSTALLED=$BS_TRUE return 0 } @@ -3439,6 +3432,10 @@ __install_saltstack_copr_salt_repository() { } install_centos_stable_deps() { + if [ "$DISTRO_MAJOR_VERSION" -eq 5 ]; then + # Install curl which is not included in @core CentOS 5 installation + __check_command_exists curl || yum -y install "curl.${CPU_ARCH_L}" || return 1 + fi if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then __install_epel_repository || return 1 From 2579facc0ec9941e86a820e34f3b7e7aeb22f2c5 Mon Sep 17 00:00:00 2001 From: Wallace C Ricardo Date: Thu, 21 Apr 2016 15:10:42 -0400 Subject: [PATCH 07/12] Update README.rst Fix typo "docker built" on README --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index b14912e..d38040f 100644 --- a/README.rst +++ b/README.rst @@ -506,7 +506,7 @@ with the bootstrap script: .. code:: console - docker built -t local/salt-bootstrap . + docker build -t local/salt-bootstrap . Start your new container with Salt services up and running: From 25e295a5eca5261fadc72fc906e94efcc2e3fb0f Mon Sep 17 00:00:00 2001 From: Justin Anderson Date: Tue, 26 Apr 2016 10:02:17 -0600 Subject: [PATCH 08/12] Ubuntu 12.04 needs to be updated before installing packages (#829) --- bootstrap-salt.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index 83be1a1..ed3741f 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -2307,6 +2307,9 @@ install_ubuntu_daily_deps() { } install_ubuntu_git_deps() { + if [ "$DISTRO_MAJOR_VERSION" -eq 12 ]; then + apt-get update + fi __apt_get_install_noinput git-core || return 1 __git_clone_and_checkout || return 1 From 234c7f861f3324ae2c6ae572d55c805e03b16154 Mon Sep 17 00:00:00 2001 From: chiefnuts Date: Fri, 6 May 2016 11:05:11 -0600 Subject: [PATCH 09/12] Update bootstrap-salt.ps1 added fix to string split to correct for version numbers have additional hotfix revision numbers. --- bootstrap-salt.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bootstrap-salt.ps1 b/bootstrap-salt.ps1 index 4bf26f9..c7e0194 100644 --- a/bootstrap-salt.ps1 +++ b/bootstrap-salt.ps1 @@ -121,7 +121,7 @@ if (!$version) { if ($arch -eq 'x86') {$returnMatches = $returnMatches | Where {$_ -like "Salt-Minion*x86-Setup.exe"}} else {$returnMatches = $returnMatches | Where {$_ -like "Salt-Minion*AMD64-Setup.exe"}} - $version = $(($returnMatches | Sort-Object -Descending)[0]).Split('-')[2] + $version = $(($returnMatches | Sort-Object -Descending)[0]).Split(("n-","-A","-x"),([System.StringSplitOptions]::RemoveEmptyEntries))[1] } # Download minion setup file @@ -176,4 +176,4 @@ Else { Stop-Service "salt-minion" } -Write-Output "Salt minion successfully installed" \ No newline at end of file +Write-Output "Salt minion successfully installed" From b1a03ea8bc36f9f3a7f8e75a0e381cd02e021818 Mon Sep 17 00:00:00 2001 From: Justin Anderson Date: Fri, 6 May 2016 11:22:37 -0600 Subject: [PATCH 10/12] Removed libzmq4 and forking-deamon-patch for Opensuse13 --- bootstrap-salt.sh | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index ed3741f..ebfe3d1 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -5150,7 +5150,7 @@ install_opensuse_stable_deps() { if [ "$DISTRO_MAJOR_VERSION" -lt 13 ]; then __PACKAGES="${__PACKAGES} libzmq3" elif [ "$DISTRO_MAJOR_VERSION" -eq 13 ]; then - __PACKAGES="${__PACKAGES} libzmq4" + __PACKAGES="${__PACKAGES} libzmq3" elif [ "$DISTRO_MAJOR_VERSION" -gt 13 ]; then __PACKAGES="${__PACKAGES} libzmq5" fi @@ -5185,13 +5185,6 @@ install_opensuse_git_deps() { __git_clone_and_checkout || return 1 - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/pkg/suse/use-forking-daemon.patch" ]; then - # shellcheck disable=SC2164 - cd "${_SALT_GIT_CHECKOUT_DIR}" - echowarn "Applying patch to systemd service unit file" - patch -p1 < pkg/suse/use-forking-daemon.patch || return 1 - fi - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" ]; then # We're on the develop branch, install whichever tornado is on the requirements file __REQUIRED_TORNADO="$(grep tornado "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt")" From 051823337276349140de0344b37327e588649b7b Mon Sep 17 00:00:00 2001 From: rallytime Date: Tue, 10 May 2016 13:28:55 -0600 Subject: [PATCH 11/12] Update ChangleLog for new release --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 5b7fcbf..3f87574 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Version 2016.05.10: + * Removed libzmq4 and forking-deamon-patch for Opensuse13. (jtand) #840 + * Ubuntu 12.04 needs to be updated before installing packages. (jtand) #829 + * Always download and install *latest* `epel-release` package on RHEL systems. (vutny) #825 + * Fix Amazon Linux EOL check. (vutny) #818 + Version 2016.04.18: * Add support for openSUSE Leap. Thanks Roman Inflianskas(rominf). #693 * Fix missing deps installation on Debian. Thanks Steve Groesz(wolfpackmars2). #699 From bdbb4c9bd50da49cb1e99b90c8993fd6f564b211 Mon Sep 17 00:00:00 2001 From: rallytime Date: Tue, 10 May 2016 13:31:54 -0600 Subject: [PATCH 12/12] Update ScriptVersion --- bootstrap-salt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index 22538ac..2470193 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -18,7 +18,7 @@ #====================================================================================================================== set -o nounset # Treat unset variables as an error -__ScriptVersion="2016.04.18" +__ScriptVersion="2016.05.10" __ScriptName="bootstrap-salt.sh" #======================================================================================================================