List of components used in this project:
| Component | Description | Cf. |
|---|---|---|
| CentOS 7 | Operating system | https://centos.org |
| SaltStack | Infrastructure orchestration | https://saltstack.com |
| Docker | Container Management | https://docker.com |
The shell script ↴ source_me.sh adds the tool-chain in this repository to your shell environment:
source source_me.sh
↴ salt-vm-instance bootstraps VM instance including salt-minion, cf. docs/bootstrap.md:
# create a VM instance with salt-minion installed
salt-vm-instance $instance
# Login to the VM instance and check the version
vm ex $instance -r -- salt-minion --versionCreate/configure the salt-master VM instance
# create the Salt master VM instance (salt-minion, and repository installed)
salt-vm-instance $SALT_MASTER
# install the Salt master
vm ex $SALT_MASTER -r '
yum install -y salt-master
cp $SALT_EXAMPLE_PATH/etc/salt/master /etc/salt
systemctl enable --now salt-master
'Alternatively follow docs/docker_salt-master.md to deploy the Salt master in a Docker container.
Accept all minion keys on the Salt master:
# accept the new salt-minion on the server
vm ex $SALT_MASTER -r -- salt-key -A -y
Common [salt-key][salt-key] commands:
salt-key -A -y # accept all (unaccpeted) Salt minions
salt-key -L # list all keys
salt-key -d <minion> # remove a minion key
salt-key -a <minion> # add a single minion keyCreate a VM instance ↴ salt-vm-instance, and configure salt-minion to connect with the $SALT_MASTER:
instance=lxdev01 # i.e.
# create a VM instance (including an installed salt-minion)
salt-vm-instance $instance
# configure/start the salt-minion
vm ex $instance -r "
echo master: $(vm ip $SALT_MASTER) > /etc/salt/minion
systemctl enable --now salt-minion
"Alternatively use ↴ salt-vm-instance option --master:
salt-vm-instance -m $SALT_MASTER $instanceMinion configuration and operations artefacts, cf. Salt Minion Configuration:
/etc/salt/minion # Configuration file
/etc/salt/minion_id # Minion unique identifier
/etc/salt/pki/minion/minion.* # Minion key
salt-minion -l debug # Start minion in foreground for debugging
/var/log/salt/minion # log filesSalt configuration and state files:
| File(s) | Description |
|---|---|
| srv/salt/ | The state tree includes all SLS (SaLt State file) representing the state in which all nodes should be |
| etc/salt/master | Salt master configuration (file_roots → /srv/salt defines to location of the state tree) |
| srv/salt/top.sls | Maps nodes to SLS configuration files (cf. top file) |
Sync the state tree with the salt-master VM instance (note that you need to re-sync after changes to the state tree):
vm sy $SALT_MASTER -r $SALT_STATE_TREE :/srv |:Methods to configure a node using Salt state files:
# check if the node responds to the salt-master
vm ex $SALT_MASTER -r -- salt -E $instance test.ping
# ask the salt-master to configure a node
vm ex $SALT_MASTER -r -- salt -E $instance state.apply $sls
# ask a node to apply a configuration
vm ex $instance -r -- salt-call state.apply $slsProceed by installing more services:
- docs/docker.md - Install the Docker CE runtime
- docs/pxesrv.md - Install an PXESrv PXE boot server
- docs/docker_prometheus.md - Prometheus server in a Docker container
- docs/docker_registry.md - Docker Registry in a Docker container
- docs/docker_swarm.md - Docker Swarm cluster