Book Image

Learning SaltStack

By : Colton Myers
Book Image

Learning SaltStack

By: Colton Myers

Overview of this book

Table of Contents (15 chapters)


SaltStack (or Salt, for short) is an open source project that was started by Thomas Hatch in 2011. It was originally intended to be a lightning-fast remote-execution system. Later, the various pieces that make up the Salt that we know today were added on top of this flexible layer. Salt is now one of the most popular open source projects in the world and one of the most popular infrastructure management platforms.

The project is managed by SaltStack, a company dedicated to preserving the open source nature of the software. SaltStack provides service, long-term support, and custom code in its enterprise product. The company also supports the open source Salt project with a team of dedicated engineers.

Why do you care? What can Salt do for you?

Salt is the easiest, most powerful way to manage your servers. Whether you have a few, hundreds, or even tens of thousands of servers, you can use Salt to manage them from a single, central point. You can use it to flexibly target any subset of your servers to run commands or accomplish tasks. You can use the state system to define the state of your infrastructure in a data-driven way and then enforce that state in seconds, with a single command. You can even create a reactive, self-healing infrastructure using the event system. Salt is written in Python and designed to be easy to extend for your own specific use cases or purposes.

We're going to learn how to do all this and more in these pages. By the end of this book, you will have the knowledge you need to begin making the management of your infrastructure easier with Salt.

Let's get to it!

What this book covers

Chapter 1, Diving In – Our First Salt Commands, teaches you how to install Salt and execute basic commands.

Chapter 2, Controlling Your Minions with Remote Execution, covers how to use Salt to accomplish tasks on your minions through remote execution.

Chapter 3, Execution Modules – Write Your Own Solution, teaches you how to write your own custom remote-execution modules to extend Salt for your own purposes.

Chapter 4, Defining the State of Your Infrastructure, covers how to use Salt states to define and enforce the state of your infrastructure.

Chapter 5, Expanding Our States with Jinja2 and Pillar, shows how to make your states more flexible and powerful using Jinja2 and pillar data.

Chapter 6, The Highstate and Environments, teaches you how to structure your states into environments and enforce the state of your entire infrastructure using a single command.

Chapter 7, Using Salt Cloud to Manage Virtual Minions, covers how to manage your cloud virtual machines using Salt Cloud to create and manage VMs.

Chapter 8, The Reactor and the Event System, shows how to make your infrastructure automatically react to changes using the reactor and the event system built into Salt.

What you need for this book

You will need access to a Linux machine to run the examples in this book. The preferred operating system is Ubuntu 14.04, but any major distribution of Linux is acceptable. If you use an operating system other than Ubuntu 14.04, your example output might differ from the output in the book.

Who this book is for

The biggest target audience for this book is system administrators. However, anyone who works with servers, whether application/web developers, system administrators, or hobbyists will be able to use this book to learn how to manage their servers/infrastructure easily and consistently.

No prior Salt knowledge is assumed. However, even Salt veterans will find new knowledge and best practices to apply in their own infrastructures. This book is for anyone who wants to better manage their infrastructure with Salt.


In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning.

Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: "The easiest way to access the PPA to install Salt is using the add-apt-repository command."

A block of code is set as follows:

def sleep(length):
    Instruct the minion to initiate a process that will sleep for a given period of time.
    CLI Example:
    .. code-block:: bash
        salt '*' test.sleep 20
    return True

Any command-line input or output is written as follows:

# sudo salt-key -f myminion
Unaccepted Keys:
myminion:  a8:1f:b0:c2:ab:9d:27:13:60:c9:81:b1:11:a3:68:e1

New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: "If the system asks whether you should accept a gpg key, press Enter to accept."


Warnings or important notes appear in a box like this.


Tips and tricks appear like this.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.

To send us general feedback, simply e-mail , and mention the book's title in the subject of your message.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.


Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title.

To view the previously submitted errata, go to and enter the name of the book in the search field. The required information will appear under the Errata section.


Piracy of copyrighted material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at with a link to the suspected pirated material.

We appreciate your help in protecting our authors and our ability to bring you valuable content.


If you have a problem with any aspect of this book, you can contact us at , and we will do our best to address the problem.