basho-labs.riak-kv
Ansible角色用于Riak KV和TS
Ansible Riak 是一个Ansible角色,旨在安装和配置Riak KV和TS。结合Ansible主机,可以用于配置单个节点或整个集群。
安装
依赖项
- Ansible 2.1+
从Ansible Galaxy安装
$ ansible-galaxy install basho-labs.riak-kv
然后在您的playbooks或其他角色中使用密钥basho-labs.riak-kv
引用该角色。
手动安装
要手动安装此角色,请克隆存储库或将发行包提取到您的角色目录中。
例如,如果您使用默认的角色位置,则角色目录将与您的playbook.yml文件同级,名为roles/
。如果您将此存储库克隆到角色目录中,则可以使用键ansible-riak
引用该角色。
文档
有关此角色的所有文档均包含在README的此部分中。
变量
可以在变量默认文件中找到此角色中可以使用的所有变量。要覆盖任何默认变量,只需在您的playbook.yml中的vars:
部分设置它们,或创建您自己的角色,将此角色定义为依赖项,使用此角色中使用的相同变量名称。
模板
目前,角色中包含四个模板。最重要的是riak.conf.j2
模板,因为它配置了Riak KV的操作参数。如果您对集群有特定的操作需求,与发行版配置显著不同,可以使用您自己的模板覆盖此模板。
覆盖默认模板有两种不同的方法:
- 覆盖riak_conf_template变量,并将其设置为本地系统上模板的绝对/相对路径。
- 创建一个新角色,将此角色定义为依赖项,并使用与您想要覆盖的模板完全相同的名称(在这种情况下为
riak.conf.j2
)将模板文件保存在templates目录中。
示例
通过Playbook覆盖默认变量
---
- hosts: riak
sudo: true
roles:
- { role: ansible-riak }
vars:
riak_pb_bind_ip: 10.29.7.192
riak_pb_port: 10017
通过角色依赖覆盖默认变量
在内部,我们有一个vagrant-ansible包,我们中的一些人用它来测试我们的客户端库。我们还创建了一个角色,为我们的库测试设置所需的环境,并声明此角色为依赖项。
安装Riak TS
---
- hosts: riakts
sudo: true
roles:
- { role: ansible-riak }
vars:
riak_package: 'riak-ts'
riak_backend: leveldb
riak_node_name: "riak@{{ ansible_default_ipv4['address'] }}"
riak_shell_group: 'riak-ts'
riak_anti_entropy: off
tasks:
- name: 设置对象大小警告阈值
lineinfile: 'dest=/etc/riak/riak.conf line="object.size.warning_threshold = 50K" regexp: "^object.size.warning_threshold ="'
- name: 设置对象大小最大阈值
lineinfile: 'dest=/etc/riak/riak.conf line="object.size.maximum = 500K" regexp: "^object.size.maximum ="'
构建集群
要构建集群,您需要指示Riak节点通过提供环领导者加入集群。使用此角色,有两种方法可以做到这一点。通过命令模块和命令行工具riak-admin或通过Ansible Riak模块。
命令模块
---
- hosts: riak
sudo: true
roles:
- { role: ansible-riak }
vars:
ring_leader: [email protected]
tasks:
- name: 加入集群
command: '{{ riak_admin }} cluster join {{ ring_leader }}'
- name: 检查Riak环
command: '{{ riak_admin }} cluster status'
register: riak_ring_status
- name: 规划集群
command: '{{ riak_admin }} cluster plan'
when: riak_ring_status.stdout.find('joining') > 0
- name: 提交集群
command: '{{ riak_admin }} cluster commit'
when: riak_ring_status.stdout.find('joining') > 0
Riak模块
Riak模块还具有使用wait_for_ring和wait_for_handoffs功能的额外好处。
---
- hosts: riak
sudo: true
roles:
- { role: ansible-riak }
vars:
ring_leader: [email protected]
tasks:
- name: 加入集群
riak: command=join target_node={{ ring_leader }}
- name: 检查Riak环
command: 'riak-admin cluster status'
register: riak_ring_status
- name: 规划集群
riak: command=plan wait_for_ring=300
when: riak_ring_status.stdout.find('joining') > 0
- name: 提交集群
riak: command=commit wait_for_handoffs=300
when: riak_ring_status.stdout.find('joining') > 0
贡献
该存储库的维护者是Basho的工程师,我们欢迎您对项目的贡献!您可以通过查看CONTRIBUTING.md开始,了解从测试到编码标准的相关信息。
路线图
- 目前没有计划。
许可证和作者
- 作者:Bryan Hunt (https://github.com/binarytemple)
- 作者:Christopher Mancini (https://github.com/christophermancini)
版权 (c) 2016 Basho Technologies, Inc. 根据Apache许可证第2.0版(“许可证”)授权。有关更多细节,请参见许可证。
Installs and configures Riak KV and TS, a distributed, highly available NoSQL and TimeSeries database.
ansible-galaxy install basho-labs.riak-kv