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