--- argument_specs: main: description: >- This role makes several assumptions about the local storage configuration of the server: 1. There is one block device on the server that will be used for data storage 2. That block device will be joined to a glusterfs volume 3. The block device is encrypted with LUKS This role mostly serves to perform housekeeping tasks and validation of expected configs. Automating disk configuration seems like a really good way to lose all my data, so I decided to leave that to the much more reliable manual configuration for the time being. To that end, here is a quick cheatsheet of commands that might be useful in setting up storage device(s) for this role (replace `DEVICE` with the block device for storage): ```bash # Encrypt a block device, provide encryption key when prompted cryptsetup luksFormat --type luks2 /dev/DEVICE # Unlock encrypted block device and mount under a mapper cryptsetup luksOpen /dev/DEVICE LABEL # Lock an encrypted block device cryptsetup luksClose LABEL # Create and format a partition on the encrypted block device mkfs.xfs /dev/mapper/LABEL -L LABEL # Run from an existing server already in the gluster pool # Add server to the gluster pool gluster peer probe HOSTNAME # To replace a brick from an already offline'd node, the old brick first needs to be force # removed, replication reduced, and (if arbiter is enabled) any arbiter nodes removed # # Remove arbiter brick gluster volume remove-brick VOLUME replica 2 HOSTNAME:/EXPORT force # Remove dead data brick gluster volume remove-brick VOLUME replica 1 HOSTNAME:/EXPORT force # Remove dead node gluster peer detach HOSTNAME # Add new data brick gluster volume add-brick VOLUME replica 2 HOSTNAME:/EXPORT start # # To re-add the arbiter you might need to clean up the `.glusterfs` directory and remove # directory parametes from the old brick. These next commands need to be run on the host # with the arbiter brick physically attached # rm -rf /EXPORT/.glusterfs setfattr -x trusted.gfid /EXPORT setfattr -x trusted.glusterfs.volume-id /EXPORT # Re-add arbiter brick gluster volume add-brick VOLUME replica 3 arbiter 1 HOSTNAME:/EXPORT # Trigger a resync gluster volume heal datastore # General gluster debug info gluster volume info VOLUME gluster volume status VOLUME ``` options: skylab_datastore_device: description: The block device under `/dev/` that should be configured as datastore storage type: str required: true