@@ -12,6 +12,8 @@ Please refer to the SaltStack [Release Notes](https://docs.saltstack.com/en/deve
|
|||||||
- Expose `/home/salt/data/logs`
|
- Expose `/home/salt/data/logs`
|
||||||
- Run `salt-master` as `salt` user
|
- Run `salt-master` as `salt` user
|
||||||
- Add support for setting timezone
|
- Add support for setting timezone
|
||||||
|
- Add logrotate support
|
||||||
|
- Add supervisor support
|
||||||
|
|
||||||
**2018.3.2**
|
**2018.3.2**
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,8 @@ RUN apt-get update
|
|||||||
RUN apt-get install --yes --quiet --no-install-recommends \
|
RUN apt-get install --yes --quiet --no-install-recommends \
|
||||||
sudo ca-certificates wget locales pkg-config openssh-client \
|
sudo ca-certificates wget locales pkg-config openssh-client \
|
||||||
python${PYTHON_VERSION} python${PYTHON_VERSION}-dev \
|
python${PYTHON_VERSION} python${PYTHON_VERSION}-dev \
|
||||||
python3-pip python3-setuptools python3-wheel gettext-base
|
python3-pip python3-setuptools python3-wheel gettext-base \
|
||||||
|
supervisor logrotate
|
||||||
|
|
||||||
# Configure locales
|
# Configure locales
|
||||||
RUN update-locale LANG=C.UTF-8 LC_MESSAGES=POSIX \
|
RUN update-locale LANG=C.UTF-8 LC_MESSAGES=POSIX \
|
||||||
|
|||||||
3
Makefile
3
Makefile
@@ -22,7 +22,8 @@ quickstart:
|
|||||||
--publish=4505:4505/tcp --publish=4506:4506/tcp \
|
--publish=4505:4505/tcp --publish=4506:4506/tcp \
|
||||||
--env "USERMAP_UID=$(shell id -u)" --env "USERMAP_GID=$(shell id -g)" \
|
--env "USERMAP_UID=$(shell id -u)" --env "USERMAP_GID=$(shell id -g)" \
|
||||||
--env SALT_LOG_LEVEL=info \
|
--env SALT_LOG_LEVEL=info \
|
||||||
--read-only --volume $(shell pwd)/srv/:/home/salt/data/srv/ \
|
--volume $(shell pwd)/srv/:/home/salt/data/srv/ \
|
||||||
|
--volume $(shell pwd)/logs/:/home/salt/data/logs/ \
|
||||||
cdalvaro/saltstack-master:latest
|
cdalvaro/saltstack-master:latest
|
||||||
@echo "Type 'make logs' for the logs"
|
@echo "Type 'make logs' for the logs"
|
||||||
|
|
||||||
|
|||||||
19
README.md
19
README.md
@@ -19,6 +19,7 @@ For other methods to install SaltStack please refer to the [Official SaltStack I
|
|||||||
- [Git Fileserver](#git-fileserver)
|
- [Git Fileserver](#git-fileserver)
|
||||||
- [GitPython](#gitpython)
|
- [GitPython](#gitpython)
|
||||||
- [PyGit2](#pygit2)
|
- [PyGit2](#pygit2)
|
||||||
|
- [Logs](#logs)
|
||||||
- [Available Configuration Parameters](#available-configuration-parameters)
|
- [Available Configuration Parameters](#available-configuration-parameters)
|
||||||
- [Usage](#usage)
|
- [Usage](#usage)
|
||||||
- [Shell Access](#shell-access)
|
- [Shell Access](#shell-access)
|
||||||
@@ -171,6 +172,22 @@ _pygit2.GitError: Failed to authenticate SSH session: Unable to send userauth-pu
|
|||||||
|
|
||||||
look if your private key hash empty lines at the bottom of the file and suppress them for solving the error.
|
look if your private key hash empty lines at the bottom of the file and suppress them for solving the error.
|
||||||
|
|
||||||
|
### Logs
|
||||||
|
|
||||||
|
Salt logs are accessible by mounting the volume `/home/salt/data/logs/`.
|
||||||
|
|
||||||
|
Inside that directory you could find `supervisor/` logs and `salt/` logs:
|
||||||
|
|
||||||
|
docker run --name salt_master --detach \
|
||||||
|
--publish 4505:4505/tcp --publish 4506:4506/tcp \
|
||||||
|
--env 'SALT_LOG_LEVEL=info' \
|
||||||
|
--volume $(pwd)/recipes/:/home/salt/data/srv/ \
|
||||||
|
--volume $(pwd)/keys/:/home/salt/data/keys/ \
|
||||||
|
--volume $(pwd)/logs/:/home/salt/data/logs/ \
|
||||||
|
cdalvaro/saltstack-master:2018.3.3
|
||||||
|
|
||||||
|
Check [Available Configuration Parameters](#available-configuration-parameters) section for configuring logrotate.
|
||||||
|
|
||||||
### Available Configuration Parameters
|
### Available Configuration Parameters
|
||||||
|
|
||||||
Please refer the docker run command options for the `--env-file` flag where you can specify all required environment variables in a single file. This will save you from writing a potentially long docker run command. Alternatively you can use docker-compose.
|
Please refer the docker run command options for the `--env-file` flag where you can specify all required environment variables in a single file. This will save you from writing a potentially long docker run command. Alternatively you can use docker-compose.
|
||||||
@@ -182,6 +199,8 @@ Below is the list of available options that can be used to customize your SaltSt
|
|||||||
| `DEBUG` | Set this to `true` to enable entrypoint debugging. |
|
| `DEBUG` | Set this to `true` to enable entrypoint debugging. |
|
||||||
| `TIMEZONE` | Set the container timezone. Defaults to `UTC`. Values are expected to be in Canonical format. Example: `Europe/Madrid`. See the list of [acceptable values](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). |
|
| `TIMEZONE` | Set the container timezone. Defaults to `UTC`. Values are expected to be in Canonical format. Example: `Europe/Madrid`. See the list of [acceptable values](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). |
|
||||||
| `SALT_LOG_LEVEL` | The level of messages to send to the console. One of 'garbage', 'trace', 'debug', info', 'warning', 'error', 'critical'. Default: `warning` |
|
| `SALT_LOG_LEVEL` | The level of messages to send to the console. One of 'garbage', 'trace', 'debug', info', 'warning', 'error', 'critical'. Default: `warning` |
|
||||||
|
| `SALT_LOG_ROTATE_FREQUENCY` | Logrotate frequency for salt logs. Available options are 'daily', 'weekly', 'monthly', and 'yearly'. Default: `weekly` |
|
||||||
|
| `SALT_LOG_ROTATE_RETENTION` | Keep x files before deleting old log files. Defaults: `52` |
|
||||||
| `SALT_LEVEL_LOGFILE` | The level of messages to send to the log file. One of 'garbage', 'trace', 'debug', info', 'warning', 'error', 'critical'. Default: `warning` |
|
| `SALT_LEVEL_LOGFILE` | The level of messages to send to the log file. One of 'garbage', 'trace', 'debug', info', 'warning', 'error', 'critical'. Default: `warning` |
|
||||||
| `SALT_MASTER_SIGN_PUBKEY` | Sign the master auth-replies with a cryptographic signature of the master's public key. Possible values: 'True' or 'False'. Default: `False` |
|
| `SALT_MASTER_SIGN_PUBKEY` | Sign the master auth-replies with a cryptographic signature of the master's public key. Possible values: 'True' or 'False'. Default: `False` |
|
||||||
| `SALT_MASTER_USE_PUBKEY_SIGNATURE` | Instead of computing the signature for each auth-reply, use a pre-calculated signature. This option requires `SALT_MASTER_SIGN_PUBKEY` set to 'True'. Possible values: 'True' or 'False'. Default: `True` |
|
| `SALT_MASTER_USE_PUBKEY_SIGNATURE` | Instead of computing the signature for each auth-reply, use a pre-calculated signature. This option requires `SALT_MASTER_SIGN_PUBKEY` set to 'True'. Possible values: 'True' or 'False'. Default: `True` |
|
||||||
|
|||||||
@@ -71,3 +71,30 @@ sed -i -e "s|^[# ]*StrictHostKeyChecking.*$| StrictHostKeyChecking no|" /etc/
|
|||||||
echo " UserKnownHostsFile /dev/null" >> /etc/ssh/ssh_config
|
echo " UserKnownHostsFile /dev/null" >> /etc/ssh/ssh_config
|
||||||
echo " LogLevel ERROR" >> /etc/ssh/ssh_config
|
echo " LogLevel ERROR" >> /etc/ssh/ssh_config
|
||||||
echo "# IdentityFile salt_ssh_key" >> /etc/ssh/ssh_config
|
echo "# IdentityFile salt_ssh_key" >> /etc/ssh/ssh_config
|
||||||
|
|
||||||
|
# Configure logrotate
|
||||||
|
echo "Configuring logrotate ..."
|
||||||
|
|
||||||
|
# move supervisord.log file to ${SALT_LOGS_DIR}/supervisor/
|
||||||
|
sed -i "s|^[#]*logfile=.*|logfile=${SALT_LOGS_DIR}/supervisor/supervisord.log ;|" /etc/supervisor/supervisord.conf
|
||||||
|
|
||||||
|
# fix "unknown group 'syslog'" error preventing logrotate from functioning
|
||||||
|
sed -i "s|^su root syslog$|su root root|" /etc/logrotate.conf
|
||||||
|
|
||||||
|
# Configure supervisor
|
||||||
|
echo "Configuring supervisor ..."
|
||||||
|
|
||||||
|
# configure supervisord to start unicorn
|
||||||
|
cat > /etc/supervisor/conf.d/salt-master.conf <<EOF
|
||||||
|
[program:salt-master]
|
||||||
|
priority=5
|
||||||
|
directory=${SALT_HOME}
|
||||||
|
environment=HOME=${SALT_HOME}
|
||||||
|
command=salt-master
|
||||||
|
user=${SALT_USER}
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
stopsignal=QUIT
|
||||||
|
stdout_logfile=${SALT_LOGS_DIR}/supervisor/%(program_name)s.log
|
||||||
|
stderr_logfile=${SALT_LOGS_DIR}/supervisor/%(program_name)s.log
|
||||||
|
EOF
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ master_use_pubkey_signature: {{SALT_MASTER_USE_PUBKEY_SIGNATURE}}
|
|||||||
##### Salt-SSH Configuration #####
|
##### Salt-SSH Configuration #####
|
||||||
##########################################
|
##########################################
|
||||||
# The log file of the salt-ssh command:
|
# The log file of the salt-ssh command:
|
||||||
ssh_log_file: {{SALT_LOGS_DIR}}/ssh
|
ssh_log_file: {{SALT_LOGS_DIR}}/salt/ssh
|
||||||
|
|
||||||
|
|
||||||
##### File Server settings #####
|
##### File Server settings #####
|
||||||
@@ -94,14 +94,14 @@ pillar_roots:
|
|||||||
# to receive commands from.
|
# to receive commands from.
|
||||||
|
|
||||||
# The log file of the salt-syndic daemon:
|
# The log file of the salt-syndic daemon:
|
||||||
syndic_log_file: {{SALT_LOGS_DIR}}/syndic
|
syndic_log_file: {{SALT_LOGS_DIR}}/salt/syndic
|
||||||
|
|
||||||
|
|
||||||
##### Logging settings #####
|
##### Logging settings #####
|
||||||
##########################################
|
##########################################
|
||||||
# The location of the master log file
|
# The location of the master log file
|
||||||
log_file: {{SALT_LOGS_DIR}}/master
|
log_file: {{SALT_LOGS_DIR}}/salt/master
|
||||||
key_logfile: {{SALT_LOGS_DIR}}/key
|
key_logfile: {{SALT_LOGS_DIR}}/salt/key
|
||||||
|
|
||||||
# The level of messages to send to the console.
|
# The level of messages to send to the console.
|
||||||
# One of 'garbage', 'trace', 'debug', info', 'warning', 'error', 'critical'.
|
# One of 'garbage', 'trace', 'debug', info', 'warning', 'error', 'critical'.
|
||||||
|
|||||||
@@ -3,6 +3,9 @@
|
|||||||
DEBUG=${DEBUG:-false}
|
DEBUG=${DEBUG:-false}
|
||||||
TIMEZONE=${TIMEZONE:-UTC}
|
TIMEZONE=${TIMEZONE:-UTC}
|
||||||
|
|
||||||
|
SALT_LOG_ROTATE_FREQUENCY=${SALT_LOG_ROTATE_FREQUENCY:-weekly}
|
||||||
|
SALT_LOG_ROTATE_RETENTION=${SALT_LOG_ROTATE_RETENTION:-52}
|
||||||
|
|
||||||
# https://docs.saltstack.com/en/latest/ref/configuration/master.html
|
# https://docs.saltstack.com/en/latest/ref/configuration/master.html
|
||||||
|
|
||||||
##### Logging settings #####
|
##### Logging settings #####
|
||||||
|
|||||||
@@ -171,22 +171,58 @@ function initialize_datadir()
|
|||||||
[[ -d /srv ]] && [[ ! -L /srv ]] && rm -rf /srv
|
[[ -d /srv ]] && [[ ! -L /srv ]] && rm -rf /srv
|
||||||
ln -sfnv ${SALT_BASE_DIR} /srv
|
ln -sfnv ${SALT_BASE_DIR} /srv
|
||||||
|
|
||||||
# Set Slat root permissions
|
# Set Salt root permissions
|
||||||
chown -R ${SALT_USER} ${SALT_ROOT_DIR}
|
chown -R ${SALT_USER}: ${SALT_ROOT_DIR}
|
||||||
|
|
||||||
# Set Salt run permissions
|
# Set Salt run permissions
|
||||||
mkdir -p /var/run/salt
|
mkdir -p /var/run/salt
|
||||||
chown -R ${SALT_USER} /var/run/salt
|
chown -R ${SALT_USER}: /var/run/salt
|
||||||
|
|
||||||
# Set cache permissions
|
# Set cache permissions
|
||||||
mkdir -p /var/cache/salt/master
|
mkdir -p /var/cache/salt/master
|
||||||
chown -R salt /var/cache/salt
|
chown -R ${SALT_USER}: /var/cache/salt
|
||||||
|
|
||||||
# Logs directory
|
# Logs directory
|
||||||
|
mkdir -p ${SALT_LOGS_DIR}/salt ${SALT_LOGS_DIR}/supervisor
|
||||||
|
chmod -R 0755 ${SALT_LOGS_DIR}/supervisor
|
||||||
|
chown -R root: ${SALT_LOGS_DIR}/supervisor
|
||||||
|
|
||||||
[[ -d /var/log/salt ]] && [[ ! -L /var/log/salt ]] && rm -rf /var/log/salt
|
[[ -d /var/log/salt ]] && [[ ! -L /var/log/salt ]] && rm -rf /var/log/salt
|
||||||
mkdir -p /var/log
|
mkdir -p ${SALT_LOGS_DIR}/salt /var/log
|
||||||
ln -sfnv ${SALT_LOGS_DIR} /var/log/salt
|
ln -sfnv ${SALT_LOGS_DIR}/salt /var/log/salt
|
||||||
chown -R ${SALT_USER} ${SALT_LOGS_DIR}
|
chown -R ${SALT_USER}: ${SALT_LOGS_DIR}/salt
|
||||||
|
}
|
||||||
|
|
||||||
|
# Configures logrotate
|
||||||
|
function configure_logrotate()
|
||||||
|
{
|
||||||
|
echo "Configuring logrotate ..."
|
||||||
|
|
||||||
|
# configure supervisord log rotation
|
||||||
|
cat > /etc/logrotate.d/supervisord <<EOF
|
||||||
|
${SALT_LOGS_DIR}/supervisor/*.log {
|
||||||
|
${SALT_LOG_ROTATE_FREQUENCY}
|
||||||
|
missingok
|
||||||
|
rotate ${SALT_LOG_ROTATE_RETENTION}
|
||||||
|
compress
|
||||||
|
delaycompress
|
||||||
|
notifempty
|
||||||
|
copytruncate
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# configure salt-master log rotation
|
||||||
|
cat > /etc/logrotate.d/salt <<EOF
|
||||||
|
${SALT_LOGS_DIR}/salt/* {
|
||||||
|
${SALT_LOG_ROTATE_FREQUENCY}
|
||||||
|
missingok
|
||||||
|
rotate ${SALT_LOG_ROTATE_RETENTION}
|
||||||
|
compress
|
||||||
|
delaycompress
|
||||||
|
notifempty
|
||||||
|
copytruncate
|
||||||
|
}
|
||||||
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
# Initializes the system
|
# Initializes the system
|
||||||
@@ -194,8 +230,10 @@ function initialize_system()
|
|||||||
{
|
{
|
||||||
map_uidgid
|
map_uidgid
|
||||||
initialize_datadir
|
initialize_datadir
|
||||||
|
configure_logrotate
|
||||||
configure_timezone
|
configure_timezone
|
||||||
configure_salt_master
|
configure_salt_master
|
||||||
setup_salt_keys
|
setup_salt_keys
|
||||||
setup_ssh_keys
|
setup_ssh_keys
|
||||||
|
rm -rf /var/run/supervisor.sock
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ services:
|
|||||||
image: cdalvaro/saltstack-master:2018.3.3
|
image: cdalvaro/saltstack-master:2018.3.3
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- "./srv/:/home/salt/data/srv"
|
- "srv/:/home/salt/data/srv"
|
||||||
|
- "logs/:/home/salt/data/logs"
|
||||||
ports:
|
ports:
|
||||||
- "4505:4505/tcp"
|
- "4505:4505/tcp"
|
||||||
- "4506:4506/tcp"
|
- "4506:4506/tcp"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ case ${1} in
|
|||||||
case ${1} in
|
case ${1} in
|
||||||
app:start)
|
app:start)
|
||||||
echo "Starting salt-master..."
|
echo "Starting salt-master..."
|
||||||
exec sudo -HEu ${SALT_USER} salt-master
|
exec /usr/bin/supervisord -nc /etc/supervisor/supervisord.conf
|
||||||
;;
|
;;
|
||||||
app:gen-signed-keys)
|
app:gen-signed-keys)
|
||||||
shift 1
|
shift 1
|
||||||
|
|||||||
Reference in New Issue
Block a user