riak
Ansible Роль для Riak KV и TS
Ansible Riak — это роль Ansible, предназначенная для установки и настройки Riak KV и TS. В сочетании с хостами Ansible, она может использоваться для настройки одного узла или целого кластера.
Установка
Зависимости
- Ansible 2.1+
Установка из Ansible Galaxy
$ ansible-galaxy install 1it.riak
Затем укажите роль в ваших playbook или других ролях, используя ключ 1it.riak
.
Установка вручную
Чтобы установить эту роль вручную, клонируйте репозиторий или извлеките дистрибутивный пакет в вашу директорию ролей.
Например, если вы используете место по умолчанию для ролей, директория ролей будет на одном уровне с вашим файлом playbook.yml — roles/
. Если вы клонируете этот репозиторий в вашу директорию ролей, вы должны ссылаться на роль с ключом ansible-riak
.
Документация
Вся документация для этой роли включена в этот раздел README.
Переменные
Все переменные, которые можно использовать в этой роли, можно найти в файле переменных по умолчанию. Чтобы переопределить любую из переменных по умолчанию, вам достаточно задать их в разделе vars:
вашего файла playbook.yml или создать свою собственную роль, определяющую эту роль как зависимость, используя те же имена переменных, что и в этой роли.
Шаблоны
В настоящее время в роли включены четыре шаблона. Самый важный — это riak.conf.j2
шаблон, так как он настраивает операционные параметры для Riak KV. Если у вас есть специфические требования к работе вашего кольца, которые значительно отличаются от конфигурации дистрибутива, вы можете переопределить этот шаблон своим собственным.
Есть два способа переопределить шаблон по умолчанию:
- Переопределите переменную riak_conf_template и укажите абсолютный / относительный путь к шаблону на локальной системе
- Создайте новую роль, которая определяет эту роль как зависимость, и сохраните ваш файл шаблона в директории templates, используя то же самое имя файла, что и шаблон, который вы хотите переопределить, в данном случае
riak.conf.j2
Примеры
Переопределение переменных по умолчанию через Playbook
---
- 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 вступить в кластер, указав ведущего кольца. С этой ролью существует два способа сделать это. Через командный модуль и инструмент командной строки 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 для получения информации о тестировании и стандартах кодирования.
План
- В данный момент ничего не запланировано.
Лицензия и Авторы
- Автор: Брайан Хант (https://github.com/binarytemple)
- Автор: Кристофер Мансини (https://github.com/christophermancini)
Copyright (c) 2016 Basho Technologies, Inc. Лицензировано по лицензии Apache License, Version 2.0 (далее "Лицензия"). Для получения дополнительных деталей смотрите Лицензию.
Installs and configures Riak KV and TS, a distributed, highly available NoSQL and TimeSeries database.
ansible-galaxy install 1it/ansible-role-riak