fix: wait for cloud-init before package install during bootstrap
Deploy Cluster / Terraform (push) Successful in 29s
Deploy Cluster / Ansible (push) Failing after 2m36s

Fresh Ubuntu cloud-init clones still hold apt and dpkg locks during first boot,
which caused the Ansible common role to fail before the control plane could
finish bootstrap. Wait for cloud-init, increase apt lock timeouts, and skip the
final kubeconfig rewrite when no kubeconfig was fetched yet.
This commit is contained in:
2026-04-22 03:34:53 +00:00
parent 9482a0f551
commit 9a2d213114
2 changed files with 20 additions and 0 deletions
+14
View File
@@ -1,12 +1,25 @@
---
- name: Check if cloud-init is installed
command: which cloud-init
register: cloud_init_binary
changed_when: false
failed_when: false
- name: Wait for cloud-init to finish first-boot tasks
command: cloud-init status --wait
changed_when: false
when: cloud_init_binary.rc == 0
- name: Update apt cache
apt:
update_cache: true
cache_valid_time: 3600
lock_timeout: 600
- name: Upgrade packages
apt:
upgrade: dist
lock_timeout: 600
when: common_upgrade_packages | default(false)
- name: Install required packages
@@ -23,6 +36,7 @@
- htop
- vim
state: present
lock_timeout: 600
- name: Disable swap
command: swapoff -a
+6
View File
@@ -148,10 +148,16 @@
hosts: localhost
connection: local
tasks:
- name: Check whether kubeconfig was fetched
stat:
path: ../outputs/kubeconfig
register: kubeconfig_file
- name: Update kubeconfig server address
command: |
sed -i 's/127.0.0.1/{{ hostvars[groups["control_plane"][0]]["ansible_host"] }}/g' ../outputs/kubeconfig
changed_when: true
when: kubeconfig_file.stat.exists
- name: Display success message
debug: