Use the Salt Event System to fire events from the master to the minion and vice-versa.
salt.modules.event.
fire
(data, tag)¶Fire an event on the local minion event bus. Data must be formed as a dict.
CLI Example:
salt '*' event.fire '{"data":"my event data"}' 'tag'
salt.modules.event.
fire_master
(data, tag, preload=None)¶Fire an event off up to the master server
CLI Example:
salt '*' event.fire_master '{"data":"my event data"}' 'tag'
salt.modules.event.
send
(tag, data=None, preload=None, with_env=False, with_grains=False, with_pillar=False, with_env_opts=False, **kwargs)¶Send an event to the Salt Master
New in version 2014.7.0.
tag -- A tag to give the event.
Use slashes to create a namespace for related events. E.g.,
myco/build/buildserver1/start
, myco/build/buildserver1/success
,
myco/build/buildserver1/failure
.
data -- A dictionary of data to send in the event. This is free-form. Send any data points that are needed for whoever is consuming the event. Arguments on the CLI are interpreted as YAML so complex data structures are possible.
with_env (Specify True
to include all environment variables, or
specify a list of strings of variable names to include.) -- Include environment variables from the current shell
environment in the event data as environ
.. This is a short-hand for
working with systems that seed the environment with relevant data such
as Jenkins.
with_grains (Specify True
to include all grains, or specify a
list of strings of grain names to include.) -- Include grains from the current minion in the event
data as grains
.
with_pillar (Specify True
to include all Pillar values, or
specify a list of strings of Pillar keys to include. It is a
best-practice to only specify a relevant subset of Pillar data.) -- Include Pillar values from the current minion in the
event data as pillar
. Remember Pillar data is often sensitive data
so be careful. This is useful for passing ephemeral Pillar values
through an event. Such as passing the pillar={}
kwarg in
state.sls
from the Master, through
an event on the Minion, then back to the Master.
with_env_opts (Specify True
to include saltenv
and
pillarenv
values or False
to omit them.) -- Include saltenv
and pillarenv
set on minion
at the moment when event is send into event data.
kwargs -- Any additional keyword arguments passed to this function will be interpreted as key-value pairs and included in the event data. This provides a convenient alternative to YAML for simple values.
CLI Example:
salt-call event.send myco/mytag foo=Foo bar=Bar
salt-call event.send 'myco/mytag' '{foo: Foo, bar: Bar}'
A convenient way to allow Jenkins to execute salt-call
is via sudo. The
following rule in sudoers will allow the jenkins
user to run only the
following command.
/etc/sudoers
(allow preserving the environment):
jenkins ALL=(ALL) NOPASSWD:SETENV: /usr/bin/salt-call event.send*
Call Jenkins via sudo (preserve the environment):
sudo -E salt-call event.send myco/jenkins/build/success with_env=[BUILD_ID, BUILD_URL, GIT_BRANCH, GIT_COMMIT]