Shareable Ansible roles used for multiple use cases inside Basho.
- Prerequisites
- Role Dependencies
- Installation
- Client Library Environments
- Playbook Examples
- Contributing
- License and Authors
- Ansible v2.1 or higher
This collection of roles has various dependencies that can all be retrieved from Ansible Galaxy using the following command line:
ansible-galaxy install -r requirements.yml
There are a few ways you can use the roles from this repository.
- Option A is to include this repository as an entry in your projects requirements.yml e.g. example
- Option B is to use these roles as the primary set of roles for your playbooks by cloning this repo as
roles
within the same directory as your playbooks. - Option C is to include these in addition to your primary roles and define the path to these roles within your
ansible.cfg
file using the optionroles_path
.
- PHP
- Go
- Ruby
- Java
- NodeJS
- Python
- .NET
- Erlang
The following are several examples of how to use these Ansible roles in your environment
Install / configure Riak via PackageCloud & Execute client library tests
---
- hosts: localhost
become: true
become_method: sudo
roles:
- {
role: riak_testing,
riak_conf_template: '/vagrant/ansible-roles/riak_testing/templates/riak.conf.j2',
riak_node_name: "[email protected]",
}
- {
role: client_smoke_tests,
ct_test_libs: ['go','java','php','ruby','nodejs']
}
vars:
riak_search: 'on'
riak_backend: 'multi'
riak_pb_bind_ip: 127.0.0.1
# setup Riak environment (bucket-types, users, sources, grants, conf)
riak_bucket_types:
- { name: bitcask, props: '{"props":{"backend":"bitcask_backend"}}' }
- { name: counters, props: '{"props":{"datatype":"counter"}}' }
- { name: hlls, props: '{"props":{"datatype":"hll"}}' }
- { name: leveldb_type, props: '' }
- { name: maps, props: '{"props":{"datatype":"map"}}' }
- { name: memory_type, props: '{"props":{"backend":"mem_backend"}}' }
- { name: mr, props: '' }
- { name: no_siblings, props: '{"props":{"allow_mult":"false"}}' }
- { name: other_counters, props: '{"props":{"datatype":"counter"}}' }
- { name: plain, props: '' }
- { name: search_type, props: '' }
- { name: sets, props: '{"props":{"datatype":"set"}}' }
- { name: write_once, props: '{"props":{"write_once":true}}' }
- { name: yokozuna, props: '' }
# PHP Testing Buckets
- { name: phptest_counters, props: '{"props":{"datatype":"counter"}}' }
- { name: phptest_leveldb, props: '' }
- { name: phptest_maps, props: '{"props":{"datatype":"map"}}' }
- { name: phptest_search, props: '' }
- { name: phptest_sets, props: '{"props":{"datatype":"set"}}' }
Execute client library tests against existing Riak instance / cluster
---
- hosts: localhost
become: true
become_method: sudo
roles:
- {
role: client_smoke_tests,
ct_test_libs: ['go','java','php','ruby','nodejs'],
ct_riak_host: 'myriakcluster.local.com',
ct_riak_port: 8087,
ct_riak_http_port: 8098
}
---
- hosts: localhost
become: true
become_method: sudo
roles:
- {
role: riak_testing,
riak_conf_template: '/vagrant/ansible-roles/riak_testing/templates/riak.conf.j2',
riak_node_name: "[email protected]",
}
- {
role: client_smoke_tests,
ct_test_libs: ['go','java','php','ruby','nodejs']
}
vars:
riak_package: 'riak-ts'
riak_shell_group: 'riak-ts'
ct_cmd: cmdts
riak_search: 'on'
riak_backend: 'multi'
riak_pb_bind_ip: 127.0.0.1
# setup Riak environment (bucket-types, users, sources, grants, conf)
riak_bucket_types:
#- { name: bitcask, props: '{"props":{"backend":"bitcask_backend"}}' }
- { name: counters, props: '{"props":{"datatype":"counter"}}' }
- { name: leveldb_type, props: '' }
- { name: maps, props: '{"props":{"datatype":"map"}}' }
- { name: mr, props: '' }
- { name: no_siblings, props: '{"props":{"allow_mult":"false"}}' }
- { name: other_counters, props: '{"props":{"datatype":"counter"}}' }
- { name: plain, props: '' }
- { name: search_type, props: '' }
- { name: sets, props: '{"props":{"datatype":"set"}}' }
- { name: write_once, props: '{"props":{"write_once":true}}' }
- { name: yokozuna, props: '' }
# TS
- { name: GeoCheckin, props: '{"props": {"n_val": 3, "table_def": "CREATE TABLE GeoCheckin (geohash varchar not null, user varchar not null, time timestamp not null, weather varchar not null, temperature double, PRIMARY KEY((geohash, user, quantum(time, 15, m)), geohash, user, time))"}}' }
- { name: GeoCheckin_Wide, props: '{"props": {"n_val": 3, "table_def": "CREATE TABLE GeoCheckin_Wide (geohash varchar not null, user varchar not null, time timestamp not null, weather varchar not null, temperature double, uv_index sint64, observed boolean not null, PRIMARY KEY((geohash, user, quantum(time, 15, m)), geohash, user, time))"}}' }
- { name: WeatherByRegion, props: '{"props": {"n_val": 3, "table_def": "CREATE TABLE WeatherByRegion (region varchar not null, state varchar not null, time timestamp not null, weather varchar not null, temperature double, uv_index sint64, observed boolean not null, PRIMARY KEY((region, state, quantum(time, 15, m)), region, state, time))"}}' }
---
- hosts: localhost
become: true
become_method: sudo
roles:
- {
role: riak_testing,
riak_conf_template: '/vagrant/ansible-roles/riak_testing/templates/riak.conf.j2',
riak_node_name: "[email protected]",
}
- {
role: client_smoke_tests,
ct_test_libs: ['go','java','php','ruby','nodejs']
}
vars:
riak_package: 'riak-ts'
riak_shell_group: 'riak-ts'
ct_cmd: cmdts
riak_search: 'on'
riak_backend: 'multi'
riak_pb_bind_ip: 127.0.0.1
riak_security_enabled: true
riak_testing_certs_dir: '/vagrant/tools/test-ca'
# setup Riak environment (bucket-types, users, sources, grants, conf)
riak_bucket_types:
- { name: bitcask, props: '{"props":{"backend":"bitcask_backend"}}' }
- { name: counters, props: '{"props":{"datatype":"counter"}}' }
- { name: hlls, props: '{"props":{"datatype":"hll"}}' }
- { name: leveldb_type, props: '' }
- { name: maps, props: '{"props":{"datatype":"map"}}' }
- { name: memory_type, props: '{"props":{"backend":"mem_backend"}}' }
- { name: mr, props: '' }
- { name: no_siblings, props: '{"props":{"allow_mult":"false"}}' }
- { name: other_counters, props: '{"props":{"datatype":"counter"}}' }
- { name: plain, props: '' }
- { name: search_type, props: '' }
- { name: sets, props: '{"props":{"datatype":"set"}}' }
- { name: write_once, props: '{"props":{"write_once":true}}' }
- { name: yokozuna, props: '' }
# PHP Testing Buckets
- { name: phptest_counters, props: '{"props":{"datatype":"counter"}}' }
- { name: phptest_leveldb, props: '' }
- { name: phptest_maps, props: '{"props":{"datatype":"map"}}' }
- { name: phptest_search, props: '' }
- { name: phptest_sets, props: '{"props":{"datatype":"set"}}' }
riak_users:
- {user: 'riakuser', password: '', cert: '', groups: ''}
- {user: 'riakpass', password: 'Test1234', cert: '', groups: ''}
- {user: 'riakadmin', password: '', cert: '', groups: 'admins'}
- {user: 'riakdeveloper', password: '', cert: '', groups: 'developers'}
riak_groups:
- admins
- developers
riak_sources:
- {user: 'riakuser', type: 'certificate', cidr: '0.0.0.0/0'}
- {user: 'riakpass', type: 'password', cidr: '0.0.0.0/0'}
riak_grants:
- {subject: 'riakuser', scope: 'any', permissions: '{{ it_permissions|join(",")}}'}
- {subject: 'riakpass', scope: 'any', permissions: '{{ it_permissions|join(",")}}'}
Basho Labs repos survive because of community contribution. Review the details in CONTRIBUTING.md in order to give back to this project.
The riak-zend-zray project is Open Source software released under the Apache 2.0 License. Please see the LICENSE file for full license details.
- Author: Christopher Mancini