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

SANはループバック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

ライセンス

Copyright © 2021, GSoft inc. このコードはApache License, Version 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