---
- name: Coredns
  block:
    - name: Coredns | Check if Coredns HelmChart exists
      kubernetes.core.k8s_info:
        kubeconfig: /etc/rancher/k3s/k3s.yaml
        name: coredns
        kind: HelmChart
        namespace: kube-system
      register: coredns_helmchart

    - name: Coredns | Wait for Coredns to rollout
      when: coredns_helmchart.resources | count > 0
      kubernetes.core.k8s_info:
        kubeconfig: /etc/rancher/k3s/k3s.yaml
        name: helm-install-coredns
        kind: Job
        namespace: kube-system
        wait: true
        wait_condition:
          type: Complete
          status: true
        wait_timeout: 360

    - name: Coredns | Patch the Coredns HelmChart to unmanage it
      when: coredns_helmchart.resources | count > 0
      kubernetes.core.k8s_json_patch:
        kubeconfig: /etc/rancher/k3s/k3s.yaml
        name: coredns
        kind: HelmChart
        namespace: kube-system
        patch:
          - op: add
            path: /metadata/annotations/helmcharts.helm.cattle.io~1unmanaged
            value: "true"

    - name: Coredns | Delete the Coredns HelmChart CR
      when: coredns_helmchart.resources | count > 0
      kubernetes.core.k8s:
        kubeconfig: /etc/rancher/k3s/k3s.yaml
        name: coredns
        kind: HelmChart
        namespace: kube-system
        state: absent

    - name: Coredns | Force delete the Coredns HelmChart
      when: coredns_helmchart.resources | count > 0
      kubernetes.core.k8s:
        kubeconfig: /etc/rancher/k3s/k3s.yaml
        name: coredns
        kind: HelmChart
        namespace: kube-system
        state: patched
        definition:
          metadata:
            finalizers: []