Using Salt's local client
Runners were originally designed to run on the Master, to combine multiple jobs across Minions into one complete task. In order to communicate with those Minions, a runner needs to use local_client
. Unlike other components, this is not built directly into runners; you need to initialize the client yourself. Let's set up a quick example:
import salt.client client = salt.client.get_local_client(__opts__['conf_file']) minions = client.cmd('*', 'test.ping', timeout=__opts__['timeout'])
These three lines form the basis of setting up and using the local client. First, we import the salt.client
library. Then, we instantiate a client object, which is used to communicate to Salt. When creating that client object, you do need to tell it where to find Salt's configuration file. Luckily, this is something we get for free in the __opts__
dictionary, and we're unlikely to need to change it, so that line in your code will probably always look exactly like what we've done here.
The...