- name: Initialise Master and Worker Nodes hosts: all tasks: - name: Enable IPv4 forwarding ansible.posix.sysctl: name: net.ipv4.ip_forward value: 1 sysctl_set: true - name: Enable Kernel Modules community.general.modprobe: name: "{{ item }}" persistent: present loop: - br_netfilter - dm-crypt - name: Ensure /sys mount is set to shared for container runtimes block: - name: Remount /sys as shared immediately ansible.builtin.command: mount --make-rshared {{ item }} loop: - / - /sys - /run changed_when: false - name: Create Alpine local.d script for permanent shared mount ansible.builtin.copy: dest: /etc/local.d/mount-shared.start content: | #!/bin/sh mount --make-rshared / mount --make-rshared /sys mount --make-rshared /run owner: root group: root mode: '0755' - name: Ensure Alpine local service is enabled on boot ansible.builtin.service: name: local enabled: true runlevel: default - name: Install tools ansible.builtin.package: name: "{{ item }}" state: present loop: - htop - name: Install kubectl, kubelet, kubeadm and containerd ansible.builtin.package: name: "{{ item }}" state: present loop: - kubectl - kubeadm - kubelet - containerd - cni-plugins - helm - open-iscsi - name: Start kubelet and containerd ansible.builtin.service: name: "{{ item }}" enabled: true state: started loop: - kubelet - containerd - iscsid - name: Add /opt/cni/bin to containerd CNI binary directories ansible.builtin.replace: path: /etc/containerd/config.toml regexp: "bin_dirs = \\['/usr/libexec/cni'\\]" replace: "bin_dirs = ['/opt/cni/bin', '/usr/libexec/cni']" notify: Restart containerd handlers: - name: Restart containerd ansible.builtin.service: name: containerd state: restarted