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から入手できます。
ansible-galaxy install gsoft.eventstore