feat: add ansible-lint and yamlfmt
This commit is contained in:
@@ -9,8 +9,16 @@ repos:
|
|||||||
args:
|
args:
|
||||||
- --autofix
|
- --autofix
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
|
- repo: https://github.com/google/yamlfmt
|
||||||
|
rev: v0.21.0
|
||||||
|
hooks:
|
||||||
|
- id: yamlfmt
|
||||||
- repo: https://github.com/tofuutils/pre-commit-opentofu
|
- repo: https://github.com/tofuutils/pre-commit-opentofu
|
||||||
rev: v2.4.2
|
rev: v2.4.2
|
||||||
hooks:
|
hooks:
|
||||||
- id: tofu_validate
|
- id: tofu_validate
|
||||||
- id: tofu_fmt
|
- id: tofu_fmt
|
||||||
|
- repo: https://github.com/ansible/ansible-lint
|
||||||
|
rev: v26.4.0
|
||||||
|
hooks:
|
||||||
|
- id: ansible-lint
|
||||||
|
|||||||
@@ -1,2 +1 @@
|
|||||||
---
|
|
||||||
ansible_python_interpreter: /usr/bin/python3
|
ansible_python_interpreter: /usr/bin/python3
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
---
|
|
||||||
plugin: community.general.incus
|
plugin: community.general.incus
|
||||||
strict: true
|
strict: true
|
||||||
remotes:
|
remotes:
|
||||||
|
|||||||
@@ -3,10 +3,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Initialise high-availability Kubernetes cluster
|
- name: Initialise high-availability Kubernetes cluster
|
||||||
ansible.builtin.command: >-
|
ansible.builtin.command: >-
|
||||||
kubeadm init
|
kubeadm init --pod-network-cidr="172.16.0.0/16" --control-plane-endpoint="{{ ansible_default_ipv4.address }}:6443" --upload-certs
|
||||||
--pod-network-cidr="172.16.0.0/16"
|
|
||||||
--control-plane-endpoint="{{ ansible_default_ipv4.address }}:6443"
|
|
||||||
--upload-certs
|
|
||||||
args:
|
args:
|
||||||
creates: /etc/kubernetes/admin.conf
|
creates: /etc/kubernetes/admin.conf
|
||||||
- name: Copy Kubernetes Admin Config
|
- name: Copy Kubernetes Admin Config
|
||||||
@@ -17,13 +14,11 @@
|
|||||||
- chown $(id -u):$(id -g) $HOME/.kube/config
|
- chown $(id -u):$(id -g) $HOME/.kube/config
|
||||||
args:
|
args:
|
||||||
creates: $HOME/.kube/config
|
creates: $HOME/.kube/config
|
||||||
|
|
||||||
- name: Install Pod Network (Calico)
|
- 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
|
ansible.builtin.shell: kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.32.0/manifests/calico.yaml > pod_network_setup.txt
|
||||||
args:
|
args:
|
||||||
chdir: $HOME
|
chdir: $HOME
|
||||||
creates: pod_network_setup.txt
|
creates: pod_network_setup.txt
|
||||||
|
|
||||||
- name: Add Helm repositories
|
- name: Add Helm repositories
|
||||||
kubernetes.core.helm_repository:
|
kubernetes.core.helm_repository:
|
||||||
name: "{{ item.name }}"
|
name: "{{ item.name }}"
|
||||||
@@ -39,7 +34,6 @@
|
|||||||
url: https://traefik.github.io/charts
|
url: https://traefik.github.io/charts
|
||||||
- name: minecraft-server-charts
|
- name: minecraft-server-charts
|
||||||
url: https://itzg.github.io/minecraft-server-charts/
|
url: https://itzg.github.io/minecraft-server-charts/
|
||||||
|
|
||||||
- name: Install Metrics Server
|
- name: Install Metrics Server
|
||||||
kubernetes.core.helm:
|
kubernetes.core.helm:
|
||||||
release_name: metrics-server
|
release_name: metrics-server
|
||||||
@@ -49,7 +43,6 @@
|
|||||||
values:
|
values:
|
||||||
args:
|
args:
|
||||||
- --kubelet-insecure-tls
|
- --kubelet-insecure-tls
|
||||||
|
|
||||||
- name: Install Longhorn
|
- name: Install Longhorn
|
||||||
kubernetes.core.helm:
|
kubernetes.core.helm:
|
||||||
release_name: longhorn
|
release_name: longhorn
|
||||||
@@ -57,7 +50,6 @@
|
|||||||
create_namespace: true
|
create_namespace: true
|
||||||
chart_ref: longhorn/longhorn
|
chart_ref: longhorn/longhorn
|
||||||
chart_version: 1.12.0
|
chart_version: 1.12.0
|
||||||
|
|
||||||
- name: Install Prometheus
|
- name: Install Prometheus
|
||||||
kubernetes.core.helm:
|
kubernetes.core.helm:
|
||||||
release_name: prometheus
|
release_name: prometheus
|
||||||
@@ -66,7 +58,6 @@
|
|||||||
chart_ref: prometheus-community/prometheus
|
chart_ref: prometheus-community/prometheus
|
||||||
chart_version: 29.10.0
|
chart_version: 29.10.0
|
||||||
state: absent
|
state: absent
|
||||||
|
|
||||||
- name: Install Traefik
|
- name: Install Traefik
|
||||||
kubernetes.core.helm:
|
kubernetes.core.helm:
|
||||||
release_name: traefik
|
release_name: traefik
|
||||||
@@ -92,7 +83,6 @@
|
|||||||
port: 443
|
port: 443
|
||||||
containerPort: 443
|
containerPort: 443
|
||||||
hostPort: 443
|
hostPort: 443
|
||||||
|
|
||||||
- name: Install Minecraft
|
- name: Install Minecraft
|
||||||
kubernetes.core.helm:
|
kubernetes.core.helm:
|
||||||
release_name: minecraft
|
release_name: minecraft
|
||||||
@@ -105,25 +95,20 @@
|
|||||||
persistence:
|
persistence:
|
||||||
dataDir:
|
dataDir:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
- name: Extract Control Plane Decryption Key & Join Token
|
- name: Extract Control Plane Decryption Key & Join Token
|
||||||
block:
|
block:
|
||||||
- name: Generate Fresh Join Command
|
- name: Generate Fresh Join Command
|
||||||
ansible.builtin.command: kubeadm token create --print-join-command
|
ansible.builtin.command: kubeadm token create --print-join-command
|
||||||
register: join_command_raw
|
register: join_command_raw
|
||||||
|
|
||||||
- name: Upload Certs and Capture Certificate Key
|
- name: Upload Certs and Capture Certificate Key
|
||||||
shell: kubeadm init phase upload-certs --upload-certs | tail -n 1
|
shell: kubeadm init phase upload-certs --upload-certs | tail -n 1
|
||||||
register: cert_key_raw
|
register: cert_key_raw
|
||||||
|
|
||||||
- name: Set facts across playbooks
|
- name: Set facts across playbooks
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
k8s_join_base: "{{ join_command_raw.stdout }}"
|
k8s_join_base: "{{ join_command_raw.stdout }}"
|
||||||
k8s_cert_key: "{{ cert_key_raw.stdout }}"
|
k8s_cert_key: "{{ cert_key_raw.stdout }}"
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
delegate_facts: true
|
delegate_facts: true
|
||||||
|
|
||||||
|
|
||||||
- name: Join Secondary Control Planes
|
- name: Join Secondary Control Planes
|
||||||
hosts: masters:!masters[0] # <--- Targets masters 1 and 2
|
hosts: masters:!masters[0] # <--- Targets masters 1 and 2
|
||||||
tasks:
|
tasks:
|
||||||
@@ -131,7 +116,6 @@
|
|||||||
ansible.builtin.shell: "{{ hostvars['localhost']['k8s_join_base'] }} --control-plane --certificate-key {{ hostvars['localhost']['k8s_cert_key'] }}"
|
ansible.builtin.shell: "{{ hostvars['localhost']['k8s_join_base'] }} --control-plane --certificate-key {{ hostvars['localhost']['k8s_cert_key'] }}"
|
||||||
args:
|
args:
|
||||||
creates: /etc/kubernetes/admin.conf
|
creates: /etc/kubernetes/admin.conf
|
||||||
|
|
||||||
- name: Copy Kubernetes Admin Config
|
- name: Copy Kubernetes Admin Config
|
||||||
ansible.builtin.shell: "{{ item }}"
|
ansible.builtin.shell: "{{ item }}"
|
||||||
loop:
|
loop:
|
||||||
@@ -140,7 +124,6 @@
|
|||||||
- chown $(id -u):$(id -g) $HOME/.kube/config
|
- chown $(id -u):$(id -g) $HOME/.kube/config
|
||||||
args:
|
args:
|
||||||
creates: $HOME/.kube/config
|
creates: $HOME/.kube/config
|
||||||
|
|
||||||
- name: Remove control plane taint
|
- name: Remove control plane taint
|
||||||
hosts: masters[0]
|
hosts: masters[0]
|
||||||
tasks:
|
tasks:
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
name: net.ipv4.ip_forward
|
name: net.ipv4.ip_forward
|
||||||
value: 1
|
value: 1
|
||||||
sysctl_set: true
|
sysctl_set: true
|
||||||
|
|
||||||
- name: Enable Kernel Modules
|
- name: Enable Kernel Modules
|
||||||
community.general.modprobe:
|
community.general.modprobe:
|
||||||
name: "{{ item }}"
|
name: "{{ item }}"
|
||||||
@@ -14,7 +13,6 @@
|
|||||||
loop:
|
loop:
|
||||||
- br_netfilter
|
- br_netfilter
|
||||||
- dm-crypt
|
- dm-crypt
|
||||||
|
|
||||||
- name: Ensure /sys mount is set to shared for container runtimes
|
- name: Ensure /sys mount is set to shared for container runtimes
|
||||||
block:
|
block:
|
||||||
- name: Remount /sys as shared immediately
|
- name: Remount /sys as shared immediately
|
||||||
@@ -24,7 +22,6 @@
|
|||||||
- /sys
|
- /sys
|
||||||
- /run
|
- /run
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
||||||
- name: Create Alpine local.d script for permanent shared mount
|
- name: Create Alpine local.d script for permanent shared mount
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
dest: /etc/local.d/mount-shared.start
|
dest: /etc/local.d/mount-shared.start
|
||||||
@@ -36,20 +33,17 @@
|
|||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: '0755'
|
mode: '0755'
|
||||||
|
|
||||||
- name: Ensure Alpine local service is enabled on boot
|
- name: Ensure Alpine local service is enabled on boot
|
||||||
ansible.builtin.service:
|
ansible.builtin.service:
|
||||||
name: local
|
name: local
|
||||||
enabled: true
|
enabled: true
|
||||||
runlevel: default
|
runlevel: default
|
||||||
|
|
||||||
- name: Install tools
|
- name: Install tools
|
||||||
ansible.builtin.package:
|
ansible.builtin.package:
|
||||||
name: "{{ item }}"
|
name: "{{ item }}"
|
||||||
state: present
|
state: present
|
||||||
loop:
|
loop:
|
||||||
- htop
|
- htop
|
||||||
|
|
||||||
- name: Install kubectl, kubelet, kubeadm and containerd
|
- name: Install kubectl, kubelet, kubeadm and containerd
|
||||||
ansible.builtin.package:
|
ansible.builtin.package:
|
||||||
name: "{{ item }}"
|
name: "{{ item }}"
|
||||||
@@ -62,7 +56,6 @@
|
|||||||
- cni-plugins
|
- cni-plugins
|
||||||
- helm
|
- helm
|
||||||
- open-iscsi
|
- open-iscsi
|
||||||
|
|
||||||
- name: Start kubelet and containerd
|
- name: Start kubelet and containerd
|
||||||
ansible.builtin.service:
|
ansible.builtin.service:
|
||||||
name: "{{ item }}"
|
name: "{{ item }}"
|
||||||
@@ -72,14 +65,12 @@
|
|||||||
- kubelet
|
- kubelet
|
||||||
- containerd
|
- containerd
|
||||||
- iscsid
|
- iscsid
|
||||||
|
|
||||||
- name: Add /opt/cni/bin to containerd CNI binary directories
|
- name: Add /opt/cni/bin to containerd CNI binary directories
|
||||||
ansible.builtin.replace:
|
ansible.builtin.replace:
|
||||||
path: /etc/containerd/config.toml
|
path: /etc/containerd/config.toml
|
||||||
regexp: "bin_dirs = \\['/usr/libexec/cni'\\]"
|
regexp: "bin_dirs = \\['/usr/libexec/cni'\\]"
|
||||||
replace: "bin_dirs = ['/opt/cni/bin', '/usr/libexec/cni']"
|
replace: "bin_dirs = ['/opt/cni/bin', '/usr/libexec/cni']"
|
||||||
notify: Restart containerd
|
notify: Restart containerd
|
||||||
|
|
||||||
handlers:
|
handlers:
|
||||||
- name: Restart containerd
|
- name: Restart containerd
|
||||||
ansible.builtin.service:
|
ansible.builtin.service:
|
||||||
|
|||||||
@@ -6,13 +6,11 @@
|
|||||||
ansible.builtin.command: kubeadm token create --print-join-command
|
ansible.builtin.command: kubeadm token create --print-join-command
|
||||||
register: join_command_raw
|
register: join_command_raw
|
||||||
changed_when: false # Reading/generating a token text string changes no host state
|
changed_when: false # Reading/generating a token text string changes no host state
|
||||||
|
|
||||||
- name: Save join command globally
|
- name: Save join command globally
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
k8s_worker_join: "{{ join_command_raw.stdout }}"
|
k8s_worker_join: "{{ join_command_raw.stdout }}"
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
delegate_facts: true
|
delegate_facts: true
|
||||||
|
|
||||||
- name: Join Worker Nodes to Cluster
|
- name: Join Worker Nodes to Cluster
|
||||||
hosts: workers
|
hosts: workers
|
||||||
gather_facts: false
|
gather_facts: false
|
||||||
|
|||||||
@@ -1,3 +1,2 @@
|
|||||||
---
|
|
||||||
- name: Install required packages
|
- name: Install required packages
|
||||||
ansible.builtin.import_tasks: packages.yaml
|
ansible.builtin.import_tasks: packages.yaml
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
---
|
|
||||||
- name: Install Python 3 Dependencies
|
- name: Install Python 3 Dependencies
|
||||||
ansible.builtin.apt:
|
ansible.builtin.apt:
|
||||||
pkg:
|
pkg:
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
- 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
|
||||||
@@ -1,9 +1,6 @@
|
|||||||
---
|
|
||||||
- name: Install Kubernetes APT repository
|
- name: Install Kubernetes APT repository
|
||||||
ansible.builtin.import_tasks: repo.yaml
|
ansible.builtin.import_tasks: repo.yaml
|
||||||
|
|
||||||
- name: Install Kubernetes packages
|
- name: Install Kubernetes packages
|
||||||
ansible.builtin.import_tasks: packages.yaml
|
ansible.builtin.import_tasks: packages.yaml
|
||||||
|
|
||||||
- name: Configure networking
|
- name: Configure networking
|
||||||
ansible.builtin.import_tasks: networking.yaml
|
ansible.builtin.import_tasks: networking.yaml
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
---
|
|
||||||
- name: Enable sysctl 'net.ipv4.ip_forward'
|
- name: Enable sysctl 'net.ipv4.ip_forward'
|
||||||
ansible.posix.sysctl:
|
ansible.posix.sysctl:
|
||||||
name: net.ipv4.ip_forward
|
name: net.ipv4.ip_forward
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
---
|
|
||||||
- name: Install Kubernetes packages
|
- name: Install Kubernetes packages
|
||||||
ansible.builtin.apt:
|
ansible.builtin.apt:
|
||||||
pkg:
|
pkg:
|
||||||
@@ -6,7 +5,6 @@
|
|||||||
- kubelet
|
- kubelet
|
||||||
- containerd
|
- containerd
|
||||||
update_cache: true
|
update_cache: true
|
||||||
|
|
||||||
- name: Activate containerd service
|
- name: Activate containerd service
|
||||||
ansible.builtin.service:
|
ansible.builtin.service:
|
||||||
name: containerd
|
name: containerd
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
---
|
|
||||||
- name: Add Kubernetes APT repository
|
- name: Add Kubernetes APT repository
|
||||||
ansible.builtin.deb822_repository:
|
ansible.builtin.deb822_repository:
|
||||||
name: kubernetes
|
name: kubernetes
|
||||||
|
|||||||
+3
-4
@@ -1,10 +1,9 @@
|
|||||||
---
|
|
||||||
- name: Bootstrap
|
- name: Bootstrap
|
||||||
hosts: all
|
hosts: all
|
||||||
roles:
|
roles:
|
||||||
- common
|
- common
|
||||||
|
- name: Setup Kubernetes masters
|
||||||
- name: Setup Kubernetes nodes
|
hosts: masters
|
||||||
hosts: all
|
|
||||||
roles:
|
roles:
|
||||||
- kubernetes_node
|
- kubernetes_node
|
||||||
|
- kubernetes_master
|
||||||
|
|||||||
Reference in New Issue
Block a user