--- - name: Copy K3s service file register: k3s_service template: src: "k3s.service.j2" dest: "{{ systemd_dir }}/k3s.service" owner: root group: root mode: 0644 - name: Copy Traefik customization ansible.builtin.copy: src: traefik.yaml dest: /var/lib/rancher/k3s/server/manifests/traefik-config.yaml owner: root group: root mode: 0644 - name: Render control plain config ansible.builtin.template: src: cp-config.yaml.j2 dest: /etc/rancher/k3s/config.yaml owner: root group: root mode: 0644 - name: Enable and check K3s service systemd: name: k3s daemon_reload: true state: restarted enabled: true - name: Wait for node-token wait_for: path: "{{ k3s_server_location }}/server/node-token" - name: Register node-token file access mode stat: path: "{{ k3s_server_location }}/server/node-token" register: p - name: Change file access node-token file: path: "{{ k3s_server_location }}/server/node-token" mode: "g+rx,o+rx" - name: Read node-token from control-plane slurp: path: "{{ k3s_server_location }}/server/node-token" register: node_token - name: Store control-plane node-token set_fact: token: "{{ node_token.content | b64decode | regex_replace('\n', '') }}" - name: Restore node-token file access file: path: "{{ k3s_server_location }}/server/node-token" mode: "{{ p.stat.mode }}" - name: Create directory .kube file: path: ~{{ ansible_user }}/.kube state: directory owner: "{{ ansible_user }}" mode: "u=rwx,g=rx,o=" - name: Copy config file to user home directory copy: src: /etc/rancher/k3s/k3s.yaml dest: ~{{ ansible_user }}/.kube/config remote_src: yes owner: "{{ ansible_user }}" mode: "u=rw,g=,o=" - name: Replace https://localhost:6443 by https://master-ip:6443 command: >- k3s kubectl config set-cluster default --server=https://{{ master_ip }}:6443 --kubeconfig ~{{ ansible_user }}/.kube/config changed_when: true - name: Create kubectl symlink file: src: /usr/local/bin/k3s dest: /usr/local/bin/kubectl state: link - name: Create crictl symlink file: src: /usr/local/bin/k3s dest: /usr/local/bin/crictl state: link