1it.riak
Ansible角色用于Riak KV & TS
Ansible Riak是一个为Riak KV和TS设计的Ansible角色,用于安装和配置Riak KV和TS。结合Ansible主机,它可以配置单个节点或整个集群。
安装
依赖项
- Ansible 2.1+
在Ansible Galaxy上安装
$ ansible-galaxy install 1it.riak
然后在您的剧本或其他角色中使用关键字 1it.riak
引用该角色。
手动安装
要手动安装此角色,请克隆仓库或将发行包解压到您的角色目录中。
例如,如果您使用默认的角色位置,角色目录将与您的playbook.yml文件同级,为 roles/
。如果您将此仓库克隆到您的角色目录中,则可以使用关键字 ansible-riak
引用该角色。
文档
此角色的所有文档都包含在README的这一部分中。
变量
可以在变量默认文件中找到此角色可用的所有变量。要覆盖任何默认变量,只需在您的playbook.yml的 vars:
部分中设置它们,或者创建您自己的角色,将此角色定义为依赖项,并使用此角色中使用的相同变量名称。
模板
当前包含四个模板。最重要的是 riak.conf.j2
模板,因为它配置Riak KV的操作参数。如果您对您的环有特定的操作要求,与发行配置显著不同,您可以用自己的模板覆盖此模板。
有两种不同的方法来覆盖默认模板:
- 覆盖 riak_conf_template 变量,并将其设置为本地系统上模板的绝对路径或相对路径
- 创建一个定义此角色为依赖项的新角色,并将您的模板文件保存在 templates 目录中,使用与要覆盖的模板完全相同的名称,在这种情况下为
riak.conf.j2
示例
通过剧本覆盖默认变量
---
- hosts: riak
sudo: true
roles:
- { role: 1it.riak }
vars:
riak_pb_bind_ip: 10.29.7.192
riak_pb_port: 10017
通过角色依赖关系覆盖默认变量
在内部,我们有一个 vagrant-ansible 包,一些人用它来测试我们的客户端库。我们还创建了一个角色,设置了我们库测试所需的环境,并声明此角色为依赖项。
安装Riak TS
---
- hosts: riakts
sudo: true
roles:
- { role: 1it.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节点加入集群,提供环领导者。通过此角色,有两种方法可以做到这一点。通过命令模块和cli工具riak-admin或通过Ansible Riak模块。
命令模块
---
- hosts: riak
sudo: true
roles:
- { role: 1it.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: 1it.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版(“许可证”)授权。有关更多详细信息,请参见许可证。