Salt Reactor

Auf Events reagieren

Der Salt Reactor ist ein Prozess, welcher auf dem Master läuft und auf Events der Minions reagiert. Sobald der Event-Listener ein Event registriert, für das eine Reaktion definiert wurde, wird diese auf einem Minion ausgeführt. Der Reactor kann auf Standard-Events, wie »Minion gestartet« oder frei definierte Events reagieren.

Reactor aktivieren

Der Reactor wird über die Konfiguration des Masters aktiviert. Verwenden Sie dazu etwa die Datei /etc/salt/master.d/reactor.conf.

Nach jeder Änderung am Reactor müssen Sie den Salt Master neu starten.

Ein simples Beispiel

/etc/salt/master.d/reactor.conf
reactor:
  - 'salt/minion/*/start':           # EVENT -> Match tag "salt/minion/*/start"
    - /srv/reactor/minion-start.sls  # REACTION -> Things to do when a minion starts                      
  - 'dummy/foo/*':
    - /srv/reactor/dummy.sls
/srv/reactor/dummy.sls
{% set list = tag.split('/') %}
dummy:
  local.cmd.run:
    - name: gaga
    - tgt: 'some-minion'
    - arg:
      - 'echo "{{ data['id'] }}: {{ list[2] }} . {{ tag }} {{ data | json() }}">/tmp/reactor.txt'
root@minion1: salt-call event.send 'dummy/foo/hamster'

Mit dem Kommando salt-run state.event pretty=True beobachten Sie live, welche Events an den Reactor gesendet werden.

Salt-Keys aufräumen

/etc/salt/master.d/reactor.conf
reactor: 
  - 'salt/cloud/*/destroying': 
    - '/srv/reactor/salt_cloud_destroy_keys.sls'
/srv/reactor/salt_cloud_destroy_keys.sls
{%- set tag_split = tag.split('/') %} 
{%- set minion_id = tag_split[2] %} 
salt_cloud_destroy_key_{{ minion_id }}: 
  wheel.key.delete: 
    - match: {{ minion_id }}

State nach VM Deployment ausrollen

/etc/salt/master.d/reactor.conf
reactor: 
  # Machine created
  - 'salt/cloud/*/created':
    - '/srv/reactor/startup_highstate.sls'
  # Machine destroyed
  - 'salt/cloud/*/destroying': 
    - '/srv/reactor/salt_cloud_destroy_keys.sls'
/srv/reactor/startup_highstate.sls
reactor_highstate:
  cmd.state.apply:
    - tgt: {{ data['name'] }}
    - args:
      - mods: init.vminit

Last updated