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.
ansible-galaxy install gsoft.eventstore