Chapter 4. Configuration Management: Salt States
The remote execution framework provides the basis for a number of higher-level abstractions. Running remote commands on a number of minions is great. But when you add another web server or another database server, hopefully that new server will have something in common with other servers. Reusing components helps maintain a base level of consistency in your environment. Salt provides a simple but powerful file format that allows you to specify a desired recipe, or state, describing how you want a host to look, and then you simply apply that state. The states can be combined so you can build on simple pieces to make more complicated states.
Tip
You can find the complete list of state modules on the SaltStack website.
State File Overview
You describe a state via Salt state (SLS) files. As with most of Salt’s core, the most basic format is YAML. One of the big advantages of YAML is that it is language-agnostic; it is just a data format. The format of the states uses standard data structure constructs:
-
Strings
-
Numbers
-
Arrays (lists)
-
Hashes (dictionaries)
Note
It is important to remember that YAML is just a simple representation of the data structure. You can alter the underlying file format if you use a different renderer.
SLS Example: Adding a User
In the previous chapter, we added a single user on a host. But we want this user, and the rest of the users, to be added automatically every time we add another machine. Let’s ...