https://github.com/linbit/linstor-ansible
Ansible playbook for quickly deploying a LINSTOR storage cluster
https://github.com/linbit/linstor-ansible
Last synced: over 1 year ago
JSON representation
Ansible playbook for quickly deploying a LINSTOR storage cluster
- Host: GitHub
- URL: https://github.com/linbit/linstor-ansible
- Owner: LINBIT
- License: apache-2.0
- Created: 2019-12-06T13:18:04.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-07-13T17:46:06.000Z (almost 3 years ago)
- Last Synced: 2025-02-13T00:33:49.931Z (over 1 year ago)
- Language: Jinja
- Size: 37.1 KB
- Stars: 9
- Watchers: 9
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# LINSTOR Ansible Playbook
Build a LINSTOR® cluster using Ansible. If you're unfamiliar with LINSTOR,
please refer to the
[Introduction to LINSTOR section](https://linbit.com/drbd-user-guide/linstor-guide-1_0-en/#p-linstor-introduction)
of the LINSTOR user's guide on https://linbit.com to learn more.
System requirements:
- An account at https://my.linbit.com (contact sales@linbit.com).
- Deployment environment must have Ansible `2.7.0+` and `python-netaddr`.
- All target systems must have passwordless SSH access.
- All hostnames used in the inventory file are resolvable (or use IP addresses).
- Target systems are RHEL 7/8/9 or Ubuntu 22.04 (or compatible variants).
# Usage
Add the target system information into the inventory file named `hosts.ini`.
For example:
```
[controller]
192.168.35.12
[satellite]
192.168.35.[10:11]
[linstor_cluster:children]
controller
satellite
[linstor_storage_pool]
192.168.35.[10:11]
```
You can add a `controller` node to the `satellite` node group which will
result in the node becoming a `Combined` node in the LINSTOR cluster. A
`Combined` node will function both as a `controller` and as a `satellite` node.
Add nodes to the `linstor_storage_pool` node group to contribute block storage
to the LINSTOR storage pool created by the playbook.
Also, before continuing, edit `group_vars/all.yaml` to configure the necessary
variables for the playbook. For example:
```
---
# Ansible variables
ansible_user: vagrant
ansible_ssh_private_key_file: ~/.vagrant.d/insecure_private_key
become: yes
# LINSTOR variables
drbd_backing_disk: /dev/sdb
drbd_replication_network: 192.168.222.0/24
# LINBIT portal variables
lb_user: "lbportaluser"
lb_pass: "lbportalpass"
lb_con_id: "1234"
lb_clu_id: "4321"
```
The `drbd_backing_disk` variable should be set to an unused block device that the
LINSTOR satellite nodes will use if the nodes are also a part of the
`storage-pool` node group. If you do not have an unused block device, do not add
the node to the `linstor_storage_pool` node group, and only a `file-thin`
storage-pool will be configured instead. The `drbd_replication_network` is the network,
in CIDR notation, that will be used by LINSTOR and DRBD. It is strongly recommended
that the `drbd_replication_network` be separate from the management network in
production systems to limit network traffic congestion, but it's not a hard requirement.
When ready, run the `site.yaml` playbook:
```sh
ansible-playbook site.yaml
```
If you don't want to put your LINBIT credentials into the `group_vars/all.yaml`, you
can run the playbook like this instead:
```sh
ansible-playbook -e lb_user="username" -e lb_pass="password" -e lb_con_id="1234" -e lb_clu_id="1234" site.yaml
```
Congratulations! You should now have successfully created a LINSTOR cluster using Ansible.
# Testing Installation
Shell into the controller node, and check that everything is setup:
```sh
linstor node list; linstor storage-pool list
```
Create and deploy a resource:
```sh
linstor resource-definition create test-res-0
linstor volume-definition create test-res-0 100MiB
linstor resource create \
$(linstor sp list | head -n4 | tail -n1 | cut -d"|" -f3 | sed 's/ //g') \
test-res-0 --storage-pool lvm-thin
linstor resource list
```
You should now have a DRBD device provisioned on a node in your cluster that you
can use as you would any other block device.
# Reference
For more information on LINSTOR - such as instructions for Kubernetes,
OpenStack, Docker, or other integration - refer to
[LINBIT's LINSTOR documentation](https://linbit.com/drbd-user-guide/linstor-guide-1_0-en/).