40 lines
1.8 KiB
Markdown
40 lines
1.8 KiB
Markdown
# Matrixtest-IaC-Ansible
|
|
This ansible playbook creates a three node cluster in openstack.
|
|
|
|
In this case a microk8s cluster.
|
|
|
|
The following tasks is executed by this playbook.
|
|
- Creates a custom security group with rules to accept traffic between the nodes.
|
|
- Create an os volume from the debian-12 image.
|
|
- Create an snap volume to be used as an LVM volume for easy resize and mounted on /lib/snap.
|
|
- Query all security groups in the project.
|
|
- Create an network port for each node and use a selection of the queried security groups.
|
|
- Create an instance with os volume, snap volume and port attached and a custom cloudinit config.
|
|
|
|
Install ansible on a host with access to the openstack api endpoints.
|
|
Run "ansible-galaxy -vv collection install openstack.cloud" to install the ansible openstack.cloud plugin.
|
|
Auth is provided to the playbook by environment variables.
|
|
Source the rc file of app credentials for the desired openstack project.
|
|
To apply the config run "ansible-playbook main.yaml"
|
|
|
|
## Cloudinit config.
|
|
|
|
Cloudinit does the following tasks.
|
|
- Install tools for LVM2,XFS and the Chronyd ntp sevice.
|
|
- Configure Chronyd to use netnod.se as a source.
|
|
- Configure a lvol_snap LVM volume and format it with XFS.
|
|
- Add a mount record of the lvm volume in fstab and verifies it.
|
|
|
|
## Expansion of volume by online resize
|
|
|
|
To expand the attached snap volume first query the api version of the volume endpoint from the management node and set the new size of the volume.
|
|
- curl -L https://v2.api.dco.safedc.net:8776/ | jq '.versions[1].version' # Returns 3.60
|
|
- openstack --os-volume-api-version 3.60 volume set --size 30 6f1a238d-f746-4604-92c9-0985ad4b83fd
|
|
|
|
From inside the instance run the following commands.
|
|
- sudo pvresize /dev/sdb
|
|
- sudo lvresize -l +100%FREE snapvg/lvol_snap
|
|
- sudo xfs_growfs /dev/snapvg/lvol_snap
|
|
|
|
Now we have expanded the mounted device with zero downtime.
|