gsoft.eventstore

Rola Ansible EventStoreDB

Rola Ansible, która instaluje i konfiguruje maszynę Linux, aby mogła być używana jako serwer EventStoreDB.

Zobacz przykłady użycia tutaj.

Wymagania

Ubuntu 14.04 (Trusty) LTS i nowsze.

Zmienne Roli

Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (sprawdź defaults/main.yml):

eventstore_version: 20.10.4
eventstore_admin_password: zmieńto
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 }}"

Konfiguracja

Domyślnie plik konfiguracyjny (eventstore.conf) jest minimalny, jak poniżej:

---
ClusterSize: 1

Bezpieczeństwo

W przeciwieństwie do wcześniejszych wersji, EventStoreDB v20+ jest domyślnie zabezpieczony. Oznacza to, że musisz dostarczyć ważne certyfikaty i konfigurację, aby węzeł bazy danych działał.

Ta rola zakłada, że certyfikat CA jest już obecny na twojej maszynie. Zobacz to repozytorium na przykłady, jak możesz przygotować swoje certyfikaty przed wykonaniem tej roli.

Certyfikaty węzłów

Jeśli chcesz wygenerować certyfikaty węzłów za pomocą tej roli, ustaw eventstore_generate_node_certitificate: true. Generowanie certyfikatów będzie następować zgodnie z domyślnymi wartościami, jak poniżej (można je nadpisywać):

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 }}"

To wygeneruje następujące pliki:

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

Z odpowiednimi SAN odpowiadającymi adresowi IP/DNS pętli, domyślnemu adresowi IP (interfejs eth0) i nazwie DNS hosta.

Przykładowy Playbook

Modyfikacja konfiguracji jest tak prosta, jak stworzenie własnego pliku YAML i określenie ścieżki za pomocą zmiennej eventstore_config_file. Na przykład:

Przykładowa struktura folderów:

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

Przykładowa zawartość dla eventstore.conf.j2:

** Zobacz oficjalną dokumentację konfiguracyjną w celu zapoznania się z wszystkimi możliwymi opcjami. **

# Konfiguracja certyfikatów
CertificateFile: /etc/eventstore/certs/node/node.crt
CertificatePrivateKeyFile: /etc/eventstore/certs/node/node.key
TrustedRootCertificatesPath: /etc/eventstore/certs/ca

# Konfiguracja sieci
IntIp: {{ ansible_default_ipv4.address }}
ExtIp: {{ ansible_default_ipv4.address }}
EnableExternalTcp: true
EnableAtomPubOverHTTP: true

# Gawędzenie klastra
ClusterSize: 3
DiscoverViaDns: true
ClusterDns: eventstore.dns

# Konfiguracja projekcji
RunProjections: All

Przykładowy 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: Upewnij się, że grupa eventstore istnieje
      ansible.builtin.group:
        name: eventstore
        state: present

    - name: Upewnij się, że użytkownik eventstore istnieje
      ansible.builtin.user:
        name: eventstore
        state: present

    - name: Utwórz folder certyfikatów ca eventstore
      ansible.builtin.file:
        path: /etc/eventstore/certs/ca
        state: directory

    - name: Dodaj pliki certyfikatów ca eventstore
      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: Zaufaj certyfikatowi ca eventstore
      ansible.builtin.copy:
        content: "{{ eventstore_ca_cert }}"
        dest: /usr/local/share/ca-certificates/eventstore-ca.crt
        mode: '0644'
      notify:
        - zaktualizuj zaufane ca

  handlers:
    - name: zaktualizuj zaufane ca
      shell: /usr/sbin/update-ca-certificates

Licencja

Copyright © 2021, GSoft inc. Ten kod jest licencjonowany na podstawie Licencji Apache, Wersja 2.0. Możesz uzyskać kopię tej licencji pod adresem https://github.com/gsoft-inc/gsoft-license/blob/master/LICENSE.

O projekcie

EventStoreDB role for Linux.

Zainstaluj
ansible-galaxy install gsoft.eventstore
Licencja
Unknown
Pobrania
868
Właściciel
Workleap is the one simple employee experience platform to elevate hybrid work