Getting Started With SaltStack On Ubuntu

SaltStack is an opensource project (github link) that makes it much easier to manage your infrastructure at scale. For example, to update all of your servers, you could log into each one and enter the relevant command. This would be extremely tedious and take a long time as soon as you start to manage 10+ servers. With Saltstack, one can achieve this by executing a single command on a single node which we call the salt master. Best of all, it is highly parallelized with nodes acting independently rather than one after each other (serially), so operations take seconds instead of hours.

There are similar projects, such as Puppet and Chef which you can learn about here and here respectively, but I chose Salt because looking through the tutorials, Saltstack appeared to be a lot simpler/quicker to setup. I believe that those other two projects have the market share if you were looking to improve your job prospects.

Installing The Salt Master

Salt is made up of two parts, the minions that are "controlled" and the master that controls them. You only need one master, and it can control any number of minions. Because this server will have control over your other servers, I recommend being very careful with its security and configuring it with two factor authentication.

Installing The Minon

sudo apt-get install salt-minion -y  
sudo vim /etc/salt/minion  

Open sudo vim /etc/salt/minion and change:

#master: salt



Now restart the service for the changes to take effect.

sudo service salt-minion restart  

Accepting Minions

After your minions have been configured with the masters hostname/IP, you need to accept their keys.

List the keys with the following command:

sudo salt-key -L  

Acept a specific key with the following command:

sudo salt-key -a $DOMAIN  

If you're lazy like me, then you can accept all the keys with the following command instead:


Example Commands

Update all minions

sudo salt '*' pkg.upgrade  




Stuart is a software developer with a passion for Linux and open source projects.

comments powered by Disqus