chore: move pxc into ansible role
diff --git a/atmosphere/flows.py b/atmosphere/flows.py
index 6fd57ab..d05a3e1 100644
--- a/atmosphere/flows.py
+++ b/atmosphere/flows.py
@@ -183,43 +183,6 @@
objects.HelmRepository(
api=api,
metadata=types.NamespacedObjectMeta(
- name=constants.HELM_REPOSITORY_PERCONA,
- namespace=constants.NAMESPACE_OPENSTACK,
- ),
- spec=types.HelmRepositorySpec(
- url="https://percona.github.io/percona-helm-charts/",
- ),
- ).apply()
- objects.HelmRelease(
- api=api,
- metadata=types.NamespacedObjectMeta(
- name=constants.HELM_RELEASE_PXC_OPERATOR_NAME,
- namespace=constants.NAMESPACE_OPENSTACK,
- ),
- spec=types.HelmReleaseSpec(
- chart=types.HelmChartTemplate(
- spec=types.HelmChartTemplateSpec(
- chart=constants.HELM_RELEASE_PXC_OPERATOR_NAME,
- version=constants.HELM_RELEASE_PXC_OPERATOR_VERSION,
- source_ref=types.CrossNamespaceObjectReference(
- kind="HelmRepository",
- name=constants.HELM_REPOSITORY_PERCONA,
- namespace=constants.NAMESPACE_OPENSTACK,
- ),
- )
- ),
- depends_on=[
- types.NamespacedObjectReference(
- name=constants.HELM_RELEASE_CERT_MANAGER_NAME,
- namespace=constants.NAMESPACE_CERT_MANAGER,
- )
- ],
- values=constants.HELM_RELEASE_PXC_OPERATOR_VALUES,
- ),
- ).apply()
- objects.HelmRepository(
- api=api,
- metadata=types.NamespacedObjectMeta(
name=constants.HELM_REPOSITORY_OPENSTACK_HELM_INFRA,
namespace=constants.NAMESPACE_OPENSTACK,
),
@@ -281,10 +244,6 @@
namespace=constants.NAMESPACE_OPENSTACK,
),
types.NamespacedObjectReference(
- name=constants.HELM_RELEASE_PXC_OPERATOR_NAME,
- namespace=constants.NAMESPACE_OPENSTACK,
- ),
- types.NamespacedObjectReference(
name="node-feature-discovery",
namespace=constants.NAMESPACE_MONITORING,
),
diff --git a/atmosphere/tasks/constants.py b/atmosphere/tasks/constants.py
index 5e99700..8999e60 100644
--- a/atmosphere/tasks/constants.py
+++ b/atmosphere/tasks/constants.py
@@ -594,15 +594,6 @@
"useCertManager": True,
}
-HELM_RELEASE_PXC_OPERATOR_NAME = "pxc-operator"
-HELM_RELEASE_PXC_OPERATOR_VERSION = "1.10.0"
-HELM_RELEASE_PXC_OPERATOR_VALUES = {
- "image": utils.get_image_ref_using_legacy_image_repository(
- "percona_xtradb_cluster_operator"
- ).string(),
- "nodeSelector": NODE_SELECTOR_CONTROL_PLANE,
-}
-
HELM_RELEASE_KEYSTONE_NAME = "keystone"
HELM_RELEASE_BARBICAN_NAME = "barbican"
diff --git a/roles/atmosphere/meta/main.yml b/roles/atmosphere/meta/main.yml
index 4d898e5..e676cd4 100644
--- a/roles/atmosphere/meta/main.yml
+++ b/roles/atmosphere/meta/main.yml
@@ -22,3 +22,6 @@
- name: Ubuntu
versions:
- focal
+
+dependencies:
+ - role: percona_xtradb_cluster_operator
diff --git a/roles/percona_xtradb_cluster_operator/README.md b/roles/percona_xtradb_cluster_operator/README.md
new file mode 100644
index 0000000..4f54747
--- /dev/null
+++ b/roles/percona_xtradb_cluster_operator/README.md
@@ -0,0 +1,6 @@
+# percona_xtradb_cluster_operator
+
+ This is a role which will deploy `pxc-operator` using Helm against a Kubernetes
+ cluster.
+
+ _NOTE_: This role is temporary until we add support for OLM.
diff --git a/roles/percona_xtradb_cluster_operator/defaults/main.yml b/roles/percona_xtradb_cluster_operator/defaults/main.yml
new file mode 100644
index 0000000..740006e
--- /dev/null
+++ b/roles/percona_xtradb_cluster_operator/defaults/main.yml
@@ -0,0 +1,9 @@
+percona_xtradb_cluster_operator_helm_repository_name: percona
+percona_xtradb_cluster_operator_helm_repository_url: https://percona.github.io/percona-helm-charts
+
+percona_xtradb_cluster_operator_helm_release_name: pxc-operator
+percona_xtradb_cluster_operator_helm_chart_name: pxc-operator
+percona_xtradb_cluster_operator_helm_chart_version: 1.10.0
+
+percona_xtradb_cluster_operator_helm_release_namespace: openstack
+percona_xtradb_cluster_operator_helm_values: {}
diff --git a/roles/percona_xtradb_cluster_operator/tasks/main.yml b/roles/percona_xtradb_cluster_operator/tasks/main.yml
new file mode 100644
index 0000000..136a86b
--- /dev/null
+++ b/roles/percona_xtradb_cluster_operator/tasks/main.yml
@@ -0,0 +1,41 @@
+- name: Configure Helm repository
+ run_once: true
+ kubernetes.core.helm_repository:
+ name: "{{ percona_xtradb_cluster_operator_helm_repository_name }}"
+ repo_url: "{{ percona_xtradb_cluster_operator_helm_repository_url }}"
+
+# NOTE(mnaser): We should get rid of this task eventually as it is suspending
+# the old HelmRelease and removing it to avoid uninstalling the
+# Helm chart.
+- name: Uninstall the legacy HelmRelease
+ run_once: true
+ block:
+ - name: Suspend the existing HelmRelease
+ kubernetes.core.k8s:
+ state: patched
+ api_version: helm.toolkit.fluxcd.io/v2beta1
+ kind: HelmRelease
+ name: pxc-operator
+ namespace: openstack
+ definition:
+ spec:
+ suspend: true
+
+ - name: Remove the existing HelmRelease
+ kubernetes.core.k8s:
+ state: absent
+ api_version: helm.toolkit.fluxcd.io/v2beta1
+ kind: HelmRelease
+ name: pxc-operator
+ namespace: openstack
+
+- name: Deploy Helm chart
+ run_once: true
+ kubernetes.core.helm:
+ name: "{{ percona_xtradb_cluster_operator_helm_release_name }}"
+ chart_ref: "{{ percona_xtradb_cluster_operator_helm_repository_name }}/{{ percona_xtradb_cluster_operator_helm_chart_name }}"
+ chart_version: "{{ percona_xtradb_cluster_operator_helm_chart_version }}"
+ release_namespace: "{{ percona_xtradb_cluster_operator_helm_release_namespace }}"
+ create_namespace: true
+ kubeconfig: /etc/kubernetes/admin.conf
+ values: "{{ _percona_xtradb_cluster_operator_helm_values | combine(percona_xtradb_cluster_operator_helm_values, recursive=True) }}"
diff --git a/roles/percona_xtradb_cluster_operator/vars/main.yml b/roles/percona_xtradb_cluster_operator/vars/main.yml
new file mode 100644
index 0000000..957706d
--- /dev/null
+++ b/roles/percona_xtradb_cluster_operator/vars/main.yml
@@ -0,0 +1,4 @@
+_percona_xtradb_cluster_operator_helm_values:
+ image: "{{ lookup('vexxhost.atmosphere.image_ref', 'percona_xtradb_cluster_operator', output='ref') }}"
+ nodeSelector:
+ openstack-control-plane: enabled