--- - name: Install required packages ansible.builtin.apt: update_cache: yes name: - software-properties-common - curl - git state: present - name: Add Kubernetes APT keyring ansible.builtin.apt_key: url: https://pkgs.k8s.io/core:/stable:/{{ kubernetes_version }}/deb/Release.key state: present register: apt_keyring_result until: apt_keyring_result is succeeded retries: 5 delay: 10 ignore_errors: yes - name: Add Kubernetes APT repository ansible.builtin.lineinfile: path: /etc/apt/sources.list.d/kubernetes.list line: 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/{{ kubernetes_version }}/deb/ /' create: yes ignore_errors: yes - name: Add CRI-O APT keyring ansible.builtin.shell: | curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/{{ project_path }}/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg ignore_errors: yes until: apt_keyring_result.rc == 0 retries: 5 delay: 10 - name: Add CRI-O APT repository ansible.builtin.lineinfile: path: /etc/apt/sources.list.d/cri-o.list line: 'deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/{{ project_path }}/deb/ /' create: yes ignore_errors: yes - name: Install Kubernetes components and CRI-O ansible.builtin.apt: update_cache: yes name: - cri-o - kubelet - kubeadm - kubectl state: latest - name: Start CRI-O service ansible.builtin.systemd: name: crio state: started enabled: yes - name: Disable swap ansible.builtin.shell: swapoff -a notify: Apply sysctl settings - name: Load br_netfilter module ansible.builtin.modprobe: name: br_netfilter state: present - name: Enable IP forwarding ansible.builtin.sysctl: name: net.ipv4.ip_forward value: '1' state: present reload: yes - name: Configure kubelet for external cloud provider ansible.builtin.lineinfile: path: /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf regexp: '^ExecStart=.*' line: 'ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS --cloud-provider=external' backrefs: yes - name: Reload systemd daemon to apply kubelet configuration changes ansible.builtin.systemd: daemon_reload: yes - name: Restart kubelet to apply external cloud provider configuration ansible.builtin.service: name: kubelet state: restarted