63 lines
1.3 KiB
YAML
63 lines
1.3 KiB
YAML
---
|
|
# K3s — lightweight Kubernetes for single-node AI workloads
|
|
- name: Check if K3s is already installed
|
|
stat:
|
|
path: /usr/local/bin/k3s
|
|
register: k3s_binary
|
|
|
|
- name: Install K3s
|
|
shell: |
|
|
curl -sfL https://get.k3s.io | \
|
|
INSTALL_K3S_EXEC="--disable traefik --disable servicelb" sh -
|
|
when: not k3s_binary.stat.exists
|
|
retries: 3
|
|
delay: 10
|
|
|
|
- name: Wait for K3s to be ready
|
|
wait_for:
|
|
path: /etc/rancher/k3s/k3s.yaml
|
|
timeout: 120
|
|
|
|
- name: Enable and start K3s
|
|
systemd:
|
|
name: k3s
|
|
enabled: yes
|
|
state: started
|
|
|
|
- name: Create .kube directory for cezen
|
|
file:
|
|
path: /opt/cezen/.kube
|
|
state: directory
|
|
owner: cezen
|
|
group: cezen
|
|
|
|
- name: Copy kubeconfig for cezen user
|
|
copy:
|
|
src: /etc/rancher/k3s/k3s.yaml
|
|
dest: /opt/cezen/.kube/config
|
|
owner: cezen
|
|
group: cezen
|
|
mode: "0600"
|
|
remote_src: yes
|
|
|
|
- name: Set KUBECONFIG in cezen .bashrc
|
|
lineinfile:
|
|
path: /opt/cezen/.bashrc
|
|
line: 'export KUBECONFIG=/opt/cezen/.kube/config'
|
|
create: yes
|
|
owner: cezen
|
|
|
|
- name: Install kubectl alias for cezen
|
|
lineinfile:
|
|
path: /opt/cezen/.bashrc
|
|
line: "alias kubectl='k3s kubectl'"
|
|
create: yes
|
|
owner: cezen
|
|
|
|
- name: Verify K3s node is ready
|
|
command: k3s kubectl get nodes
|
|
register: k3s_nodes
|
|
retries: 5
|
|
delay: 10
|
|
until: k3s_nodes.rc == 0
|