1it.riak

Ansible角色用于Riak KV & TS

构建状态 Ansible Galaxy

Ansible Riak是一个为Riak KV和TS设计的Ansible角色,用于安装和配置Riak KV和TS。结合Ansible主机,它可以配置单个节点或整个集群

  1. 安装
  2. 文档
  3. 示例
  4. 贡献
  5. 路线图
  6. 许可证和作者

安装

依赖项

  • 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来了解从测试到编码标准的所有信息。

路线图

  • 目前没有计划。

许可证和作者

版权所有 (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 1it.riak
许可证
other
下载
144
拥有者
Site Reliability Engineer