Writing Configuration Management code
For SaltStack to help us configure our node as a web server, we need to tell it what one of those should look like. In Configuration Management terms, we need to describe the desired state of the machine.
In our example, we will be using a combination of SaltStack States, Pillars, Grains, and Top files to describe the processes of:
- Creating Linux user accounts
- Installing services (NGINX and PHP-FPM)
- Configuring and running the installed services
States
A State contains a set of instructions which we would like to be applied to our EC2 minion(s). We will use /srv/salt/states
on the minion as the root of the Salt State tree. States can be stored in there in the form of a single file, for example /srv/salt/states/mystate.sls
, or organized into folders like so /srv/salt/states/mystate/init.sls
. Later on, when we request that mystate
is executed, Salt will look for either a state_name.sls
or a state_name/init.sls
in the root of the State Tree. I find the second...