gsoft.eventstore

Rôle Ansible EventStoreDB

Un rôle Ansible qui installe et configure une machine Linux pour être utilisée comme un serveur EventStoreDB.

Voir des exemples d'utilisation ici.

Exigences

Ubuntu 14.04 (Trusty) LTS et supérieur.

Variables du rôle

Les variables disponibles sont listées ci-dessous, avec les valeurs par défaut (voir 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 }}"

Configuration

Par défaut, le fichier de configuration (eventstore.conf) est minimaliste comme suit :

---
ClusterSize: 1

Sécurité

Contrairement aux versions précédentes, EventStoreDB v20+ est sécurisé par défaut. Cela signifie que vous devez fournir des certificats valides et une configuration pour que le nœud de base de données fonctionne.

Ce rôle suppose que le certificat CA est déjà présent sur votre machine. Voir ce dépôt pour des exemples sur la façon dont vous pourriez fournir vos certificats avant d'exécuter ce rôle.

Certificats de nœud

Si vous souhaitez générer les certificats de nœud avec le rôle, définissez eventstore_generate_node_certitificate: true. La génération de certificats suivra les valeurs par défaut comme suit (modifiable) :

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

Cela générera les fichiers suivants :

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

avec des SAN correspondant aux adresses IP/DNS de bouclage, à l'adresse IP par défaut (interface eth0) et au DNS du nom d'hôte.

Exemple de Playbook

Modifier la configuration est aussi simple que de créer votre propre fichier YAML et de préciser le chemin avec la variable eventstore_config_file. Par exemple :

Structure de dossier exemple :

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

Contenu exemple pour eventstore.conf.j2 :

** Voir la documentation de configuration officielle pour toutes les options possibles. **

# Configuration des certificats
CertificateFile: /etc/eventstore/certs/node/node.crt
CertificatePrivateKeyFile: /etc/eventstore/certs/node/node.key
TrustedRootCertificatesPath: /etc/eventstore/certs/ca

# Configuration réseau
IntIp: {{ ansible_default_ipv4.address }}
ExtIp: {{ ansible_default_ipv4.address }}
EnableExternalTcp: true
EnableAtomPubOverHTTP: true

# Gossip de cluster
ClusterSize: 3
DiscoverViaDns: true
ClusterDns: eventstore.dns

# Configuration des projections
RunProjections: All

Exemple de 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: Assurer que le groupe eventstore existe
      ansible.builtin.group:
        name: eventstore
        state: present

    - name: Assurer que l'utilisateur eventstore existe
      ansible.builtin.user:
        name: eventstore
        state: present

    - name: Créer le dossier de certificats ca d'eventstore
      ansible.builtin.file:
        path: /etc/eventstore/certs/ca
        state: directory

    - name: Ajouter les fichiers de certificats ca d'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: Faire confiance au certificat ca d'eventstore
      ansible.builtin.copy:
        content: "{{ eventstore_ca_cert }}"
        dest: /usr/local/share/ca-certificates/eventstore-ca.crt
        mode: '0644'
      notify:
        - mettre à jour ca de confiance

  handlers:
    - name: mettre à jour ca de confiance
      shell: /usr/sbin/update-ca-certificates

Licence

Copyright © 2021, GSoft inc. Ce code est sous licence Apache, Version 2.0. Vous pouvez obtenir une copie de cette licence à l'adresse https://github.com/gsoft-inc/gsoft-license/blob/master/LICENSE.

À propos du projet

EventStoreDB role for Linux.

Installer
ansible-galaxy install gsoft.eventstore
Licence
Unknown
Téléchargements
868
Propriétaire
Workleap is the one simple employee experience platform to elevate hybrid work