diff --git a/ansible/roles/ccm/tasks/main.yml b/ansible/roles/ccm/tasks/main.yml index 9c41163..ac662ae 100644 --- a/ansible/roles/ccm/tasks/main.yml +++ b/ansible/roles/ccm/tasks/main.yml @@ -24,10 +24,46 @@ command: kubectl apply -f https://raw.githubusercontent.com/hetznercloud/hcloud-cloud-controller-manager/main/deploy/ccm-networks.yaml changed_when: true -- name: Wait for CCM pods to be ready +- name: Detect CCM workload kind + shell: | + if kubectl -n hetzner-cloud-system get deployment hcloud-cloud-controller-manager >/dev/null 2>&1; then + echo deployment + elif kubectl -n hetzner-cloud-system get daemonset hcloud-cloud-controller-manager >/dev/null 2>&1; then + echo daemonset + else + echo missing + fi + register: ccm_workload_kind + changed_when: false + +- name: Wait for CCM deployment rollout command: kubectl rollout status deployment/hcloud-cloud-controller-manager -n hetzner-cloud-system - register: ccm_rollout - until: ccm_rollout.rc == 0 + register: ccm_rollout_deploy + until: ccm_rollout_deploy.rc == 0 changed_when: false retries: 30 delay: 10 + when: ccm_workload_kind.stdout == "deployment" + +- name: Wait for CCM daemonset rollout + command: kubectl rollout status daemonset/hcloud-cloud-controller-manager -n hetzner-cloud-system + register: ccm_rollout_ds + until: ccm_rollout_ds.rc == 0 + changed_when: false + retries: 30 + delay: 10 + when: ccm_workload_kind.stdout == "daemonset" + +- name: Show CCM namespace objects when workload missing + command: kubectl -n hetzner-cloud-system get all + register: ccm_ns_objects + changed_when: false + when: ccm_workload_kind.stdout == "missing" + +- name: Fail when CCM workload is missing + fail: + msg: | + hcloud-cloud-controller-manager workload not found after applying manifest. + Namespace objects: + {{ ccm_ns_objects.stdout | default('n/a') }} + when: ccm_workload_kind.stdout == "missing"