gsoft.eventstore

Ansible EventStoreDB Rolle

Eine Ansible-Rolle, die eine Linux-Maschine installiert und konfiguriert, um als EventStoreDB-Server verwendet zu werden.

Siehe hier Beispiele zur Nutzung.

Anforderungen

Ubuntu 14.04 (Trusty) LTS und höher.

Rollenvariablen

Verfügbare Variablen sind unten aufgeführt, zusammen mit Standardwerten (siehe defaults/main.yml):

eventstore_version: 20.10.4
eventstore_admin_password: changeit
eventstore_admin_new_password: null
eventstore_config_file: "{{ role_path }}/templates/eventstore.conf.j2"
eventstore_wait_for_http: true
eventstore_wait_for_http_timeout: 30
eventstore_generate_node_certitificate: false
eventstore_certificate_path: /etc/eventstore/certs
eventstore_ca_key_path: ./ca/ca.key
eventstore_ca_cert_path: ./ca/ca.crt
eventstore_node_cert_days: 365
eventstore_node_cert_out: ./node
eventstore_node_cert_ip_addresses:
  - 127.0.0.1
  - "{{ ansible_default_ipv4.address }}"
eventstore_node_cert_dns_names:
  - localhost
  - "{{ inventory_hostname }}"

Konfiguration

Standardmäßig ist die Konfigurationsdatei (eventstore.conf) sehr einfach und sieht folgendermaßen aus:

---
ClusterSize: 1

Sicherheit

Im Gegensatz zu früheren Versionen ist EventStoreDB v20+ standardmäßig sicher. Das bedeutet, dass gültige Zertifikate und Konfigurationen bereitgestellt werden müssen, damit der Datenbankknoten funktioniert.

Diese Rolle geht davon aus, dass das CA-Zertifikat bereits auf Ihrer Maschine vorhanden ist. Siehe dieses Repository für Beispiele, wie Sie Ihre Zertifikate vor der Ausführung dieser Rolle bereitstellen können.

Knotenzertifikate

Wenn Sie die Knotenzertifikate mit der Rolle generieren möchten, setzen Sie eventstore_generate_node_certitificate: true. Die Zertifikatserstellung erfolgt nach den folgenden Standardwerten (überschreibbar):

eventstore_certificate_path: /etc/eventstore/certs
eventstore_ca_key_path: ./ca/ca.key
eventstore_ca_cert_path: ./ca/ca.crt
eventstore_node_cert_days: 365
eventstore_node_cert_out: ./node
eventstore_node_cert_ip_addresses:
  - 127.0.0.1
  - "{{ ansible_default_ipv4.address }}"
eventstore_node_cert_dns_names:
  - localhost
  - "{{ inventory_hostname }}"

Dies wird folgendes Dateien generieren:

/etc/eventstore/certs/node/node.key
/etc/eventstore/certs/node/node.crt

mit SANs, die der Loopback-IP-Adresse/DNS, der Standard-IP-Adresse (eth0-Schnittstelle) und dem Hostnamen-DNS entsprechen.

Beispiel-Playbook

Die Modifizierung der Konfiguration ist so einfach, wie eine eigene YAML-Datei zu erstellen und den Pfad mit der Variablen eventstore_config_file anzugeben. Zum Beispiel:

Beispiel-Ordnerstruktur:

- playbook.yml
- files/eventstore.conf.j2

Beispielinhalt für eventstore.conf.j2:

** Siehe die offizielle Konfigurationsdokumentation für alle möglichen Optionen. **

# Zertifikat-Konfiguration
CertificateFile: /etc/eventstore/certs/node/node.crt
CertificatePrivateKeyFile: /etc/eventstore/certs/node/node.key
TrustedRootCertificatesPath: /etc/eventstore/certs/ca

# Netzwerk-Konfiguration
IntIp: {{ ansible_default_ipv4.address }}
ExtIp: {{ ansible_default_ipv4.address }}
EnableExternalTcp: true
EnableAtomPubOverHTTP: true

# Cluster-Gossip
ClusterSize: 3
DiscoverViaDns: true
ClusterDns: eventstore.dns

# Projektionen-Konfiguration
RunProjections: All

Beispiel playbook.yml

- hosts: all
  roles:
    - eventstore

  vars:
    eventstore_generate_node_certitificate: true
    eventstore_config_file: ./files/eventstore.conf.j2
    eventstore_ca_key: "{{ lookup('file', 'ca/ca.key') }}"
    eventstore_ca_cert: "{{ lookup('file', 'ca/ca.crt') }}"
    eventstore_node_cert_ip_addresses:
      - 127.0.0.1
      - "{{ ansible_default_ipv4.address }}"
    eventstore_node_cert_dns:
      - localhost
      - "{{ inventory_hostname }}"
      - eventstore.dns
  pre_tasks:
    - name: Sicherstellen, dass die eventstore-Gruppe existiert
      ansible.builtin.group:
        name: eventstore
        state: present

    - name: Sicherstellen, dass der eventstore-Benutzer existiert
      ansible.builtin.user:
        name: eventstore
        state: present

    - name: Erstellen des eventstore CA Zertifikatspfads
      ansible.builtin.file:
        path: /etc/eventstore/certs/ca
        state: directory

    - name: Hinzufügen der eventstore CA Zertifikatdateien
      ansible.builtin.copy:
        content: "{{ item.content }}"
        dest: "{{ item.dest }}"
        owner: eventstore
        group: eventstore
        mode: '0600'
      no_log: true
      loop:
        - { content: "{{ eventstore_ca_key }}", dest: /etc/eventstore/certs/ca/ca.key }
        - { content: "{{ eventstore_ca_cert }}", dest: /etc/eventstore/certs/ca/ca.crt }

    - name: Vertrauen des eventstore CA Zertifikats
      ansible.builtin.copy:
        content: "{{ eventstore_ca_cert }}"
        dest: /usr/local/share/ca-certificates/eventstore-ca.crt
        mode: '0644'
      notify:
        - vertraute CA aktualisieren

  handlers:
    - name: vertraute CA aktualisieren
      shell: /usr/sbin/update-ca-certificates

Lizenz

Copyright © 2021, GSoft inc. Dieser Code ist unter der Apache-Lizenz, Version 2.0 lizenziert. Eine Kopie dieser Lizenz kann unter https://github.com/gsoft-inc/gsoft-license/blob/master/LICENSE abgerufen werden.

Über das Projekt

EventStoreDB role for Linux.

Installieren
ansible-galaxy install gsoft.eventstore
GitHub Repository
Lizenz
Unknown
Downloads
868
Besitzer
Workleap is the one simple employee experience platform to elevate hybrid work