ansible_cache/home_linux/k3s_stuff/install_k3s.yml
2024-12-27 12:47:45 +00:00

163 lines
4.6 KiB
YAML
Executable File

---
- 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)