From 4c1c224710b1db1720dd05a61e50263f4c74a901 Mon Sep 17 00:00:00 2001 From: "Brad P. Crochet" Date: Tue, 14 Nov 2023 13:39:36 -0500 Subject: [PATCH] Split install and cleanup tasks for ACM This is a PoC for splitting out the install and cleanup tasks. This should be a backward-compatible change. If no role_mode is specified then the default mode is to just run the assessment as it was before. Signed-off-by: Brad P. Crochet --- .../defaults/main.yml | 2 + .../tasks/cleanup.yml | 17 ++++++ .../tasks/install.yml | 33 +++++++++++ .../tasks/main.yml | 59 ++++--------------- 4 files changed, 63 insertions(+), 48 deletions(-) create mode 100644 roles/advanced_cluster_management/defaults/main.yml create mode 100644 roles/advanced_cluster_management/tasks/cleanup.yml create mode 100644 roles/advanced_cluster_management/tasks/install.yml diff --git a/roles/advanced_cluster_management/defaults/main.yml b/roles/advanced_cluster_management/defaults/main.yml new file mode 100644 index 0000000..b5db985 --- /dev/null +++ b/roles/advanced_cluster_management/defaults/main.yml @@ -0,0 +1,2 @@ +--- +install_mode: '' diff --git a/roles/advanced_cluster_management/tasks/cleanup.yml b/roles/advanced_cluster_management/tasks/cleanup.yml new file mode 100644 index 0000000..98a9a0e --- /dev/null +++ b/roles/advanced_cluster_management/tasks/cleanup.yml @@ -0,0 +1,17 @@ +--- +- name: Clean up operand + kubernetes.core.k8s: + state: absent + api_version: operator.open-cluster-management.io/v1 + kind: MultiClusterHub + name: multiclusterhub + namespace: "open-cluster-management" + wait: true + wait_sleep: 30 + wait_timeout: 600 +- name: Delete open-cluster-management namespace + kubernetes.core.k8s: + name: open-cluster-management + api_version: v1 + kind: Namespace + state: absent diff --git a/roles/advanced_cluster_management/tasks/install.yml b/roles/advanced_cluster_management/tasks/install.yml new file mode 100644 index 0000000..2332b1b --- /dev/null +++ b/roles/advanced_cluster_management/tasks/install.yml @@ -0,0 +1,33 @@ +--- +- name: Install and report + block: + - name: Create open-cluster-management namespace + kubernetes.core.k8s: + name: open-cluster-management + api_version: v1 + kind: Namespace + state: present + - name: Create multiclusterhub CR in target_namespace and wait + kubernetes.core.k8s: + state: present + namespace: "open-cluster-management" + definition: + apiVersion: operator.open-cluster-management.io/v1 + kind: MultiClusterHub + metadata: + name: multiclusterhub + spec: + disableHubSelfManagement: true + availabilityConfig: Basic + wait: true + wait_condition: + reason: ComponentsAvailable + status: 'True' + type: Complete + wait_sleep: 30 + wait_timeout: 600 + register: acm_result + always: + - name: Report result + ansible.builtin.set_fact: + assessment_result: "{{ 'pass' if (acm_result.result.status.phase is defined and acm_result.result.status.phase == 'Running') else 'fail' }}" diff --git a/roles/advanced_cluster_management/tasks/main.yml b/roles/advanced_cluster_management/tasks/main.yml index f0ccf9d..e1a37cf 100644 --- a/roles/advanced_cluster_management/tasks/main.yml +++ b/roles/advanced_cluster_management/tasks/main.yml @@ -1,49 +1,12 @@ --- -- name: Install and report - block: - - name: Create open-cluster-management namespace - kubernetes.core.k8s: - name: open-cluster-management - api_version: v1 - kind: Namespace - state: present - - name: Create multiclusterhub CR in target_namespace and wait - kubernetes.core.k8s: - state: present - namespace: "open-cluster-management" - definition: - apiVersion: operator.open-cluster-management.io/v1 - kind: MultiClusterHub - metadata: - name: multiclusterhub - spec: - disableHubSelfManagement: true - availabilityConfig: Basic - wait: true - wait_condition: - reason: ComponentsAvailable - status: 'True' - type: Complete - wait_sleep: 30 - wait_timeout: 600 - register: acm_result - always: - - name: Report result - ansible.builtin.set_fact: - assessment_result: "{{ 'pass' if (acm_result.result.status.phase is defined and acm_result.result.status.phase == 'Running') else 'fail' }}" -- name: Clean up operand - kubernetes.core.k8s: - state: absent - api_version: operator.open-cluster-management.io/v1 - kind: MultiClusterHub - name: multiclusterhub - namespace: "open-cluster-management" - wait: true - wait_sleep: 30 - wait_timeout: 600 -- name: Delete open-cluster-management namespace - kubernetes.core.k8s: - name: open-cluster-management - api_version: v1 - kind: Namespace - state: absent +- name: Install and assess operand + ansible.builtin.include_tasks: install.yml + when: role_mode == 'install' or role_mode == '' + tags: + - install + +- name: Cleanup operator + ansible.builtin.include_tasks: cleanup.yml + when: role_mode == 'cleanup' or role_mode == '' + tags: + - cleanup