# ansible-galaxy collection install ansible.posix
# ansible-galaxy collection install community.general
# ansible-galaxy collection install gluster.gluster
#
---
- name: glusterfs installation
hosts: glusterfs
become: true
tasks:
- name: glusterfs repository installation
ansible.builtin.dnf:
name: centos-release-gluster10
state: latest
- name: glusterfs repository file preparation
ansible.builtin.blockinfile:
path: /etc/yum.repos.d/CentOS-Gluster-10.repo
block: |
[centos-gluster11]
name=CentOS-$releasever - Gluster 10
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=$releasever&repo=storage-gluster-10
baseurl=https://dl.rockylinux.org/vault/centos/8.5.2111/storage/x86_64/aarch64/gluster-10/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage
- name: glusterfs installation
ansible.builtin.dnf:
name: "{{ item }}"
state: latest
with_items:
- glusterfs
- glusterfs-libs
- glusterfs-server
- name: glusterfs service traffic permit over firewalld
ansible.posix.firewalld:
service: glusterfs
permanent: true
immediate: true
state: enabled
- name: glusterfs service start and enable
ansible.builtin.systemd:
name: "{{ item }}"
state: started
enabled: true
with_items:
- glusterd.service
- glusterfsd.service
- name: glusterfs a trusted storage pool create
gluster.gluster.gluster_peer:
state: present
nodes:
- gl1.domain.local
- gl2.domain.local
- gl3.domain.local
run_once: true
- name: glusterfs primary partition create
community.general.parted:
device: /dev/sdb
number: 1
flags: [ lvm ]
state: present
part_end: 100%
- name: GlusterFS volume group (vg_gfs) create
community.general.lvg:
vg: vg_gfs
pvs: /dev/sdb1
- name: GlusterFS logical volume (lv_gfs) create
community.general.lvol:
lv: lv_gfs
vg: vg_gfs
pvs: /dev/sdb1
size: 100%FREE
- name: XFS filesystem create
community.general.filesystem:
fstype: xfs
dev: "{{ item }}"
state: mounted
with_items:
- /dev/vg_gfs/lv_gfs
- name: glusterfs lvm mount
ansible.posix.mount:
src: /dev/mapper/vg_gfs-lv_gfs
path: /data/gfs/
fstype: xfs
state: mounted
- name: glusterfs brick directory create
ansible.builtin.file:
path: /data/storage/brick
state: directory
run_once: true
- name: glusterfs storage volume create
gluster.gluster.gluster_volume:
name: storage
state: present
bricks: /data/storage/brick
rebalance: yes
force: true
cluster:
- gl1.domain.local
- gl2.domain.local
- gl3.domain.local
run_once: true
- name: glusterfs storage volume start
gluster.gluster.gluster_volume:
name: storage
state: started
- name: /storage mountpoint creation
ansible.builtin.file:
path: /storage
state: directory
mode: '0755'
run_once: true
- name: glusterfs storage volume mount
ansible.posix.mount:
src: "localhost:storage"
path: /storage
fstype: glusterfs
state: mounted
...