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 获取该许可证的副本。
安装
ansible-galaxy install gsoft.eventstore
许可证
Unknown
下载
868
拥有者
Workleap is the one simple employee experience platform to elevate hybrid work