Skip to content

Commit

Permalink
feat: SLES15 enablement, HAE detection
Browse files Browse the repository at this point in the history
  • Loading branch information
marcelmamula committed Feb 14, 2024
1 parent 82c3964 commit c33cc43
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 19 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ An Ansible role for managing High Availability Clustering.

* Compatible OS
* RHEL 8.3+, Fedora 31+
* SLES 15 SP4+ with HA extension, SLES4SAP 15 SP4+
* SLES 15 SP5+ with HA extension, SLES4SAP 15 SP5+
* Systems running RHEL are expected to be registered and have High-Availability
repositories accessible, and ResilientStorage repositories accessible if using
`ha_cluster_enable_repos_resilient_storage`
Expand Down
6 changes: 3 additions & 3 deletions tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
when:
- ha_cluster_enable_repos

- name: Check and prepare role variables
include_tasks: shell_{{ ha_cluster_pacemaker_shell }}/check-and-prepare-role-variables.yml # yamllint disable-line rule:line-length

- name: Install role essential packages
package:
name: "{{
Expand All @@ -18,9 +21,6 @@
use: "{{ (__ha_cluster_is_ostree | d(false)) |
ternary('ansible.posix.rhel_rpm_ostree', omit) }}"

- name: Check and prepare role variables
include_tasks: shell_{{ ha_cluster_pacemaker_shell }}/check-and-prepare-role-variables.yml # yamllint disable-line rule:line-length

# The user is created by installing pacemaker packages. We just need to set the
# password.
- name: Set hacluster password
Expand Down
38 changes: 24 additions & 14 deletions tasks/shell_crmsh/check-and-prepare-role-variables.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,30 @@
---
- name: Check cluster configuration variables
block:
# High Availability Extension is required for cluster setup as well
# as qnetd/qdevice configuration.
- name: Gather package facts
ansible.builtin.package_facts:
manager: auto

- name: Check High Availability Extension presence using product file
ansible.builtin.stat:
path: /etc/products.d/sle-ha.prod
register: __ha_cluster_ha_ext_stat

# Registering HA Extension creates file /etc/products.d/sle-ha.prod and
# installs rpm sle-ha-release. Cluster software is not installed.
- name: Assert that High Availability Extension is present
ansible.builtin.assert:
that:
- "'sle-ha-release' in ansible_facts.packages"
- __ha_cluster_ha_ext_stat.stat.exists
success_msg: "High Availability Extension was detected."
fail_msg: "High Availability Extension is not registered!
Register HA Extension before executing again."
# Fatal fail will occur if any of cluster nodes is missing HAE
any_errors_fatal: true

- name: Fail if passwords are not specified
ansible.builtin.fail:
msg: "{{ item }} must be specified"
Expand Down Expand Up @@ -59,20 +83,6 @@
loop: "{{ ha_cluster_stonith_levels }}"
run_once: true

- name: Collect service information
ansible.builtin.service_facts:

- name: Assert that required services are available
ansible.builtin.assert:
that: "'{{ item }}' in ansible_facts.services"
fail_msg: >-
The service '{{ item }}' was not found on this system. Ensure that this
service is available before running this role.
success_msg: >-
The service '{{ item }}' was discovered on this system.
loop:
- 'logd.service'

- name: Discover cluster node names
ansible.builtin.set_fact:
__ha_cluster_node_name: "{{ ha_cluster.node_name | d(inventory_hostname) }}"
Expand Down
5 changes: 5 additions & 0 deletions tasks/shell_crmsh/cluster-destroy-crm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
selectattr('stat.exists', 'equalto', false) | list | length > 0
changed_when: true

- name: Populate service facts
ansible.builtin.service_facts:

# Conditional added to skip qdevice in case qdevice was not configured
- name: Stop cluster daemons
ansible.builtin.service:
name: "{{ item }}"
Expand All @@ -23,6 +27,7 @@
- pacemaker
- corosync
- corosync-qdevice
when: item in ansible_facts.services

- name: Backup configuration files by renaming to _backup
ansible.builtin.copy:
Expand Down
7 changes: 7 additions & 0 deletions tasks/shell_crmsh/cluster-setup-corosync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@
check_mode: false
changed_when: not ansible_check_mode

# Gather facts for corosync template creation
- name: Gather facts for corosync template
ansible.builtin.setup:
filter:
- eth0
- eth1

- name: Generate corosync.conf using template
ansible.builtin.template:
src: crmsh_corosync.j2
Expand Down
6 changes: 5 additions & 1 deletion vars/Suse.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ ha_cluster_pacemaker_shell: crmsh
# Placeholder with pcs name
__ha_cluster_pcs_provider: crm

# ClusterTools2 removed because it is SLES4SAP specific
# patterns-ha-ha_sles requires SLES 15 SP5+ or SLES4SAP 15
__ha_cluster_role_essential_packages:
- 'pacemaker'
- 'corosync'
Expand All @@ -16,11 +18,13 @@ __ha_cluster_role_essential_packages:
- 'cluster-glue'
- 'socat'
- 'libxml2-tools'
- 'ClusterTools2'
- 'rsyslog'

__ha_cluster_fullstack_node_packages: []

__ha_cluster_qdevice_node_packages:
- corosync-qdevice

__ha_cluster_sbd_packages:
- sbd
- open-iscsi
Expand Down

0 comments on commit c33cc43

Please sign in to comment.