eventstore

Роль Ansible для EventStoreDB

Роль Ansible, которая устанавливает и настраивает Linux-машину для использования в качестве сервера EventStoreDB.

Посмотрите примеры использования здесь.

Требования

Ubuntu 14.04 (Trusty) LTS и выше.

Переменные роли

Доступные переменные перечислены ниже вместе с значениями по умолчанию (см. 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 }}"

Конфигурация

По умолчанию файл конфигурации (eventstore.conf) имеет следующий минимальный вид:

---
ClusterSize: 1

Безопасность

В отличие от предыдущих версий, EventStoreDB версии 20+ по умолчанию безопасен. Это означает, что вам необходимо предоставить действительные сертификаты и конфигурацию для работы узла базы данных.

Эта роль предполагает, что сертификат CA уже присутствует на вашей машине. Посмотрите этот репозиторий для примеров о том, как вы могли бы подготовить свои сертификаты перед выполнением этой роли.

Сертификаты узла

Если вы хотите сгенерировать сертификаты узла с помощью этой роли, установите eventstore_generate_node_certitificate: true. Генерация сертификатов будет следовать значениям по умолчанию (можно переопределить):

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

Это приведет к созданию следующих файлов:

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

с SAN, соответствующими IP-адресу обратной связи / DNS, IP-адресу по умолчанию (интерфейс eth0) и DNS-имени хоста.

Пример Playbook

Изменить конфигурацию так же просто, как создать свой собственный файл YAML и указать путь с переменной eventstore_config_file. Например:

Пример структуры папок:

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

Пример содержимого для eventstore.conf.j2:

** См. официальную документацию по конфигурации для всех возможных опций. **

# Конфигурация сертификатов
CertificateFile: /etc/eventstore/certs/node/node.crt
CertificatePrivateKeyFile: /etc/eventstore/certs/node/node.key
TrustedRootCertificatesPath: /etc/eventstore/certs/ca

# Сетевая конфигурация
IntIp: {{ ansible_default_ipv4.address }}
ExtIp: {{ ansible_default_ipv4.address }}
EnableExternalTcp: true
EnableAtomPubOverHTTP: true

# Шум в кластере
ClusterSize: 3
DiscoverViaDns: true
ClusterDns: eventstore.dns

# Конфигурация проекций
RunProjections: All

Пример 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: Убедиться, что группа eventstore существует
      ansible.builtin.group:
        name: eventstore
        state: present

    - name: Убедиться, что пользователь eventstore существует
      ansible.builtin.user:
        name: eventstore
        state: present

    - name: Создать папку для сертификатов ca eventstore
      ansible.builtin.file:
        path: /etc/eventstore/certs/ca
        state: directory

    - name: Добавить файлы сертификатов 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: Доверять сертификату ca eventstore
      ansible.builtin.copy:
        content: "{{ eventstore_ca_cert }}"
        dest: /usr/local/share/ca-certificates/eventstore-ca.crt
        mode: '0644'
      notify:
        - обновить доверенный ca

  handlers:
    - name: обновить доверенный ca
      shell: /usr/sbin/update-ca-certificates

Лицензия

Copyright © 2021, GSoft inc. Этот код лицензирован под лицензией Apache, версия 2.0. Вы можете получить копию этой лицензии по адресу https://github.com/gsoft-inc/gsoft-license/blob/master/LICENSE.

О проекте

EventStoreDB role for Linux.

Установить
ansible-galaxy install gsoft-inc/ansible-role-eventstore
Лицензия
Unknown
Загрузки
830
Владелец
Workleap is the one simple employee experience platform to elevate hybrid work