diff --git a/README.md b/README.md new file mode 100644 index 0000000..2fdd3eb --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Home Infrastructure diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg new file mode 100644 index 0000000..e69de29 diff --git a/ansible/inventories/incus/incus.yaml b/ansible/inventories/incus/incus.yaml index 9e178f4..7d871a2 100644 --- a/ansible/inventories/incus/incus.yaml +++ b/ansible/inventories/incus/incus.yaml @@ -1,7 +1,7 @@ plugin: community.general.incus strict: true remotes: - - local:home-infrastructure + - local:homelab groups: masters: "'master' in inventory_hostname" workers: "'worker' in inventory_hostname" diff --git a/ansible/roles/common/files/ssh.service b/ansible/roles/common/files/ssh.service new file mode 100644 index 0000000..43492bc --- /dev/null +++ b/ansible/roles/common/files/ssh.service @@ -0,0 +1,7 @@ + + %h + + _ssh._tcp + 22 + + diff --git a/ansible/roles/common/handlers/main.yaml b/ansible/roles/common/handlers/main.yaml new file mode 100644 index 0000000..a400251 --- /dev/null +++ b/ansible/roles/common/handlers/main.yaml @@ -0,0 +1,4 @@ +- name: Restart Avahi Daemon + ansible.builtin.service: + name: avahi-daemon + state: restarted diff --git a/ansible/roles/common/tasks/avahi.yaml b/ansible/roles/common/tasks/avahi.yaml new file mode 100644 index 0000000..a802060 --- /dev/null +++ b/ansible/roles/common/tasks/avahi.yaml @@ -0,0 +1,19 @@ +- name: Install Avahi Daemon + ansible.builtin.apt: + pkg: + - avahi-daemon + state: present + +- name: Enable Avahi Daemon Service + ansible.builtin.service: + name: avahi-daemon + state: started + enabled: true + +- name: Copy Avahi SSH service configuration + ansible.builtin.copy: + src: ssh.service + dest: /etc/avahi/services/ssh.service + mode: "644" + notify: + - Restart Avahi Daemon diff --git a/ansible/roles/common/tasks/main.yaml b/ansible/roles/common/tasks/main.yaml index 478e1fe..630de76 100644 --- a/ansible/roles/common/tasks/main.yaml +++ b/ansible/roles/common/tasks/main.yaml @@ -1,2 +1,8 @@ - name: Install required packages ansible.builtin.import_tasks: packages.yaml + +- name: Setup networking configuration + ansible.builtin.import_tasks: network.yaml + +- name: Setup Avahi Daemon + ansible.builtin.import_tasks: avahi.yaml diff --git a/ansible/roles/common/tasks/network.yaml b/ansible/roles/common/tasks/network.yaml new file mode 100644 index 0000000..91b8dde --- /dev/null +++ b/ansible/roles/common/tasks/network.yaml @@ -0,0 +1,5 @@ +- name: Enable IPv4 Forwarding + ansible.posix.sysctl: + name: net.ipv4.ip_forward + value: "1" + sysctl_set: true diff --git a/ansible/roles/common/tasks/packages.yaml b/ansible/roles/common/tasks/packages.yaml index e9fa22b..a7e773f 100644 --- a/ansible/roles/common/tasks/packages.yaml +++ b/ansible/roles/common/tasks/packages.yaml @@ -1,5 +1,6 @@ -- name: Install Python 3 Dependencies +- name: Install Ansible Dependencies ansible.builtin.apt: pkg: - python3-debian + - python3-kubernetes state: present diff --git a/ansible/roles/kubernetes_node/tasks/main.yaml b/ansible/roles/k8s_packages/tasks/main.yaml similarity index 100% rename from ansible/roles/kubernetes_node/tasks/main.yaml rename to ansible/roles/k8s_packages/tasks/main.yaml diff --git a/ansible/roles/kubernetes_node/tasks/networking.yaml b/ansible/roles/k8s_packages/tasks/networking.yaml similarity index 100% rename from ansible/roles/kubernetes_node/tasks/networking.yaml rename to ansible/roles/k8s_packages/tasks/networking.yaml diff --git a/ansible/roles/kubernetes_node/tasks/packages.yaml b/ansible/roles/k8s_packages/tasks/packages.yaml similarity index 100% rename from ansible/roles/kubernetes_node/tasks/packages.yaml rename to ansible/roles/k8s_packages/tasks/packages.yaml diff --git a/ansible/roles/kubernetes_node/tasks/repo.yaml b/ansible/roles/k8s_packages/tasks/repo.yaml similarity index 100% rename from ansible/roles/kubernetes_node/tasks/repo.yaml rename to ansible/roles/k8s_packages/tasks/repo.yaml diff --git a/ansible/roles/kubernetes_control_plane/tasks/main.yaml b/ansible/roles/kubernetes_control_plane/tasks/main.yaml new file mode 100644 index 0000000..80112a8 --- /dev/null +++ b/ansible/roles/kubernetes_control_plane/tasks/main.yaml @@ -0,0 +1,27 @@ +--- +- name: Initialise Kubernetes cluster + ansible.builtin.command: + argv: + - kubeadm + - init + - --pod-network-cidr=172.16.0.0/16 + - --control-plane-endpoint={{ ansible_facts['default_ipv4']['address'] }}:6443 + - --upload-certs + args: + creates: /etc/kubernetes/admin.conf + + +- name: Copy Kubernetes Admin Config + ansible.builtin.command: "{{ item }}" + loop: + - mkdir -p $HOME/.kube + - cp /etc/kubernetes/admin.conf $HOME/.kube/config + - chown $(id -u):$(id -g) $HOME/.kube/config + args: + creates: $HOME/.kube/config + +# - name: Install Pod Network (Calico) +# ansible.builtin.shell: kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.32.0/manifests/calico.yaml > pod_network_setup.txt +# args: +# chdir: $HOME +# creates: pod_network_setup.txt diff --git a/ansible/roles/kubernetes_master/tasks/main.yaml b/ansible/roles/kubernetes_master/tasks/main.yaml deleted file mode 100644 index 7341571..0000000 --- a/ansible/roles/kubernetes_master/tasks/main.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -- name: Initialise high-availability Kubernetes cluster - ansible.builtin.command: >- - kubeadm init - --pod-network-cidr="172.16.0.0/16" - --control-plane-endpoint="{{ ansible_default_ipv4.address }}:6443" - --upload-certs - args: - creates: /etc/kubernetes/admin.conf - -- name: Copy Kubernetes Admin Config - ansible.builtin.command: "{{ item }}" - loop: - - mkdir -p $HOME/.kube - - cp /etc/kubernetes/admin.conf $HOME/.kube/config - - chown $(id -u):$(id -g) $HOME/.kube/config - args: - creates: $HOME/.kube/config - -- name: Install Pod Network (Calico) - ansible.builtin.shell: kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.32.0/manifests/calico.yaml > pod_network_setup.txt - args: - chdir: $HOME - creates: pod_network_setup.txt diff --git a/ansible/site.yaml b/ansible/site.yaml index 00c7f87..66aabb4 100644 --- a/ansible/site.yaml +++ b/ansible/site.yaml @@ -1,9 +1,24 @@ -- name: Bootstrap +- name: Common setup hosts: all roles: - common -- name: Setup Kubernetes masters - hosts: masters - roles: - - kubernetes_node - - kubernetes_master + +# # ======================== +# # SETUP KUBERNETES CLUSTER +# # ======================== + +# - name: Initialise Kubernetes cluster +# hosts: masters[0] +# roles: +# - kubernetes_master + +# # ======================= +# # JOIN MASTERS TO CLUSTER +# # ======================= + +# - name: Adkfk +# hosts: masters[0] +# tasks: +# - name: Generate Kubernetes 'join' command +# ansible.builtin.command: echo hi +# changed_when: true