107 lines
3.5 KiB
YAML
107 lines
3.5 KiB
YAML
---
|
|
- 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 != 'nenya'
|
|
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 == 'nenya'
|
|
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
|