ansible – glusterfs full playbook

# 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
...

Leave a Reply

Your email address will not be published. Required fields are marked *