SaltStack Master v2018.3.2
Dockerfile to build a SaltStack Master image for the Docker opensource container platform.
SaltStack Master is set up in the Docker image using the install from git source method as documented in the the official bootstrap documentation.
For other methods to install SaltStack please refer to the Official SaltStack Installation Guide.
Table of Contents
Installation
Automated builds of the image are available on Dockerhub and is the recommended method of installation.
docker pull cdalvaro/saltstack-master:2018.3.2
You can also pull the latest tag which is built from the repository HEAD
docker pull cdalvaro/saltstack-master:latest
Alternatively you can build the image locally.
docker build -t cdalvaro/saltstack-master github.com/cdalvaro/saltstack-master
Quick Start
The quickest way to get started is using docker-compose.
wget https://raw.githubusercontent.com/cdalvaro/saltstack-master/master/docker-compose.yml
Start SaltStack master using:
docker-compose up --detach
Alternatively, you can manually launch the saltstack-master container:
docker run --name salt_master --detach \
--publish 4505:4505/tcp --publish 4506:4506/tcp \
--env 'SALT_LOG_LEVEL=info' \
--read-only --volume ./srv/:/srv/ \
cdalvaro/saltstack-master:2018.3.2
Configuration
Custom Recipes
This image does not require storing data out of the container.
But it is necessary to mount the /srv/ volume ir order to provide your custom recipes.
Minion Keys
Minion keys can be added automatically on startup to SaltStack master by mounting the volume /etc/salt-docker/keys and copying the minion keys inside keys/minions/ directory:
mkdir -p keys/minions
cp -v /etc/salt/pki/minion/minion.pub keys/minions/minion1
docker run --name salt_master -d \
--publish 4505:4505/tcp --publish 4506:4506/tcp \
--env 'SALT_LOG_LEVEL=info' \
--read-only --volume ./srv/:/srv/ \
--volume ./keys/:/etc/salt-docker/keys/ \
cdalvaro/saltstack-master:2018.3.2
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.
Below is the list of available options that can be used to customize your SaltStack master installation.
| Parameter | Description |
|---|---|
SALT_LOG_LEVEL |
The level of messages to send to the console. 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' |
Any parameter not listed in the above table and available in the following link, can be set by creating the directory confs and adding into it a .conf file with the desired parameters:
mkdir confs
cat > confs/ports.conf << EOF
# The tcp port used by the publisher:
publish_port: 3505
# The port used by the communication interface.
ret_port: 3506
EOF
docker run --name salt_master -d \
--publish 3505:3505/tcp --publish 3506:3506/tcp \
--env 'SALT_LOG_LEVEL=info' \
--read-only --volume ./srv/:/srv/ \
--volume ./confs/:/etc/salt-docker/confs/ \
cdalvaro/saltstack-master:2018.3.2
Usage
To test which salt minions are listening the following command can be executed from the master service:
docker-compose exec master salt '*' test.ping
Then, you can apply salt states to your minions:
docker-compose exec master salt '*' state.apply
Shell Access
For debugging and maintenance purposes you may want access the container shell. If you are using docker version 1.3.0 or higher you can access a running container shell using docker exec command.
docker exec -it salt_master bash