--- - name: Cluster Installation hosts: kubernetes become: true gather_facts: true any_errors_fatal: true pre_tasks: - name: Pausing for 2 seconds... ansible.builtin.pause: seconds: 2 tasks: - name: Check if cluster is installed check_mode: false ansible.builtin.stat: path: /etc/rancher/k3s/config.yaml register: k3s_installed - name: Ignore manifests templates and urls if the cluster is already installed when: k3s_installed.stat.exists ansible.builtin.set_fact: k3s_server_manifests_templates: [] k3s_server_manifests_urls: [] - name: Install Kubernetes ansible.builtin.include_role: name: xanmanning.k3s public: true vars: k3s_state: installed - name: Kubeconfig ansible.builtin.include_tasks: tasks/kubeconfig.yaml vars: repository_base: "{{ lookup('ansible.builtin.pipe', 'git rev-parse --show-toplevel') }}" - name: Wait for custom manifests to rollout when: - k3s_primary_control_node - (k3s_server_manifests_templates | length > 0 or k3s_server_manifests_urls | length > 0) kubernetes.core.k8s_info: kubeconfig: /etc/rancher/k3s/k3s.yaml kind: "{{ item.kind }}" name: "{{ item.name }}" namespace: "{{ item.namespace | default('') }}" wait: true wait_sleep: 10 wait_timeout: 360 loop: - { name: cilium, kind: HelmChart, namespace: kube-system } - { name: coredns, kind: HelmChart, namespace: kube-system } - { name: policy, kind: CiliumL2AnnouncementPolicy } - { name: pool, kind: CiliumLoadBalancerIPPool } - { name: podmonitors.monitoring.coreos.com, kind: CustomResourceDefinition } - { name: prometheusrules.monitoring.coreos.com, kind: CustomResourceDefinition } - { name: scrapeconfigs.monitoring.coreos.com, kind: CustomResourceDefinition } - { name: servicemonitors.monitoring.coreos.com, kind: CustomResourceDefinition } - name: Coredns when: k3s_primary_control_node ansible.builtin.include_tasks: tasks/coredns.yaml - name: Cilium when: k3s_primary_control_node ansible.builtin.include_tasks: tasks/cilium.yaml - name: Cruft when: k3s_primary_control_node ansible.builtin.include_tasks: tasks/cruft.yaml - name: Stale Containers ansible.builtin.include_tasks: tasks/stale_containers.yaml vars: stale_containers_state: disabled # - name: Helm controller # notify: Restart Kubernetes # when: k3s_control_node # ansible.builtin.include_tasks: tasks/helm_controller.yaml # TODO: Replace this with embedded spegel in the future - name: Copy custom containerd configuration when: inventory_hostname != 'temp' notify: Restart Kubernetes ansible.builtin.copy: src: files/config.toml.tmpl dest: /var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl owner: root group: root mode: "0644" - name: Copy custom containerd configuration when: inventory_hostname == 'temp' notify: Restart Kubernetes ansible.builtin.copy: src: files/config.nvidia.toml.tmpl dest: /var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl owner: root group: root mode: "0644" handlers: - name: Restart Kubernetes ansible.builtin.systemd: name: k3s state: restarted