mirror of
https://github.com/saltstack/salt-bootstrap.git
synced 2025-04-16 09:40:21 +00:00
Add the necessary functionality to allow pre-seeding minion keys. Fixes #112.
* Added a `movefile` function which will overwrite files only if allowed. * Move any key files found on the directory passed to `-k` to the minions pki directory for the local master.
This commit is contained in:
parent
6048bf14b1
commit
fc2c78b410
3 changed files with 159 additions and 23 deletions
34
ChangeLog
34
ChangeLog
|
@ -1,14 +1,14 @@
|
||||||
Version 1.5.X:
|
Version 1.5.X:
|
||||||
* Fixed an issue we had when /proc/cpuinfo had more than one CPU.
|
* Fixed an issue we had when /proc/cpuinfo had more than one CPU. Detected on AMD cpu's.
|
||||||
Detected on AMD cpu's.
|
* OpenSUSE 12.3 uses lsb_release. Fix the returned distro name "openSUSE project" to "openSUSE"
|
||||||
* OpenSUSE 12.3 uses lsb_release. Fix the returned distro name
|
which the script handles.
|
||||||
"openSUSE project" to "openSUSE" which the script handles.
|
* Added an custom move function which will only override if required and if we permit it.
|
||||||
|
* Implemented the necessary function to pre-seed minion keys on a salt master as an optional
|
||||||
|
argument.
|
||||||
* Distro Support Fixed:
|
* Distro Support Fixed:
|
||||||
* FreeBSD (Don't let the script fail if PACKAGESITE is not
|
* FreeBSD (Don't let the script fail if PACKAGESITE is not set)
|
||||||
set)
|
|
||||||
* Distro Support Added:
|
* Distro Support Added:
|
||||||
* Ubuntu 13.04 (Was disabled because of a bad beta1. Fixed in
|
* Ubuntu 13.04 (Was disabled because of a bad beta1. Fixed in beta2)
|
||||||
beta2)
|
|
||||||
|
|
||||||
|
|
||||||
Version 1.5.3:
|
Version 1.5.3:
|
||||||
|
@ -18,8 +18,8 @@ Version 1.5.3:
|
||||||
* Fixed `config_salt()`
|
* Fixed `config_salt()`
|
||||||
* Distro Support Fixed:
|
* Distro Support Fixed:
|
||||||
* EPEL based installations (CentOS, Amazon Linux, RedHat)
|
* EPEL based installations (CentOS, Amazon Linux, RedHat)
|
||||||
* SuSE/OpenSUSE (problem running the script twice, ie, existing
|
* SuSE/OpenSUSE (problem running the script twice, ie, existing `devel_languages_python`
|
||||||
`devel_languages_python` repository)
|
repository)
|
||||||
* SuSE 11 SP1 (pip based install and config trigger)
|
* SuSE 11 SP1 (pip based install and config trigger)
|
||||||
* Distro Support Added:
|
* Distro Support Added:
|
||||||
* Debian 7 (Only git installations at the moment)
|
* Debian 7 (Only git installations at the moment)
|
||||||
|
@ -29,8 +29,7 @@ Version 1.5.2:
|
||||||
* Fix issue with travis testing(it installs it's own ZeroMQ3 lib
|
* Fix issue with travis testing(it installs it's own ZeroMQ3 lib
|
||||||
* Allow setting the debug output from an environment variable
|
* Allow setting the debug output from an environment variable
|
||||||
* Fix an escape issue in the `printf` calls used in our echo calls
|
* Fix an escape issue in the `printf` calls used in our echo calls
|
||||||
* Don't overwrite files(config, init.d, etc). Use a specific flag to
|
* Don't overwrite files(config, init.d, etc). Use a specific flag to force overwrites.
|
||||||
force overwrites.
|
|
||||||
* Distro Support Fixed:
|
* Distro Support Fixed:
|
||||||
* Ubuntu daily installs.
|
* Ubuntu daily installs.
|
||||||
* Distro Support Added:
|
* Distro Support Added:
|
||||||
|
@ -41,10 +40,9 @@ Version 1.5.1:
|
||||||
* Improved unittesting.
|
* Improved unittesting.
|
||||||
* Starting daemons.
|
* Starting daemons.
|
||||||
* Make sure that daemons are really running.
|
* Make sure that daemons are really running.
|
||||||
* For the users to make the choice if installing from PIP(if required
|
* For the users to make the choice if installing from PIP(if required since there aren't system
|
||||||
since there aren't system pacakges).
|
pacakges).
|
||||||
* Fixed salt's git cloning when the salt git tree is already present on
|
* Fixed salt's git cloning when the salt git tree is already present on the system.
|
||||||
the system.
|
|
||||||
* Distro Support Fixed:
|
* Distro Support Fixed:
|
||||||
* Debian 6
|
* Debian 6
|
||||||
* Ubuntu 12.10
|
* Ubuntu 12.10
|
||||||
|
@ -66,3 +64,7 @@ Version 1.5:
|
||||||
* Arch
|
* Arch
|
||||||
* SmartOS
|
* SmartOS
|
||||||
* FreeBSD 9.0
|
* FreeBSD 9.0
|
||||||
|
|
||||||
|
|
||||||
|
# Don't remove the line bellow.
|
||||||
|
# vim: fenc=utf-8 spell spl=en cc=100 tw=99 fo=want ts=4
|
||||||
|
|
20
README.rst
20
README.rst
|
@ -106,7 +106,21 @@ In order to install salt for a distribution you need to define:
|
||||||
config_salt [THIS ONE IS ALREADY DEFINED AS THE DEFAULT]
|
config_salt [THIS ONE IS ALREADY DEFINED AS THE DEFAULT]
|
||||||
|
|
||||||
|
|
||||||
3. To install salt, which, of course, is required, one of:
|
3. Optionally, define a salt master pre-seed function, which will be called if the -k (pre-seed
|
||||||
|
master keys) option is passed. One of:
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
pressed_<distro>_<major_version>_<install_type>_master
|
||||||
|
pressed_<distro>_<major_version>_<minor_version>_<install_type>_master
|
||||||
|
pressed_<distro>_<major_version>_master
|
||||||
|
pressed_<distro>_<major_version>_<minor_version>_master
|
||||||
|
pressed_<distro>_<install_type>_master
|
||||||
|
pressed_<distro>_master
|
||||||
|
pressed_master [THIS ONE IS ALREADY DEFINED AS THE DEFAULT]
|
||||||
|
|
||||||
|
|
||||||
|
4. To install salt, which, of course, is required, one of:
|
||||||
|
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
|
@ -115,7 +129,7 @@ In order to install salt for a distribution you need to define:
|
||||||
install_<distro>_<install_type>
|
install_<distro>_<install_type>
|
||||||
|
|
||||||
|
|
||||||
4. Optionally, define a post install function, one of:
|
5. Optionally, define a post install function, one of:
|
||||||
|
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
|
@ -127,7 +141,7 @@ In order to install salt for a distribution you need to define:
|
||||||
install_<distro>_post
|
install_<distro>_post
|
||||||
|
|
||||||
|
|
||||||
5. Optionally, define a start daemons function, one of:
|
6. Optionally, define a start daemons function, one of:
|
||||||
|
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
|
|
|
@ -137,6 +137,8 @@ usage() {
|
||||||
-n No colours.
|
-n No colours.
|
||||||
-D Show debug output.
|
-D Show debug output.
|
||||||
-c Temporary configuration directory
|
-c Temporary configuration directory
|
||||||
|
-k Temporary directory holding the minion keys which will pre-seed
|
||||||
|
the master.
|
||||||
-M Also install salt-master
|
-M Also install salt-master
|
||||||
-S Also install salt-syndic
|
-S Also install salt-syndic
|
||||||
-N Do not install salt-minion
|
-N Do not install salt-minion
|
||||||
|
@ -156,6 +158,7 @@ EOT
|
||||||
# Handle command line arguments
|
# Handle command line arguments
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
TEMP_CONFIG_DIR="null"
|
TEMP_CONFIG_DIR="null"
|
||||||
|
TEMP_KEYS_DIR="null"
|
||||||
INSTALL_MASTER=$BS_FALSE
|
INSTALL_MASTER=$BS_FALSE
|
||||||
INSTALL_SYNDIC=$BS_FALSE
|
INSTALL_SYNDIC=$BS_FALSE
|
||||||
INSTALL_MINION=$BS_TRUE
|
INSTALL_MINION=$BS_TRUE
|
||||||
|
@ -165,7 +168,7 @@ PIP_ALLOWED=${BS_PIP_ALLOWED:-$BS_FALSE}
|
||||||
SALT_ETC_DIR=${BS_SALT_ETC_DIR:-/etc/salt}
|
SALT_ETC_DIR=${BS_SALT_ETC_DIR:-/etc/salt}
|
||||||
FORCE_OVERWRITE=${BS_FORCE_OVERWRITE:-$BS_FALSE}
|
FORCE_OVERWRITE=${BS_FORCE_OVERWRITE:-$BS_FALSE}
|
||||||
|
|
||||||
while getopts ":hvnDc:MSNCP" opt
|
while getopts ":hvnDc:k:MSNCP" opt
|
||||||
do
|
do
|
||||||
case "${opt}" in
|
case "${opt}" in
|
||||||
|
|
||||||
|
@ -181,6 +184,13 @@ do
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
k ) TEMP_KEYS_DIR="$OPTARG"
|
||||||
|
# If the configuration directory does not exist, error out
|
||||||
|
if [ ! -d "$TEMP_KEYS_DIR" ]; then
|
||||||
|
echoerror "The pre-seed keys directory ${TEMP_KEYS_DIR} does not exist."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
M ) INSTALL_MASTER=$BS_TRUE ;;
|
M ) INSTALL_MASTER=$BS_TRUE ;;
|
||||||
S ) INSTALL_SYNDIC=$BS_TRUE ;;
|
S ) INSTALL_SYNDIC=$BS_TRUE ;;
|
||||||
N ) INSTALL_MINION=$BS_FALSE ;;
|
N ) INSTALL_MINION=$BS_FALSE ;;
|
||||||
|
@ -818,11 +828,11 @@ copyfile() {
|
||||||
if [ ! -f "$dfile" ]; then
|
if [ ! -f "$dfile" ]; then
|
||||||
# The destination file does not exist, copy
|
# The destination file does not exist, copy
|
||||||
echodebug "Copying $sfile to $dfile"
|
echodebug "Copying $sfile to $dfile"
|
||||||
cp "$sfile" "$dfile"
|
cp "$sfile" "$dfile" || return 1
|
||||||
elif [ -f "$dfile" ] && [ $overwrite -eq $BS_TRUE ]; then
|
elif [ -f "$dfile" ] && [ $overwrite -eq $BS_TRUE ]; then
|
||||||
# The destination exist and we're overwriting
|
# The destination exist and we're overwriting
|
||||||
echodebug "Overriding $dfile with $sfile"
|
echodebug "Overriding $dfile with $sfile"
|
||||||
cp -f "$sfile" "$dfile"
|
cp -f "$sfile" "$dfile" || return 2
|
||||||
elif [ -f "$dfile" ] && [ $overwrite -ne $BS_TRUE ]; then
|
elif [ -f "$dfile" ] && [ $overwrite -ne $BS_TRUE ]; then
|
||||||
echodebug "Not overriding $dfile with $sfile"
|
echodebug "Not overriding $dfile with $sfile"
|
||||||
fi
|
fi
|
||||||
|
@ -830,6 +840,46 @@ copyfile() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#--- FUNCTION ----------------------------------------------------------------
|
||||||
|
# NAME: movefile
|
||||||
|
# DESCRIPTION: Simple function to move files. Overrides if asked.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
movefile() {
|
||||||
|
overwrite=$FORCE_OVERWRITE
|
||||||
|
if [ $# -eq 2 ]; then
|
||||||
|
sfile=$1
|
||||||
|
dfile=$2
|
||||||
|
elif [ $# -eq 3 ]; then
|
||||||
|
sfile=$1
|
||||||
|
dfile=$2
|
||||||
|
overwrite=$3
|
||||||
|
else
|
||||||
|
echoerror "Wrong number of arguments for movefile()"
|
||||||
|
echoinfo "USAGE: movefile <source> <dest> OR movefile <source> <dest> <overwrite>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Does the source file exist?
|
||||||
|
if [ ! -f "$sfile" ]; then
|
||||||
|
echowarn "$sfile does not exist!"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$dfile" ]; then
|
||||||
|
# The destination file does not exist, copy
|
||||||
|
echodebug "Moving $sfile to $dfile"
|
||||||
|
mv "$sfile" "$dfile" || return 1
|
||||||
|
elif [ -f "$dfile" ] && [ $overwrite -eq $BS_TRUE ]; then
|
||||||
|
# The destination exist and we're overwriting
|
||||||
|
echodebug "Overriding $dfile with $sfile"
|
||||||
|
mv -f "$sfile" "$dfile" || return 1
|
||||||
|
elif [ -f "$dfile" ] && [ $overwrite -ne $BS_TRUE ]; then
|
||||||
|
echodebug "Not overriding $dfile with $sfile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# Distribution install functions
|
# Distribution install functions
|
||||||
|
@ -845,7 +895,7 @@ copyfile() {
|
||||||
# 6. install_<distro>_deps
|
# 6. install_<distro>_deps
|
||||||
#
|
#
|
||||||
# Optionally, define a salt configuration function, which will be called if
|
# Optionally, define a salt configuration function, which will be called if
|
||||||
# the -c|config-dir option is passed. One of:
|
# the -c (config-dir) option is passed. One of:
|
||||||
# 1. config_<distro>_<major_version>_<install_type>_salt
|
# 1. config_<distro>_<major_version>_<install_type>_salt
|
||||||
# 2. config_<distro>_<major_version>_<minor_version>_<install_type>_salt
|
# 2. config_<distro>_<major_version>_<minor_version>_<install_type>_salt
|
||||||
# 3. config_<distro>_<major_version>_salt
|
# 3. config_<distro>_<major_version>_salt
|
||||||
|
@ -854,6 +904,16 @@ copyfile() {
|
||||||
# 6. config_<distro>_salt
|
# 6. config_<distro>_salt
|
||||||
# 7. config_salt [THIS ONE IS ALREADY DEFINED AS THE DEFAULT]
|
# 7. config_salt [THIS ONE IS ALREADY DEFINED AS THE DEFAULT]
|
||||||
#
|
#
|
||||||
|
# Optionally, define a salt master pre-seed function, which will be called if
|
||||||
|
# the -k (pre-seed master keys) option is passed. One of:
|
||||||
|
# 1. pressed_<distro>_<major_version>_<install_type>_master
|
||||||
|
# 2. pressed_<distro>_<major_version>_<minor_version>_<install_type>_master
|
||||||
|
# 3. pressed_<distro>_<major_version>_master
|
||||||
|
# 4 pressed_<distro>_<major_version>_<minor_version>_master
|
||||||
|
# 5. pressed_<distro>_<install_type>_master
|
||||||
|
# 6. pressed_<distro>_master
|
||||||
|
# 7. pressed_master [THIS ONE IS ALREADY DEFINED AS THE DEFAULT]
|
||||||
|
#
|
||||||
# To install salt, which, of course, is required, one of:
|
# To install salt, which, of course, is required, one of:
|
||||||
# 1. install_<distro>_<major_version>_<install_type>
|
# 1. install_<distro>_<major_version>_<install_type>
|
||||||
# 2. install_<distro>_<major_version>_<minor_version>_<install_type>
|
# 2. install_<distro>_<major_version>_<minor_version>_<install_type>
|
||||||
|
@ -2392,6 +2452,34 @@ config_salt() {
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# Default salt master minion keys pre-seed function. Matches ANY distribution
|
||||||
|
# as long as the -k option is passed.
|
||||||
|
#
|
||||||
|
preseed_master() {
|
||||||
|
# Create the PKI directory
|
||||||
|
[ -d $PKI_DIR/minions ] || mkdir -p $PKI_DIR/minions && chmod 700 $PKI_DIR/minions || return 1
|
||||||
|
|
||||||
|
for keyfile in $(ls $TEMP_KEYS_DIR); do
|
||||||
|
src_keyfile="${TEMP_KEYS_DIR}/${keyfile}"
|
||||||
|
dst_keyfile="${PKI_DIR}/minions/${keyfile}"
|
||||||
|
|
||||||
|
# If it's not a file, skip to the next
|
||||||
|
[ ! -f $keyfile_path ] && continue
|
||||||
|
|
||||||
|
movefile "$src_keyfile" "$dst_keyfile" || return 1
|
||||||
|
chmod 664 $dst_keyfile || return 1
|
||||||
|
done
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
#
|
||||||
|
# Ended Default Salt Master Pre-Seed minion keys function
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# This function checks if all of the installed daemons are running or not.
|
# This function checks if all of the installed daemons are running or not.
|
||||||
|
@ -2459,6 +2547,27 @@ if [ "$TEMP_CONFIG_DIR" != "null" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Let's get the pre-seed master function
|
||||||
|
PRESEED_MASTER_FUNC="null"
|
||||||
|
if [ "$TEMP_CONFIG_DIR" != "null" ]; then
|
||||||
|
|
||||||
|
PRESEED_FUNC_NAMES="preseed_${DISTRO_NAME_L}${PREFIXED_DISTRO_MAJOR_VERSION}_${ITYPE}_master"
|
||||||
|
PRESEED_FUNC_NAMES="$PRESEED_FUNC_NAMES preseed_${DISTRO_NAME_L}${PREFIXED_DISTRO_MAJOR_VERSION}${PREFIXED_DISTRO_MINOR_VERSION}_${ITYPE}_master"
|
||||||
|
PRESEED_FUNC_NAMES="$PRESEED_FUNC_NAMES preseed_${DISTRO_NAME_L}${PREFIXED_DISTRO_MAJOR_VERSION}_master"
|
||||||
|
PRESEED_FUNC_NAMES="$PRESEED_FUNC_NAMES preseed_${DISTRO_NAME_L}${PREFIXED_DISTRO_MAJOR_VERSION}${PREFIXED_DISTRO_MINOR_VERSION}_master"
|
||||||
|
PRESEED_FUNC_NAMES="$PRESEED_FUNC_NAMES preseed_${DISTRO_NAME_L}_${ITYPE}_master"
|
||||||
|
PRESEED_FUNC_NAMES="$PRESEED_FUNC_NAMES preseed_${DISTRO_NAME_L}_master"
|
||||||
|
PRESEED_FUNC_NAMES="$PRESEED_FUNC_NAMES preseed_master"
|
||||||
|
|
||||||
|
for FUNC_NAME in $(__strip_duplicates $PRESEED_FUNC_NAMES); do
|
||||||
|
if __function_defined $FUNC_NAME; then
|
||||||
|
PRESEED_MASTER_FUNC=$FUNC_NAME
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Let's get the install function
|
# Let's get the install function
|
||||||
INSTALL_FUNC_NAMES="install_${DISTRO_NAME_L}${PREFIXED_DISTRO_MAJOR_VERSION}_${ITYPE}"
|
INSTALL_FUNC_NAMES="install_${DISTRO_NAME_L}${PREFIXED_DISTRO_MAJOR_VERSION}_${ITYPE}"
|
||||||
INSTALL_FUNC_NAMES="$INSTALL_FUNC_NAMES install_${DISTRO_NAME_L}${PREFIXED_DISTRO_MAJOR_VERSION}${PREFIXED_DISTRO_MINOR_VERSION}_${ITYPE}"
|
INSTALL_FUNC_NAMES="$INSTALL_FUNC_NAMES install_${DISTRO_NAME_L}${PREFIXED_DISTRO_MAJOR_VERSION}${PREFIXED_DISTRO_MINOR_VERSION}_${ITYPE}"
|
||||||
|
@ -2561,6 +2670,17 @@ if [ "$TEMP_CONFIG_DIR" != "null" ] && [ "$CONFIG_SALT_FUNC" != "null" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Pre-Seed master keys
|
||||||
|
if [ "$TEMP_KEYS_DIR" != "null" ] && [ "$PRESEED_MASTER_FUNC" != "null" ]; then
|
||||||
|
echoinfo "Running ${PRESEED_MASTER_FUNC}()"
|
||||||
|
$PRESEED_MASTER_FUNC
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echoerror "Failed to run ${PRESEED_MASTER_FUNC}()!!!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Install Salt
|
# Install Salt
|
||||||
if [ $CONFIG_ONLY -eq $BS_FALSE ]; then
|
if [ $CONFIG_ONLY -eq $BS_FALSE ]; then
|
||||||
# Only execute function is not in config mode only
|
# Only execute function is not in config mode only
|
||||||
|
|
Loading…
Add table
Reference in a new issue