From c132c24145f34be27415b152bf15e1446ffca7b2 Mon Sep 17 00:00:00 2001 From: James Allenby Date: Tue, 23 Jun 2026 23:28:40 +0100 Subject: [PATCH] feat: add kubernetes roles --- ansible/inventories/incus/incus.yaml | 3 +++ ansible/roles/common/tasks/main.yaml | 2 +- ansible/roles/common/tasks/packages.yaml | 9 +++++---- ansible/roles/kubernetes_node/tasks/main.yaml | 9 +++++++++ .../roles/kubernetes_node/tasks/networking.yaml | 6 ++++++ ansible/roles/kubernetes_node/tasks/packages.yaml | 14 ++++++++++++++ ansible/roles/kubernetes_node/tasks/repo.yaml | 9 +++++++++ ansible/site.yaml | 7 ++++++- infra/main.tofu | 4 ++-- 9 files changed, 55 insertions(+), 8 deletions(-) create mode 100644 ansible/roles/kubernetes_node/tasks/main.yaml create mode 100644 ansible/roles/kubernetes_node/tasks/networking.yaml create mode 100644 ansible/roles/kubernetes_node/tasks/packages.yaml create mode 100644 ansible/roles/kubernetes_node/tasks/repo.yaml diff --git a/ansible/inventories/incus/incus.yaml b/ansible/inventories/incus/incus.yaml index 46c3ae0..36f90b2 100644 --- a/ansible/inventories/incus/incus.yaml +++ b/ansible/inventories/incus/incus.yaml @@ -3,3 +3,6 @@ plugin: community.general.incus strict: true remotes: - local:home-infrastructure +groups: + control_planes: "'master' in inventory_hostname" + workers: "'worker' in inventory_hostname" diff --git a/ansible/roles/common/tasks/main.yaml b/ansible/roles/common/tasks/main.yaml index f087a90..7271e9b 100644 --- a/ansible/roles/common/tasks/main.yaml +++ b/ansible/roles/common/tasks/main.yaml @@ -1,3 +1,3 @@ --- -- name: Install required provision packages +- name: Install required packages ansible.builtin.import_tasks: packages.yaml diff --git a/ansible/roles/common/tasks/packages.yaml b/ansible/roles/common/tasks/packages.yaml index 6737e0f..45b7e97 100644 --- a/ansible/roles/common/tasks/packages.yaml +++ b/ansible/roles/common/tasks/packages.yaml @@ -1,5 +1,6 @@ --- -- name: Upgrade all packages - ansible.builtin.package: - name: '*' - state: latest +- name: Install Python 3 Dependencies + ansible.builtin.apt: + pkg: + - python3-debian + state: present diff --git a/ansible/roles/kubernetes_node/tasks/main.yaml b/ansible/roles/kubernetes_node/tasks/main.yaml new file mode 100644 index 0000000..e00bbd5 --- /dev/null +++ b/ansible/roles/kubernetes_node/tasks/main.yaml @@ -0,0 +1,9 @@ +--- +- name: Install Kubernetes APT repository + ansible.builtin.import_tasks: repo.yaml + +- name: Install Kubernetes packages + ansible.builtin.import_tasks: packages.yaml + +- name: Configure networking + ansible.builtin.import_tasks: networking.yaml diff --git a/ansible/roles/kubernetes_node/tasks/networking.yaml b/ansible/roles/kubernetes_node/tasks/networking.yaml new file mode 100644 index 0000000..8e7488a --- /dev/null +++ b/ansible/roles/kubernetes_node/tasks/networking.yaml @@ -0,0 +1,6 @@ +--- +- name: Enable sysctl 'net.ipv4.ip_forward' + ansible.posix.sysctl: + name: net.ipv4.ip_forward + value: 1 + sysctl_set: true diff --git a/ansible/roles/kubernetes_node/tasks/packages.yaml b/ansible/roles/kubernetes_node/tasks/packages.yaml new file mode 100644 index 0000000..5bf2e75 --- /dev/null +++ b/ansible/roles/kubernetes_node/tasks/packages.yaml @@ -0,0 +1,14 @@ +--- +- name: Install Kubernetes packages + ansible.builtin.apt: + pkg: + - kubeadm + - kubelet + - containerd + update_cache: true + +- name: Activate containerd service + ansible.builtin.service: + name: containerd + enabled: true + state: started diff --git a/ansible/roles/kubernetes_node/tasks/repo.yaml b/ansible/roles/kubernetes_node/tasks/repo.yaml new file mode 100644 index 0000000..9ba0790 --- /dev/null +++ b/ansible/roles/kubernetes_node/tasks/repo.yaml @@ -0,0 +1,9 @@ +--- +- name: Add Kubernetes APT repository + ansible.builtin.deb822_repository: + name: kubernetes + types: deb + uris: https://pkgs.k8s.io/core:/stable:/v1.36/deb/ + suites: / + signed_by: https://pkgs.k8s.io/core:/stable:/v1.36/deb/Release.key + state: present diff --git a/ansible/site.yaml b/ansible/site.yaml index 468f01f..6b3645e 100644 --- a/ansible/site.yaml +++ b/ansible/site.yaml @@ -1,5 +1,10 @@ --- -- name: Common +- name: Bootstrap hosts: all roles: - common + +- name: Setup Kubernetes nodes + hosts: all + roles: + - kubernetes_node diff --git a/infra/main.tofu b/infra/main.tofu index 47413c5..5c12ebe 100644 --- a/infra/main.tofu +++ b/infra/main.tofu @@ -7,8 +7,8 @@ locals { ext_disk_size = "16GiB" network_cidr = "10.150.0.1/24" - master_count = 2 - worker_count = 0 + master_count = 1 + worker_count = 1 image = "ubuntu/26.04" }