gsoft.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 v20+ 默认是安全的。这意味着您必须提供有效的证书和数据库节点配置,才能使其正常工作。

该角色假设您的机器上已经存在 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

文件的 SANs 将匹配回环 IP 地址/DNS、默认 IP 地址(eth0 接口)和主机名 DNS。

示例剧本

修改配置的方式非常简单,只需创建自己的 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: 创建 eventstore ca 证书文件夹
      ansible.builtin.file:
        path: /etc/eventstore/certs/ca
        state: directory

    - name: 添加 eventstore ca 证书文件
      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: 信任 eventstore ca 证书
      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

许可证

版权所有 © 2021, GSoft 公司。该代码根据 Apache 许可证 2.0 版授权。您可以在 https://github.com/gsoft-inc/gsoft-license/blob/master/LICENSE 获取该许可证的副本。

关于项目

EventStoreDB role for Linux.

安装
ansible-galaxy install gsoft.eventstore
许可证
Unknown
下载
868
拥有者
Workleap is the one simple employee experience platform to elevate hybrid work