In the previous chapter we started to discuss the various ways that Salt can be extended. But that was just the beginning. Before we can continue, however, we need to take a moment to discuss more details about the master. We have briefly mentioned some of these details, but we need a more concrete foundation before tackling additional ways of extending Salt.
So far we have focused on the master simply coordinating jobs that run on the minions. The master provides data via pillars and serves as a central host from which you can run commands. But up until now, most of the commands have run on the minions themselves. The master has even more power available to you. There are, among others, systems that coordinate multiple jobs in a single command as well as systems that listen to data that comes from the minions.
The first topic we will look at is runners. A runner is very similar in concept to an execution module. However, execution modules run on the minions, while runners execute on the master. The minions are isolated and do not have access to much of the Salt infrastructure. The master, on the other hand, has access to everything. This includes all of the minions themselves, the job cache, pillar data, and more. Therefore, a runner can run a command on one minion and, depending on the results from that minion, can then run a different command on other minions.
After we discuss runners,
we will discuss a “higher-level” state system.