{% set _k3s_server_line_needed = (k3s_role != 'server') or ((k3s_role == 'server') and (not (k3s_cluster_init | bool)) and (k3s_server_url is defined) and k3s_server_url) %} {% if k3s_role == 'server' and k3s_cluster_init | bool %} cluster-init: true {% endif %} {% if _k3s_server_line_needed %} server: "{{ k3s_server_url }}" {% endif %} {% set _k3s_effective_token = k3s_token %} {% if k3s_role == 'server' and (k3s_server_token is defined) and k3s_server_token %} {% set _k3s_effective_token = k3s_server_token %} {% endif %} {% if _k3s_effective_token %} token: "{{ _k3s_effective_token }}" {% endif %} {% if k3s_role == 'server' and k3s_datastore_endpoint is defined and k3s_datastore_endpoint | length %} datastore-endpoint: "{{ k3s_datastore_endpoint }}" {% if k3s_datastore_cafile is defined and k3s_datastore_cafile | length %} datastore-cafile: "{{ k3s_datastore_cafile }}" {% endif %} {% if k3s_datastore_certfile is defined and k3s_datastore_certfile | length %} datastore-certfile: "{{ k3s_datastore_certfile }}" {% endif %} {% if k3s_datastore_keyfile is defined and k3s_datastore_keyfile | length %} datastore-keyfile: "{{ k3s_datastore_keyfile }}" {% endif %} {% endif %} {% if k3s_role == 'server' and k3s_write_kubeconfig_mode %} write-kubeconfig-mode: "{{ k3s_write_kubeconfig_mode }}" {% endif %} {% if k3s_role == 'server' and k3s_kubeconfig_group %} write-kubeconfig-group: "{{ k3s_kubeconfig_group }}" {% endif %} {% if k3s_tls_sans | length %} tls-san: {% for item in k3s_tls_sans %} - "{{ item }}" {% endfor %} {% endif %} {% if k3s_role == 'server' and k3s_disable | length %} disable: {% for item in k3s_disable %} - "{{ item }}" {% endfor %} {% endif %} {% if k3s_disable_agent | bool %} disable-agent: true {% endif %} {% if k3s_data_dir is defined and k3s_data_dir %} data-dir: "{{ k3s_data_dir }}" {% endif %} {% if k3s_node_labels | length %} node-label: {% for item in k3s_node_labels %} - "{{ item }}" {% endfor %} {% endif %} {% if k3s_node_taints | length %} node-taint: {% for item in k3s_node_taints %} - "{{ item }}" {% endfor %} {% endif %} {# --- kube-apiserver tuning (request/etcd timeouts) --- #} {% if k3s_kube_apiserver_args is defined and k3s_kube_apiserver_args | length %} kube-apiserver-arg: {% for item in k3s_kube_apiserver_args %} - "{{ item }}" {% endfor %} {% endif %} {# --- Control-plane leader election tuning (forgiving leases) --- #} {% if k3s_kube_controller_manager_args is defined and k3s_kube_controller_manager_args | length %} kube-controller-manager-arg: {% for item in k3s_kube_controller_manager_args %} - "{{ item }}" {% endfor %} {% endif %} {% if k3s_kube_scheduler_args is defined and k3s_kube_scheduler_args | length %} kube-scheduler-arg: {% for item in k3s_kube_scheduler_args %} - "{{ item }}" {% endfor %} {% endif %} {% if k3s_cloud_controller_manager_args is defined and k3s_cloud_controller_manager_args | length %} kube-cloud-controller-manager-arg: {% for item in k3s_cloud_controller_manager_args %} - "{{ item }}" {% endfor %} {% endif %} {# --- Embedded etcd tuning (optional) --- #} {% if k3s_etcd_args is defined and k3s_etcd_args | length %} etcd-arg: {% for item in k3s_etcd_args %} - "{{ item }}" {% endfor %} {% endif %} {# --- kubelet tuning (node housekeeping/heartbeats) --- #} {% if k3s_kubelet_args is defined and k3s_kubelet_args | length %} kubelet-arg: {% for item in k3s_kubelet_args %} - "{{ item }}" {% endfor %} {% endif %} {% if k3s_node_ip is defined and k3s_node_ip %} node-ip: "{{ k3s_node_ip }}" {% endif %} {% if k3s_flannel_iface is defined and k3s_flannel_iface %} flannel-iface: "{{ k3s_flannel_iface }}" {% endif %}