Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Using SaltStack

Introduction to SaltStack

SaltStack is an open-source configuration management and orchestration tool that allows you to manage and automate your infrastructure. It is designed to handle large-scale deployments and can manage thousands of servers simultaneously. SaltStack uses a client-server model where the server is known as the Salt Master and the clients are called Salt Minions.

Installing SaltStack

To begin using SaltStack, you need to install the Salt Master and Salt Minions. Here are the steps to install SaltStack on a Linux system.

# Install Salt Master

sudo apt-get update

sudo apt-get install salt-master

# Install Salt Minion

sudo apt-get update

sudo apt-get install salt-minion

Configuring Salt Master and Minion

After installing SaltStack, you need to configure the Salt Master and Minions to communicate with each other. Edit the configuration files as follows:

# Configure Salt Master (/etc/salt/master)

interface: 0.0.0.0

# Configure Salt Minion (/etc/salt/minion)

master: <master-ip-address>

Starting Salt Services

Once the configuration is done, start the Salt Master and Minion services.

# Start Salt Master

sudo systemctl start salt-master

sudo systemctl enable salt-master

# Start Salt Minion

sudo systemctl start salt-minion

sudo systemctl enable salt-minion

Accepting Minion Keys

The Salt Master needs to accept the keys from the Minions to establish communication securely. Run the following command to list the pending keys and accept them:

# List pending keys

sudo salt-key -L

Accepted Keys:
Denied Keys:
Unaccepted Keys:
minion-id
Rejected Keys:

# Accept all pending keys

sudo salt-key -A

Executing Commands on Minions

Now that the Minions are accepted, you can execute commands on them from the Salt Master. The following example shows how to check the uptime of all Minions:

# Check uptime of all Minions

sudo salt '*' cmd.run 'uptime'

minion-id:
  14:32:01 up 10 days,  2:06,  0 users,  load average: 0.00, 0.01, 0.05

Managing Configuration with States

SaltStack uses state files to define the desired state of your infrastructure. State files are written in YAML format and use the .sls extension. Here is an example of a state file to install and start Apache on a Minion:

# /srv/salt/apache.sls

install_apache:
  pkg.installed:
    - name: apache2

start_apache:
  service.running:
    - name: apache2
    - enable: True

To apply this state, run the following command:

# Apply Apache state

sudo salt '*' state.apply apache

Using Pillars

Pillars in SaltStack are used to manage sensitive data such as passwords, API keys, and other configuration parameters. Pillars are defined in files with the .sls extension. Here is an example:

# /srv/pillar/apache.sls

apache:
  port: 8080

To include this pillar data in your state, you need to configure the top.sls file:

# /srv/pillar/top.sls

base:
  '*':
    - apache

Then, reference the pillar data in your state file:

# /srv/salt/apache.sls

install_apache:
  pkg.installed:
    - name: apache2

start_apache:
  service.running:
    - name: apache2
    - enable: True

configure_apache:
  file.managed:
    - name: /etc/apache2/ports.conf
    - contents: |
        Listen {{ pillar['apache']['port'] }}

Apply the state as shown previously:

# Apply Apache state

sudo salt '*' state.apply apache

Conclusion

SaltStack is a powerful tool for automating and managing your infrastructure. This tutorial covered the basics of installing, configuring, and using SaltStack. With this knowledge, you can start automating your systems and managing your infrastructure more efficiently.