--- - name: Check if Hetzner CCM is already deployed command: kubectl get namespace hetzner-cloud-system register: ccm_namespace failed_when: false changed_when: false - name: Create Hetzner CCM namespace command: kubectl create namespace hetzner-cloud-system when: ccm_namespace.rc != 0 changed_when: true - name: Create Hetzner cloud secret shell: | kubectl -n hetzner-cloud-system create secret generic hcloud \ --from-literal=token='{{ hcloud_token }}' \ --from-literal=network='{{ cluster_name }}-network' \ --dry-run=client -o yaml | kubectl apply -f - no_log: true when: hcloud_token is defined changed_when: true - name: Deploy Hetzner CCM 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 command: kubectl rollout status deployment/hcloud-cloud-controller-manager -n hetzner-cloud-system register: ccm_rollout until: ccm_rollout.rc == 0 changed_when: false retries: 30 delay: 10