# /srv/salt/_runners/rnd.py
import salt.client
import salt.config
import salt.runner
from random import choice
def target():
# load master config
opts = salt.config.master_config('/etc/salt/master')
# load runner client with master config
runner = salt.runner.RunnerClient(opts)
# run manage.up to fetch active minions
list_of_minions = runner.cmd('manage.up', [])
# let python randomly choose a minion
random_target = choice(list_of_minions)
# load the execution module client
local = salt.client.LocalClient()
# run execution module on randomly targeted minion
return local.cmd(random_target, 'test.ping')
# /etc/salt/master.d/reactor.conf
reactor:
- 'my/custom/event/':
- /srv/reactor/random_target.sls# /srv/reactor/random_target.sls
run_command_on_random_target:
runner.rnd.target