diff --git a/roles/k3s_agent/tasks/http_proxy.yml b/roles/k3s_agent/tasks/http_proxy.yml index d4943e2..7575e9c 100644 --- a/roles/k3s_agent/tasks/http_proxy.yml +++ b/roles/k3s_agent/tasks/http_proxy.yml @@ -1,5 +1,4 @@ --- - - name: Create k3s-node.service.d directory file: path: '{{ systemd_dir }}/k3s-node.service.d' @@ -7,7 +6,7 @@ owner: root group: root mode: '0755' - + when: proxy_env is defined - name: Copy K3s http_proxy conf file template: @@ -16,3 +15,4 @@ owner: root group: root mode: '0755' + when: proxy_env is defined diff --git a/roles/k3s_agent/tasks/main.yml b/roles/k3s_agent/tasks/main.yml index 3146697..3ab1b7f 100644 --- a/roles/k3s_agent/tasks/main.yml +++ b/roles/k3s_agent/tasks/main.yml @@ -1,19 +1,35 @@ --- +- name: Check for PXE-booted system + block: + - name: Check if system is PXE-booted + ansible.builtin.command: + cmd: cat /proc/cmdline + register: boot_cmdline + changed_when: false + check_mode: false + + - name: Set fact for PXE-booted system + ansible.builtin.set_fact: + is_pxe_booted: "{{ 'root=/dev/nfs' in boot_cmdline.stdout }}" + when: boot_cmdline.stdout is defined + + - name: Include http_proxy configuration tasks + ansible.builtin.include_tasks: http_proxy.yml - name: Deploy K3s http_proxy conf include_tasks: http_proxy.yml when: proxy_env is defined -- name: Copy K3s service file - template: +- name: Configure the k3s service + ansible.builtin.template: src: "k3s.service.j2" dest: "{{ systemd_dir }}/k3s-node.service" owner: root group: root - mode: 0755 + mode: '0755' -- name: Enable and check K3s service - systemd: +- name: Manage k3s service + ansible.builtin.systemd: name: k3s-node daemon_reload: true state: restarted diff --git a/roles/k3s_agent/templates/k3s.service.j2 b/roles/k3s_agent/templates/k3s.service.j2 index 3be92e3..dac88de 100644 --- a/roles/k3s_agent/templates/k3s.service.j2 +++ b/roles/k3s_agent/templates/k3s.service.j2 @@ -7,11 +7,14 @@ After=network-online.target Type=notify ExecStartPre=-/sbin/modprobe br_netfilter ExecStartPre=-/sbin/modprobe overlay -ExecStart=/usr/local/bin/k3s agent --server https://{{ apiserver_endpoint | ansible.utils.ipwrap }}:6443 --token {{ hostvars[groups[group_name_master | default('master')][0]]['token'] | default(k3s_token) }} {{ extra_agent_args | default("") }} +# Conditional snapshotter based on PXE boot status +ExecStart=/usr/local/bin/k3s agent \ + --server https://{{ apiserver_endpoint | ansible.utils.ipwrap }}:6443 \ + {% if is_pxe_booted | default(false) %}--snapshotter native \ + {% endif %}--token {{ hostvars[groups[group_name_master | default('master')][0]]['token'] | default(k3s_token) }} \ + {{ extra_agent_args | default("") }} KillMode=process Delegate=yes -# Having non-zero Limit*s causes performance problems due to accounting overhead -# in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=1048576 LimitNPROC=infinity LimitCORE=infinity