SaltStack is a python-based configuration management program which is optimized for the automation of configuration files, deployments and anything else under the software-defined datacenter topic. In this guide, you will learn how to get started with SaltStack, adding your first nodes and writing your first formula.
Requirements
- Vultr instance running Ubuntu 17.04 ( master )
- Vultr instance running Ubuntu 17.04 ( minion )
Terminology
SaltStack uses a few keywords which represent a particular device or configuration, as explained below:
Master
This is the master instance which connects to all servers added to your SaltStack “cluster”, thus also running any commands / communication to your servers.
Minion
The servers which are added to your SaltStack are called minions. Any actions are either performed on one, a group, or all of your minions.
Formula
A formula represents a file or a set of files which introduces the minions which commands that should be performed. This can be the installation of a single application such as nginx
or rolling out configuration files, etc.
Pillar
A pillar is a file which stores information related to a group of minions or a single minion. As an example, you would use this sort of file for storing the “Virtual-Hosts” for Nginx for a particular minion.
Server setup
Master
First, we will start with setting up the master for our SaltStack cluster:
apt-get update
apt-get dist-upgrade
apt-get install salt-master
By default, the SaltStack master is not listening on any interfaces, as the master is usually communicating with the minions over the public internet though. We have to make a little change in the configuration file which can be found at /etc/salt/master
:
# The address of the interface to bind to:
interface: 0.0.0.0
After the changes have been written to the file, restart the master service:
service salt-master restart
Minion
We can now proceed with adding our first minion. Go straight ahead and install the required packages:
apt-get update
apt-get dist-upgrade
apt-get install salt-minion
Next, we need to make another little change in the minion’s SaltStack configuration which can be found at /etc/salt/minion
:
# Set the location of the salt master server. If the master server cannot be
# resolved, then the minion will fail to start.
master: <master_server_ip>
Replace <master_server_ip>
with the IP address of your master server as setup earlier. Ideally, you would set up a DNS record for this though, in order to make changing the master server easier.
Afterwards, we have to restart the minion service for the changes to become active:
service salt-minion restart
SaltStack master operations
We now have a working master and minion set up, so we can directly go ahead and work with a small set of the SaltStack commands on the master.
Showing all minions
# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
Rejected Keys:
Note: We have already told the minion to which master server it should connect. Therefore, if you have followed this guide, you would already see the minion under the Unaccepted Keys:
section.
Accepting an unaccepted minion
# salt-key -a <minion_id>
Accepting all unaccepted minions
# salt-key -A
Removing a minion
# salt-key -d <minion_id>
Note: <minion_id>
usually represents the UNIX hostname of your minion(s) and is stored in the /etc/salt/minion_id
file on the minion(s).
Creating your first formula
After adding our minion to the master, we can continue with writing our first formula. Initially, we have to create the folder that stores our formulas:
mkdir -p /srv/salt/
Create the folder for our first formula:
mkdir -p /srv/salt/nginx
Basically, any instructions for a formula are stored in the init.sls
file, for example, /srv/salt/nginx/init.sls
. As there is an immense amount of operations that can be performed through a formula, we will write a small formula which installs Nginx:
nginx:
pkg:
- installed
Running your first formula
After writing into the init.sls
file as explained above, we can go ahead and run it:
salt '*' state.sls nginx
Note: nginx
represents the name of the folder we have previously created.
Conclusion
SaltStack is a very good software for automating any sort of configuration files, service deployments, initial server roll-outs and similar. Because of the fact that SaltStack is based on Python, you can easily add your own modules too, if you are fluent with the language. Happy automating!
Want to contribute?
You could earn up to $300 by adding new articles
Suggest an update
Request an article