Run salt-master as salt user

This commit is contained in:
Carlos Álvaro
2018-11-09 23:44:16 +01:00
parent 13f75f64ea
commit 886c85e1a3
6 changed files with 42 additions and 10 deletions

View File

@@ -40,7 +40,7 @@ WORKDIR ${SALT_BUILD_DIR}
# Install packages
RUN apt-get update
RUN apt-get install --yes --quiet --no-install-recommends \
ca-certificates wget locales pkg-config openssh-client \
sudo ca-certificates wget locales pkg-config openssh-client \
python${PYTHON_VERSION} python${PYTHON_VERSION}-dev \
python3-pip python3-setuptools python3-wheel

13
assets/build/functions.sh Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env bash
set -e
# Execute a command as SALT_USER
function exec_as_salt()
{
if [[ $(whoami) == ${SALT_USER} ]]; then
$@
else
sudo -HEu ${SALT_USER} "$@"
fi
}

View File

@@ -2,6 +2,8 @@
set -e
source ${SALT_BUILD_DIR}/functions.sh
# Install build dependencies
echo "Installing dependencies ..."
BUILD_DEPENDENCIES="gnupg git cmake gcc g++ make \
@@ -10,6 +12,15 @@ BUILD_DEPENDENCIES="gnupg git cmake gcc g++ make \
apt-get install --yes --quiet --no-install-recommends ${BUILD_DEPENDENCIES}
# Create salt user
echo "Creating ${SALT_USER} user ..."
useradd -d ${SALT_HOME} -ms /bin/bash -U -G root,sudo ${SALT_USER}
# Set PATH
exec_as_salt cat >> ${SALT_HOME}/.profile <<EOF
PATH=/usr/local/sbin:/usr/local/bin:\$PATH
EOF
# Compile libssh2
echo "Building libssh2 v${LIBSSH2_VERSION} ..."
wget https://github.com/libssh2/libssh2/archive/libssh2-${LIBSSH2_VERSION}.tar.gz
@@ -36,10 +47,6 @@ pip3 install "pygit2==v${PYGIT2_VERSION}" \
"libnacl==v${LIBNACL_VERSION}" \
"raet==v${RAET_VERSION}"
# Salt user
echo "Creating ${SALT_USER} user ..."
useradd -d ${SALT_HOME} -ms /bin/bash -U -G root,sudo ${SALT_USER}
# Bootstrap script options:
# https://docs.saltstack.com/en/latest/topics/tutorials/salt_bootstrap.html#command-line-options
## -M: install Salt Master by default

View File

@@ -11,10 +11,10 @@ function map_uidgid()
USERMAP_GID=${USERMAP_GID:-${USERMAP_UID:-$USERMAP_ORIG_GID}}
USERMAP_UID=${USERMAP_UID:-$USERMAP_ORIG_UID}
if [[ ${USERMAP_UID} != ${USERMAP_ORIG_UID} ]] || [[ ${USERMAP_GID} != ${USERMAP_ORIG_GID} ]]; then
echo "Mapping UID and GID for ${SALT_USER}:${SALT_USER} to ${USERMAP_UID}:${USERMAP_GID}..."
echo "Mapping UID and GID for ${SALT_USER}:${SALT_USER} to ${USERMAP_UID}:${USERMAP_GID} ..."
groupmod -o -g ${USERMAP_GID} ${SALT_USER}
sed -i -e "s|:${USERMAP_ORIG_UID}:${USERMAP_GID}:|:${USERMAP_UID}:${USERMAP_GID}:|" /etc/passwd
find ${SALT_HOME} -path ${SALT_DATA_DIR}/\* -prune -o -print0 | xargs -0 chown -h ${SALT_USER}:
find ${SALT_HOME} -path ${SALT_DATA_DIR}/\* \( ! -uid ${USERMAP_ORIG_UID} -o ! -gid ${USERMAP_ORIG_GID} \) -print0 | xargs -0 chown -h ${SALT_USER}: ${SALT_HOME}
fi
}
@@ -109,6 +109,7 @@ function configure_salt_master()
# Set env variables
sed -i \
-e "s|^[#]*user:.*$|user: ${SALT_USER}|" \
-e "s|^[#]*log_level:.*$|log_level: ${SALT_LOG_LEVEL}|" \
-e "s|^[#]*log_level_logfile:.*$|log_level_logfile: ${SALT_LEVEL_LOGFILE}|" \
-e "s|^[#]*default_include:.*$|default_include: ${SALT_CONFS_DIR}/*.conf|" \
@@ -143,6 +144,17 @@ function initialize_datadir()
[[ -d /srv ]] && [[ ! -L /srv ]] && rm -rf /srv
ln -sfnv ${SALT_BASE_DIR} /srv
# Set Slat root permissions
chown -R ${SALT_USER} ${SALT_ROOT_DIR}
# Set Salt run permissions
mkdir -p /var/run/salt
chown -R ${SALT_USER} /var/run/salt
# Set cache permissions
mkdir -p /var/cache/salt/master
chown -R salt /var/cache/salt
# Logs directory
[[ -d /var/log/salt ]] && [[ ! -L /var/log/salt ]] && rm -rf /var/log/salt
mkdir -p /var/log

View File

@@ -11,7 +11,7 @@ services:
- "4506:4506/tcp"
environment:
- DEBUG=false
- USERMAP_UID=501
- USERMAP_GID=20
- USERMAP_UID=1000
- USERMAP_GID=1000
- SALT_LOG_LEVEL=info

View File

@@ -13,7 +13,7 @@ case ${1} in
case ${1} in
app:start)
echo "Starting salt-master..."
exec salt-master
exec sudo -HEu ${SALT_USER} salt-master
;;
app:gen-signed-keys)
shift 1