diff --git a/inventory/group_vars/all.yaml b/inventory/group_vars/all.yaml index ebfd8d3..e321410 100644 --- a/inventory/group_vars/all.yaml +++ b/inventory/group_vars/all.yaml @@ -45,3 +45,30 @@ sso_admin_pw: !vault | 61613464386132393937353435326462643633623361353362396239363033323136643363333537 3363613032633664370a326635383463623931353133653665653039643762613434643465633466 3232 + +# --------------------------- +# NetApp related informations + +netapp_username: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 39383636316637303163376365356162336139343561313330633363333537393338356339363963 + 3138393034356136353863643030323435643632316339310a393632316365393661323062623561 + 31643137323662653862336261323933373562353962343638656366613231623933313233326266 + 6130333062616263300a313636646433663730303661613931326333626637363535666564663665 + 3637 + +netapp_password: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 36353865653462303431386165366638623865326565623732326139333261356132323139373739 + 6437633634613931383464643036323262343166346663660a316563346133626438306239616363 + 62376430333737356264366233646633656535613637393539316332626461633237663039313164 + 6362306133373665350a653561613136353032393232383064353437313134396535643934633466 + 3031 + +netapp_managementLIF: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 32373234333932326239633862386533316335663733323966353433366639333034623364363937 + 6637333464396432636239626136633063366336373438380a373735303031636432626339366263 + 63383431623764393735633335333332343162333566613831633961313137383364346331653639 + 3438393231336230390a383634333933613333396331303032616263303033326363313639623539 + 3164 \ No newline at end of file diff --git a/roles/feature-netapp-trident/defaults/main.yaml b/roles/feature-netapp-trident/defaults/main.yaml new file mode 100644 index 0000000..d61fdb7 --- /dev/null +++ b/roles/feature-netapp-trident/defaults/main.yaml @@ -0,0 +1,3 @@ +--- +netapp_trident_version: 24.10.0 + diff --git a/roles/feature-netapp-trident/files/24.10.0/bundle_post_1_25.yaml b/roles/feature-netapp-trident/files/24.10.0/bundle_post_1_25.yaml new file mode 100644 index 0000000..15566d4 --- /dev/null +++ b/roles/feature-netapp-trident/files/24.10.0/bundle_post_1_25.yaml @@ -0,0 +1,493 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: operator.trident.netapp.io + name: trident-operator + namespace: netapp-trident +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + labels: + app: operator.trident.netapp.io + name: trident-operator +rules: + # Permissions same as Trident + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + - apiGroups: + - "" + resources: + - persistentvolumes + - persistentvolumeclaims + verbs: + - get + - list + - watch + - create + - delete + - update + - patch + - apiGroups: + - "" + resources: + - persistentvolumeclaims/status + verbs: + - update + - patch + - apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - get + - list + - watch + - create + - delete + - update + - patch + - apiGroups: + - "" + resources: + - events + verbs: + - get + - list + - watch + - create + - update + - patch + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - list + - watch + - create + - delete + - update + - patch + - apiGroups: + - "" + resources: + - resourcequotas + verbs: + - get + - list + - watch + - create + - delete + - update + - patch + - apiGroups: + - "" + resources: + - pods + verbs: + - get + - list + - watch + - create + - delete + - update + - patch + - apiGroups: + - "" + resources: + - pods/log + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - watch + - update + - apiGroups: + - storage.k8s.io + resources: + - volumeattachments + verbs: + - get + - list + - watch + - update + - patch + - apiGroups: + - storage.k8s.io + resources: + - volumeattachments/status + verbs: + - update + - patch + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshots + - volumesnapshotclasses + verbs: + - get + - list + - watch + - update + - patch + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshotclasses + verbs: + - create + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshots/status + - volumesnapshotcontents/status + verbs: + - update + - patch + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshotcontents + verbs: + - get + - list + - watch + - create + - delete + - update + - patch + - apiGroups: + - csi.storage.k8s.io + resources: + - csidrivers + - csinodeinfos + verbs: + - get + - list + - watch + - create + - delete + - update + - patch + - apiGroups: + - storage.k8s.io + resources: + - csidrivers + - csinodes + verbs: + - get + - list + - watch + - create + - delete + - update + - patch + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - get + - list + - watch + - create + - delete + - update + - patch + - apiGroups: + - trident.netapp.io + resources: + - tridentversions + - tridentbackends + - tridentstorageclasses + - tridentvolumes + - tridentvolumepublications + - tridentvolumereferences + - tridentnodes + - tridenttransactions + - tridentsnapshots + - tridentbackendconfigs + - tridentbackendconfigs/status + - tridentmirrorrelationships + - tridentmirrorrelationships/status + - tridentactionmirrorupdates + - tridentactionmirrorupdates/status + - tridentsnapshotinfos + - tridentsnapshotinfos/status + - tridentactionsnapshotrestores + - tridentactionsnapshotrestores/status + - tridentprovisioners # Required for Tprov + - tridentprovisioners/status # Required to update Tprov's status section + - tridentorchestrators # Required for Torc + - tridentorchestrators/status # Required to update Torc's status section + - tridentconfigurators # Required for tconf + - tridentconfigurators/status # Required to update tconf's status section + verbs: + - get + - list + - watch + - create + - delete + - update + - patch + - apiGroups: + - policy + resources: + - podsecuritypolicies + verbs: + - use + resourceNames: + - tridentpods + # Now Operator specific permissions + - apiGroups: + - "" + resources: + - namespaces + verbs: + - create + - patch + - apiGroups: + - apps + resources: + - deployments + - daemonsets + - statefulsets + verbs: + - get + - list + - watch + - create + - apiGroups: + - apps + resources: + - deployments + - statefulsets + verbs: + - delete + - update + - patch + resourceNames: + - trident + - trident-csi + - trident-controller + - apiGroups: + - apps + resources: + - daemonsets + verbs: + - delete + - update + - patch + resourceNames: + - trident + - trident-csi + - trident-csi-windows + - trident-node-linux + - trident-node-windows + - apiGroups: + - "" + resources: + - pods/exec + - services + - serviceaccounts + verbs: + - get + - list + - create + - apiGroups: + - "" + resources: + - pods/exec + - services + verbs: + - delete + - update + - patch + resourceNames: + - trident-csi + - trident + - apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - delete + - update + - patch + resourceNames: + - trident-controller + - trident-node-linux + - trident-node-windows + - trident-csi + - trident + - apiGroups: + - authorization.openshift.io + - rbac.authorization.k8s.io + resources: + - roles + - rolebindings + - clusterroles + - clusterrolebindings + verbs: + - list + - create + - apiGroups: + - authorization.openshift.io + - rbac.authorization.k8s.io + resources: + - roles + - rolebindings + - clusterroles + - clusterrolebindings + verbs: + - delete + - update + - patch + resourceNames: + - trident-controller + - trident-node-linux + - trident-node-windows + - trident-csi + - trident + - apiGroups: + - policy + resources: + - podsecuritypolicies + verbs: + - list + - create + - apiGroups: + - policy + resources: + - podsecuritypolicies + resourceNames: + - tridentpods + verbs: + - delete + - update + - patch + - apiGroups: + - security.openshift.io + resources: + - securitycontextconstraints + verbs: + - get + - list + - create + - apiGroups: + - security.openshift.io + resources: + - securitycontextconstraints + resourceNames: + - trident-controller + - trident-node-linux + - trident-node-windows + - trident + verbs: + - delete + - update + - patch + - apiGroups: + - policy + resources: + - podsecuritypolicies + verbs: + - use + resourceNames: + - trident-controller + - trident-node-linux + - trident-node-windows + - tridentoperatorpods +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app: operator.trident.netapp.io + name: trident-operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: trident-operator +subjects: + - kind: ServiceAccount + name: trident-operator + namespace: netapp-trident +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: operator.trident.netapp.io + name: trident-operator + namespace: netapp-trident +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app: operator.trident.netapp.io + name: trident-operator + template: + metadata: + labels: + app: operator.trident.netapp.io + name: trident-operator + spec: + containers: + - command: + - /trident-operator + - --log-level=debug + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: OPERATOR_NAME + value: trident-operator + image: netapp/trident-operator:24.10.0 + imagePullPolicy: IfNotPresent + name: trident-operator + resources: + requests: + cpu: "10m" + memory: "40Mi" + limits: + cpu: "20m" + memory: "80Mi" + securityContext: + capabilities: + drop: + - all + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/arch + operator: In + values: + - arm64 + - amd64 + - key: kubernetes.io/os + operator: In + values: + - linux + serviceAccountName: trident-operator diff --git a/roles/feature-netapp-trident/files/24.10.0/namespace.yaml b/roles/feature-netapp-trident/files/24.10.0/namespace.yaml new file mode 100644 index 0000000..bad46c1 --- /dev/null +++ b/roles/feature-netapp-trident/files/24.10.0/namespace.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: Namespace +metadata: + labels: + pod-security.kubernetes.io/enforce: privileged + name: trident diff --git a/roles/feature-netapp-trident/files/24.10.0/trident.netapp.io_tridentorchestrators_crd_post1.16.yaml b/roles/feature-netapp-trident/files/24.10.0/trident.netapp.io_tridentorchestrators_crd_post1.16.yaml new file mode 100644 index 0000000..f16b855 --- /dev/null +++ b/roles/feature-netapp-trident/files/24.10.0/trident.netapp.io_tridentorchestrators_crd_post1.16.yaml @@ -0,0 +1,25 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: tridentorchestrators.trident.netapp.io +spec: + group: trident.netapp.io + versions: + - name: v1 + served: true + storage: true + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + subresources: + status: {} + names: + kind: TridentOrchestrator + listKind: TridentOrchestratorList + plural: tridentorchestrators + singular: tridentorchestrator + shortNames: + - torc + - torchestrator + scope: Cluster diff --git a/roles/feature-netapp-trident/files/24.10.0/tridentorchestrator.yaml b/roles/feature-netapp-trident/files/24.10.0/tridentorchestrator.yaml new file mode 100644 index 0000000..4daf989 --- /dev/null +++ b/roles/feature-netapp-trident/files/24.10.0/tridentorchestrator.yaml @@ -0,0 +1,12 @@ +apiVersion: trident.netapp.io/v1 +kind: TridentOrchestrator +metadata: + name: trident +spec: + debug: false + namespace: netapp-trident + imagePullPolicy: IfNotPresent + tridentImage: quay.coe.muc.redhat.com/netapp/trident:24.10.0 + autosupportImage: quay.coe.muc.redhat.com/netapp/trident-autosupport:24.10.0 + windows: false + cloudProvider: "" diff --git a/roles/feature-netapp-trident/tasks/post-deploy-hcp.yaml b/roles/feature-netapp-trident/tasks/post-deploy-hcp.yaml new file mode 100644 index 0000000..f002347 --- /dev/null +++ b/roles/feature-netapp-trident/tasks/post-deploy-hcp.yaml @@ -0,0 +1,4 @@ +--- +- name: Not supported + ansible.builtin.fail: + msg: Not supported! \ No newline at end of file diff --git a/roles/feature-netapp-trident/tasks/post-deploy.yaml b/roles/feature-netapp-trident/tasks/post-deploy.yaml new file mode 100644 index 0000000..8f16b67 --- /dev/null +++ b/roles/feature-netapp-trident/tasks/post-deploy.yaml @@ -0,0 +1,300 @@ +--- +- name: Fetch kubeconfig from vault + ansible.builtin.include_role: + name: internal-fetch-kubeconfig + +- name: Create namespace + kubernetes.core.k8s: + kubeconfig: "{{ cluster_access_kubeconfig }}" + state: present + definition: + apiVersion: v1 + kind: Namespace + metadata: + labels: + pod-security.kubernetes.io/enforce: privileged + name: netapp-trident + +- name: Create CRD's + kubernetes.core.k8s: + kubeconfig: "{{ cluster_access_kubeconfig }}" + state: present + src: "{{ netapp_trident_version }}/trident.netapp.io_tridentorchestrators_crd_post1.16.yaml" + +- name: Create deploy operator + kubernetes.core.k8s: + kubeconfig: "{{ cluster_access_kubeconfig }}" + state: present + src: "{{ netapp_trident_version }}/bundle_post_1_25.yaml" + +- name: Apply TridentOrchestrator + kubernetes.core.k8s: + kubeconfig: "{{ cluster_access_kubeconfig }}" + state: present + src: "{{ netapp_trident_version }}/tridentorchestrator.yaml" + +- name: Apply SnapShotClass + kubernetes.core.k8s: + kubeconfig: "{{ cluster_access_kubeconfig }}" + state: present + definition: + apiVersion: snapshot.storage.k8s.io/v1 + kind: VolumeSnapshotClass + metadata: + name: coe-netapp + driver: csi.trident.netapp.io + deletionPolicy: Delete + +- name: Create secret with NetApp credentials + kubernetes.core.k8s: + kubeconfig: "{{ cluster_access_kubeconfig }}" + state: present + definition: + apiVersion: v1 + kind: Secret + metadata: + name: coe-netapp-svm-trident + namespace: netapp-trident + type: Opaque + data: + password: "{{ netapp_password | b64encode }}" + username: "{{ netapp_username | b64encode }}" + +# Meanwhile, apply the machineconfigs, and the operator can start and create CRD's +# Wait till CRD is next step after machineconfig roleout + +- name: Create MachineConfig/90-worker-iscsi-multipathing.yaml + register: worker_multipathing + kubernetes.core.k8s: + kubeconfig: "{{ cluster_access_kubeconfig }}" + state: present + definition: + # https://access.redhat.com/articles/7008552 + # https://docs.netapp.com/us-en/trident/trident-use/worker-node-prep.html#install-the-iscsi-tools + apiVersion: machineconfiguration.openshift.io/v1 + kind: MachineConfig + metadata: + labels: + machineconfiguration.openshift.io/role: worker + name: 90-worker-iscsi-multipathing + spec: + config: + ignition: + version: 3.4.0 + storage: + files: + - contents: + source: data:text/plain;charset=utf-8;base64,ZGVmYXVsdHMgewogICB1c2VyX2ZyaWVuZGx5X25hbWVzIG5vCiAgIGZpbmRfbXVsdGlwYXRocyBubwogICBlbmFibGVfZm9yZWlnbiAiXiQiCn0KCmJsYWNrbGlzdF9leGNlcHRpb25zIHsKICAgIHByb3BlcnR5ICIoU0NTSV9JREVOVF98SURfV1dOKSIKfQoKYmxhY2tsaXN0IHsKICAgIGRldm5vZGUgIl4ocmFtfHJhd3xsb29wfGZkfG1kfGRtLXxzcnxzY2R8c3QpWzAtOV0qIgogICAgZGV2bm9kZSAiXih0ZHxoYSlkW2Etel0iCiAgICBkZXZpY2UgewogICAgICAgIHZlbmRvciAgIkhQIgogICAgfQogICAgZGV2aWNlIHsKICAgICAgICB2ZW5kb3IgICJJbnRlbCIKICAgIH0KICAgIGRldmljZSB7CiAgICAgICAgdmVuZG9yICAiSEdTVCIKICAgIH0KICAgIGRldmljZSB7CiAgICAgICAgdmVuZG9yICAiREVMTCIKICAgIH0KICAgIGRldmljZSB7CiAgICAgICAgdmVuZG9yICAiSU5URUwiCiAgICB9CiAgICBkZXZpY2UgewogICAgICAgIHZlbmRvciAgIlFFTVUiCiAgICB9CiAgICBkZXZpY2UgewogICAgICAgIHZlbmRvciAgIk5WTUUiCiAgICB9Cn0K + filesystem: root + mode: 420 + path: /etc/multipath.conf + systemd: + units: + - name: iscsid.service + enabled: true + - name: iscsi.service + enabled: true + - name: multipathd.service + enabled: true + +- name: Wait for MachineConfigPool/worker to start Updating + when: worker_multipathing is changed + kubernetes.core.k8s_info: + kubeconfig: "{{ cluster_access_kubeconfig }}" + kind: MachineConfigPool + name: worker + api_version: machineconfiguration.openshift.io/v1 + wait: yes + wait_timeout: 300 + wait_condition: + type: Updating + status: True + +- name: Wait for MachineConfigPool/worker to stop Updating + when: worker_multipathing is changed +# Need hard retries here, as on SNO, API becomes unavailable during reboot, +# which makes the k8s_info module fail: + retries: 60 + delay: 10 + register: result + until: result is not failed + kubernetes.core.k8s_info: + kubeconfig: "{{ cluster_access_kubeconfig }}" + kind: MachineConfigPool + name: worker + api_version: machineconfiguration.openshift.io/v1 + wait: yes + wait_timeout: 10 + wait_condition: + type: Updating + status: False + +- name: Create MachineConfig/90-master-iscsi-multipathing.yaml + register: master_multipathing + kubernetes.core.k8s: + kubeconfig: "{{ cluster_access_kubeconfig }}" + state: present + definition: + # https://access.redhat.com/articles/7008552 + # https://docs.netapp.com/us-en/trident/trident-use/worker-node-prep.html#install-the-iscsi-tools + apiVersion: machineconfiguration.openshift.io/v1 + kind: MachineConfig + metadata: + labels: + machineconfiguration.openshift.io/role: master + name: 90-master-iscsi-multipathing + spec: + config: + ignition: + version: 3.4.0 + storage: + files: + - contents: + source: data:text/plain;charset=utf-8;base64,ZGVmYXVsdHMgewogICB1c2VyX2ZyaWVuZGx5X25hbWVzIG5vCiAgIGZpbmRfbXVsdGlwYXRocyBubwogICBlbmFibGVfZm9yZWlnbiAiXiQiCn0KCmJsYWNrbGlzdF9leGNlcHRpb25zIHsKICAgIHByb3BlcnR5ICIoU0NTSV9JREVOVF98SURfV1dOKSIKfQoKYmxhY2tsaXN0IHsKICAgIGRldm5vZGUgIl4ocmFtfHJhd3xsb29wfGZkfG1kfGRtLXxzcnxzY2R8c3QpWzAtOV0qIgogICAgZGV2bm9kZSAiXih0ZHxoYSlkW2Etel0iCiAgICBkZXZpY2UgewogICAgICAgIHZlbmRvciAgIkhQIgogICAgfQogICAgZGV2aWNlIHsKICAgICAgICB2ZW5kb3IgICJJbnRlbCIKICAgIH0KICAgIGRldmljZSB7CiAgICAgICAgdmVuZG9yICAiSEdTVCIKICAgIH0KICAgIGRldmljZSB7CiAgICAgICAgdmVuZG9yICAiREVMTCIKICAgIH0KICAgIGRldmljZSB7CiAgICAgICAgdmVuZG9yICAiSU5URUwiCiAgICB9CiAgICBkZXZpY2UgewogICAgICAgIHZlbmRvciAgIlFFTVUiCiAgICB9CiAgICBkZXZpY2UgewogICAgICAgIHZlbmRvciAgIk5WTUUiCiAgICB9Cn0K + filesystem: root + mode: 420 + path: /etc/multipath.conf + systemd: + units: + - name: iscsid.service + enabled: true + - name: iscsi.service + enabled: true + - name: multipathd.service + enabled: true + + +- name: Wait for MachineConfigPool/master to start Updating + when: master_multipathing is changed + kubernetes.core.k8s_info: + kubeconfig: "{{ cluster_access_kubeconfig }}" + kind: MachineConfigPool + name: master + api_version: machineconfiguration.openshift.io/v1 + wait: yes + wait_timeout: 300 + wait_condition: + type: Updating + status: True + +- name: Wait for MachineConfigPool/master to stop Updating + when: master_multipathing is changed +# Need hard retries here, as on SNO, API becomes unavailable during reboot, +# which makes the k8s_info module fail: + retries: 60 + delay: 10 + register: result + until: result is not failed + kubernetes.core.k8s_info: + kubeconfig: "{{ cluster_access_kubeconfig }}" + kind: MachineConfigPool + name: master + api_version: machineconfiguration.openshift.io/v1 + wait: yes + wait_timeout: 10 + wait_condition: + type: Updating + status: False + +- name: Wait till CRD tridentbackendconfigs is available + kubernetes.core.k8s_info: + kubeconfig: "{{ cluster_access_kubeconfig }}" + + api_version: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + name: tridentbackendconfigs.trident.netapp.io + wait: yes + wait_sleep: 10 + wait_timeout: 360 + +- name: Create TridentBackendConfig/coe-netapp-san + kubernetes.core.k8s: + kubeconfig: "{{ cluster_access_kubeconfig }}" + state: present + definition: + apiVersion: trident.netapp.io/v1 + kind: TridentBackendConfig + metadata: + name: coe-netapp-san + namespace: netapp-trident + spec: + version: 1 + storageDriverName: ontap-san-economy + managementLIF: "{{ netapp_managementLIF }}" + backendName: coe-netapp-san + storagePrefix: "stormshift_{{ inventory_hostname }}_" + credentials: + name: coe-netapp-svm-trident + +- name: Create TridentBackendConfig/coe-netapp-nas + kubernetes.core.k8s: + kubeconfig: "{{ cluster_access_kubeconfig }}" + state: present + definition: + apiVersion: trident.netapp.io/v1 + kind: TridentBackendConfig + metadata: + name: coe-netapp-nas + namespace: netapp-trident + spec: + version: 1 + storageDriverName: ontap-nas + managementLIF: "{{ netapp_managementLIF }}" + backendName: coe-netapp-nas + storagePrefix: "stormshift_{{ inventory_hostname }}_" + credentials: + name: coe-netapp-svm-trident + +- name: Create StorageClass/coe-netapp-san + kubernetes.core.k8s: + kubeconfig: "{{ cluster_access_kubeconfig }}" + state: present + definition: + apiVersion: storage.k8s.io/v1 + kind: StorageClass + metadata: + annotations: + storageclass.kubevirt.io/is-default-virt-class: "true" + name: coe-netapp-san + provisioner: csi.trident.netapp.io + parameters: + backendType: "ontap-san-economy" + fsType: "ext4" + mountOptions: + - discard + allowVolumeExpansion: true + +- name: Create StorageClass/coe-netapp-nas + kubernetes.core.k8s: + kubeconfig: "{{ cluster_access_kubeconfig }}" + state: present + definition: + apiVersion: storage.k8s.io/v1 + kind: StorageClass + metadata: + annotations: + storageclass.kubernetes.io/is-default-class: "true" + name: coe-netapp-nas + provisioner: csi.trident.netapp.io + parameters: + backendType: "ontap-nas" + provisioningType: "thin" + snapshots: "true" + +# - name: Apply ConsoleNotification +# kubernetes.core.k8s: +# kubeconfig: "{{ cluster_access_kubeconfig }}" +# state: present +# definition: +# apiVersion: console.openshift.io/v1 +# kind: ConsoleNotification +# metadata: +# name: "stormshift-{{ inventory_hostname }}" +# spec: +# backgroundColor: "{{ cluster_color }}" +# color: '#000' +# link: +# href: https://source.redhat.com/groups/public/solution-architects/stormshift/stormshift_wiki/current_status_of_stormshift_clusters +# text: Details +# location: BannerTop +# text: "\U0001F32A StormShift {{ inventory_hostname }} - Managed by {{ stormshift_owner_email |default('Anonymous')}}" \ No newline at end of file diff --git a/roles/feature-netapp-trident/tasks/pre-destroy-hcp.yaml b/roles/feature-netapp-trident/tasks/pre-destroy-hcp.yaml new file mode 100644 index 0000000..36fcbde --- /dev/null +++ b/roles/feature-netapp-trident/tasks/pre-destroy-hcp.yaml @@ -0,0 +1,4 @@ +------ +- name: Not supported + ansible.builtin.fail: + msg: Not supported! \ No newline at end of file diff --git a/roles/feature-netapp-trident/tasks/pre-destroy.yaml b/roles/feature-netapp-trident/tasks/pre-destroy.yaml new file mode 100644 index 0000000..f604254 --- /dev/null +++ b/roles/feature-netapp-trident/tasks/pre-destroy.yaml @@ -0,0 +1,14 @@ +--- +- name: Fetch kubeconfig from vault + ansible.builtin.include_role: + name: internal-fetch-kubeconfig + +# - name: Apply ConsoleNotification +# kubernetes.core.k8s: +# kubeconfig: "{{ cluster_access_kubeconfig }}" +# state: absent +# definition: +# apiVersion: console.openshift.io/v1 +# kind: ConsoleNotification +# metadata: +# name: "stormshift-{{ inventory_hostname }}"