Salt Reactor

Der Salt Reactor ist ein Prozess, welcher auf dem Master läuft und auf Events der Minions reagiert. Der Reactor kann auf Standard-Events, wie z.B. "Minion gestartet" oder frei definierte Events reagieren.

Reactor aktivieren

Der Reactor wird über die Konfiguration des Masters aktiviert. Verwenden Sie dazu zum Beispiel 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':          # Match tag "salt/minion/*/start"
    - /srv/reactor/minion-start.sls        # 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: 'master'
    - arg:
      - 'echo "{{ data['id'] }}: {{ list[2] }} . {{ tag }} {{ data | json() }}">/tmp/reactor.txt'
root@minion1: salt-call event.send 'dummy/foo/hamster'

Reactor Beispiel Burp Backup

Registrierung neuer Burp-Backup-Clients per Reactor

/etc/salt/master.d/reactor.conf

reactor:                            # Master config section "reactor"
  - 'burp/register/*':              # React to custom event tags
    - /srv/reactor/burp-register.sls

/srv/reactor/burp-register.sls

{% set args = tag.split('/') %}
register-backup-client:
  local.cmd.run:
    - name: register
    - tgt: 'backup-server.local'
    - arg:
      - 'echo "password = {{ args[2] }}" > /etc/burp/clientconfdir/{{ data['id'] }}'

Backup Server einrichten

Master vorbereiten, damit dieser Backups der Minions annimmt:

apt-get install librsync1
wget "http://de.archive.ubuntu.com/ubuntu/pool/universe/b/burp/burp_2.0.54-1_amd64.deb"
dpkg -i burp_2.0.54-1_amd64.deb
rm burp_2.0.54-1_amd64.deb

Öffnen Sie die Datei /etc/burp/burp-server.conf und setzen Sie protocol = 2. Anschließend starten Sie den Burp-Server.

burp -c /etc/burp/burp-server.conf

Backup Client per Salt ausrollen

/srv/salt/linux/burp/init.sls

#
# Install burp backup client
#
librsync1:
  pkg.installed: []

# We want to keep our sources list tidy. So we don't add the a source to the system
install:
  cmd.run:
    - name: |
        wget "http://de.archive.ubuntu.com/ubuntu/pool/universe/b/burp/burp_2.0.54-1_amd64.deb"
        dpkg -i burp_2.0.54-1_amd64.deb
        rm burp_2.0.54-1_amd64.deb
    - runas: root
    - chdir: /tmp
    - creates: /usr/sbin/burp

/etc/burp/burp.conf:
  file.managed:
    - source: salt://linux/burp/burp.conf
    - template: jinja
    - defaults:
        include:
          - /etc
          - /root
        server: backup-server.local
    - user: root
    - group: root
    - mode: 0500

burp/register:
  event.send:
    - unless: test -e /etc/burp/ssl_cert-client.key

#burp -a b:
#  cmd.run:
#    - runas: root

/srv/salt/linux/burp/burp.conf

# This is an example config file for the burp client.
mode = client
port = 4971
status_port = 4972
server = {{ server }}
password = {{ password }}
cname = {{ grains['id'] }}
protocol = 2
pidfile = /var/run/burp.client.pid
syslog = 0
stdout = 1
progress_counter = 1
server_can_restore = 0
cross_filesystem=/home
ca_burp_ca = /usr/sbin/burp_ca
ca_csr_dir = /etc/burp/CA-client
ssl_cert_ca = /etc/burp/ssl_cert_ca.pem
ssl_cert = /etc/burp/ssl_cert-client.pem
ssl_key = /etc/burp/ssl_cert-client.key
ssl_peer_cn = burpserver
{# Loop over the dict #}
{% for dir in include %}include = {{ dir }}{% endfor %}

exclude_fs = sysfs
exclude_fs = tmpfs
nobackup = .nobackup
exclude_comp=bz2
exclude_comp=gz

results matching ""

    No results matching ""