--- - name: Install K3s on Raspberries hosts: kubernetes roles: - common become: yes gather_facts: yes vars: k3s_global_env: - key: K3S_KUBECONFIG_MODE value: 644 - key: INSTALL_K3S_EXEC value: --disable traefik --disable servicelb k3s_worker_env: - key: K3S_URL value: "https://{{ groups.kube_masters[0] }}:6443" tasks: # Make sure "cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory" is added to the end # of /boot/cmdline.txt before running this playbook - name: Add install parameters for all nodes to /etc/environment ansible.builtin.lineinfile: dest: /etc/environment state: present regexp: "^{{ item.key }}=" line: "{{ item.key }}={{ item.value }}" with_items: "{{ k3s_global_env }}" when: ('kube_masters' in group_names) - name: Reset SSH connection to make new environment variables available ansible.builtin.meta: reset_connection - name: Download K3s install script ansible.builtin.get_url: url: https://get.k3s.io dest: ./install-k3s.sh mode: '0755' - name: Install K3s on master node ansible.builtin.command: cmd: ./install-k3s.sh become: no when: ('kube_masters' in group_names) - name: Save cluster token to file on master ansible.builtin.shell: sudo cat /var/lib/rancher/k3s/server/node-token > token when: ('kube_masters' in group_names) register: token - name: Copy token to local controller ansible.builtin.fetch: dest: buffer/ src: ./token flat: yes when: ('kube_masters' in group_names) run_once: yes - name: Copy token file to workers ansible.builtin.copy: src: buffer/token dest: ./token when: ('kube_workers' in group_names) - name: Load token as host variable on workers ansible.builtin.command: cmd: cat token register: token when: ('kube_workers' in group_names) - name: Add token to worker node's /etc/environment ansible.builtin.lineinfile: dest: "/etc/environment" state: present line: "K3S_TOKEN={{ token.stdout }}" when: ('kube_workers' in group_names) - name: Add install parameters for worker node to /etc/environment ansible.builtin.lineinfile: dest: "/etc/environment" state: present regexp: "^{{ item.key }}=" line: "{{ item.key }}={{ item.value }}" with_items: "{{ k3s_worker_env }}" when: ('kube_workers' in group_names) - name: Reset SSH connection to make new environment variables available ansible.builtin.meta: reset_connection - name: Install K3s on worker nodes ansible.builtin.command: cmd: ./install-k3s.sh become: no when: ('kube_workers' in group_names) - name: Cleanup install files ansible.builtin.command: cmd: rm install-k3s.sh token - name: Fix permissions for config file on master node ansible.builtin.file: path: /etc/rancher/k3s/k3s.yaml owner: "{{ ansible_user }}" group: "{{ ansible_user }}" when: ('kube_masters' in group_names) - name: Generate config file in ~/.kube/config ansible.builtin.shell: cat /etc/rancher/k3s/k3s.yaml > ~/.kube/config become: no when: ('kube_masters' in group_names) - name: Fix permissions for config file on master node ansible.builtin.file: path: ~/.kube/config mode: '0600' become: no when: ('kube_masters' in group_names) - name: Replace localhost references in config file ansible.builtin.replace: path: ~/.kube/config regexp: '(127\.0\.0\.1)' replace: "{{ ansible_host }}" become: no when: ('kube_masters' in group_names) - name: Get K3s service status ansible.builtin.command: cmd: sudo systemctl status k3s register: status when: ('kube_masters' in group_names) - name: Print K3s service status ansible.builtin.debug: var: status.stdout_lines when: ('kube_masters' in group_names) - name: Pause for 10 seconds to allow cluster setup to complete ansible.builtin.pause: seconds: 10 - name: Get K3s cluster nodes ansible.builtin.command: cmd: kubectl get nodes register: status when: ('kube_masters' in group_names) - name: Print K3s cluster nodes ansible.builtin.debug: var: status.stdout_lines when: ('kube_masters' in group_names) - name: Get K3s cluster status ansible.builtin.command: cmd: kubectl get all -A -o wide register: status when: ('kube_masters' in group_names) - name: Print K3s cluster status ansible.builtin.debug: var: status.stdout_lines when: ('kube_masters' in group_names)