From 72e7d17a2694c93d30fde4a4c230f2aaece2f640 Mon Sep 17 00:00:00 2001 From: Devin Buhl Date: Mon, 15 Jan 2024 20:23:49 -0500 Subject: [PATCH] fix: add check for bootstrap_distribution Signed-off-by: Devin Buhl --- bootstrap/tasks/validation/net.yaml | 42 ++++++++++++++-------------- bootstrap/tasks/validation/vars.yaml | 10 +++++-- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/bootstrap/tasks/validation/net.yaml b/bootstrap/tasks/validation/net.yaml index ea185afb..1a42ba28 100644 --- a/bootstrap/tasks/validation/net.yaml +++ b/bootstrap/tasks/validation/net.yaml @@ -6,7 +6,7 @@ loop_control: label: "{{ item.address }}" -- name: Check that master node count is odd +- name: Check if master node count is odd ansible.builtin.assert: that: - bootstrap_nodes.master | length > 0 @@ -14,27 +14,27 @@ success_msg: Master node count {{ bootstrap_nodes.master | length }} is correct. fail_msg: Master node count {{ bootstrap_nodes.master | length }} is not greater than 0 or is not odd. -- name: Check that node CIDR is ipv4 +- name: Check if node CIDR is ipv4 ansible.builtin.assert: that: bootstrap_node_cidr is ansible.utils.ipv4 success_msg: Node CIDR {{ bootstrap_node_cidr }} is valid. fail_msg: Node CIDR {{ bootstrap_node_cidr }} is invalid. -- name: Check that cluster CIDR is ipv4 OR ipv6 +- name: Check if cluster CIDR is ipv4 OR ipv6 when: not bootstrap_ipv6_enabled | default(false) ansible.builtin.assert: that: bootstrap_cluster_cidr is ansible.utils.ipv4 or bootstrap_cluster_cidr is ansible.utils.ipv6 success_msg: Cluster CIDR {{ bootstrap_cluster_cidr }} is valid. fail_msg: Cluster CIDR {{ bootstrap_cluster_cidr }} is invalid. -- name: Check that service CIDR is ipv4 OR ipv6 +- name: Check if service CIDR is ipv4 OR ipv6 when: not bootstrap_ipv6_enabled | default(false) ansible.builtin.assert: that: bootstrap_service_cidr is ansible.utils.ipv4 or bootstrap_service_cidr is ansible.utils.ipv6 success_msg: Service CIDR {{ bootstrap_service_cidr }} is valid. fail_msg: Service CIDR {{ bootstrap_service_cidr }} is invalid. -- name: Check that cluster CIDR is ipv4 AND ipv6 +- name: Check if cluster CIDR is ipv4 AND ipv6 when: bootstrap_ipv6_enabled | default(false) ansible.builtin.assert: that: > @@ -48,7 +48,7 @@ success_msg: Cluster CIDR {{ bootstrap_cluster_cidr }} is valid. fail_msg: Cluster CIDR {{ bootstrap_cluster_cidr }} is invalid. -- name: Check that service CIDR is ipv4 AND ipv6 +- name: Check if service CIDR is ipv4 AND ipv6 when: bootstrap_ipv6_enabled | default(false) ansible.builtin.assert: that: > @@ -62,31 +62,31 @@ success_msg: Service CIDR {{ bootstrap_service_cidr }} is valid. fail_msg: Service CIDR {{ bootstrap_service_cidr }} is invalid. -- name: Check that k8s_gateway is ipv4 +- name: Check if k8s_gateway is ipv4 ansible.builtin.assert: that: bootstrap_k8s_gateway_addr is ansible.utils.ipv4 success_msg: k8s_gateway address {{ bootstrap_k8s_gateway_addr }} is valid. fail_msg: k8s_gateway address {{ bootstrap_k8s_gateway_addr }} is invalid. -- name: Check that k8s_gateway is in node CIDR +- name: Check if k8s_gateway is in node CIDR ansible.builtin.assert: that: bootstrap_node_cidr | ansible.utils.network_in_usable(bootstrap_k8s_gateway_addr) success_msg: k8s_gateway address {{ bootstrap_k8s_gateway_addr }} is within {{ bootstrap_node_cidr }}. fail_msg: k8s_gateway address {{ bootstrap_k8s_gateway_addr }} is not within {{ bootstrap_node_cidr }}. -- name: Check that internal ingress is ipv4 +- name: Check if internal ingress is ipv4 ansible.builtin.assert: that: bootstrap_internal_ingress_addr is ansible.utils.ipv4 success_msg: internal ingress address {{ bootstrap_internal_ingress_addr }} is valid. fail_msg: internal ingress address {{ bootstrap_internal_ingress_addr }} is invalid. -- name: Check that internal ingress is in node CIDR +- name: Check if internal ingress is in node CIDR ansible.builtin.assert: that: bootstrap_node_cidr | ansible.utils.network_in_usable(bootstrap_internal_ingress_addr) success_msg: internal ingress address {{ bootstrap_internal_ingress_addr }} is within {{ bootstrap_node_cidr }}. fail_msg: internal ingress address {{ bootstrap_internal_ingress_addr }} is not within {{ bootstrap_node_cidr }}. -- name: Check that external ingress is ipv4 +- name: Check if external ingress is ipv4 ansible.builtin.assert: that: bootstrap_external_ingress_addr is ansible.utils.ipv4 success_msg: external ingress address {{ bootstrap_external_ingress_addr }} is valid. @@ -98,19 +98,19 @@ success_msg: external ingress address {{ bootstrap_external_ingress_addr }} is within {{ bootstrap_node_cidr }}. fail_msg: external ingress address {{ bootstrap_external_ingress_addr }} is not within {{ bootstrap_node_cidr }}. -- name: Check that Kube API address is ipv4 +- name: Check if Kube API address is ipv4 ansible.builtin.assert: that: bootstrap_kube_api_addr is ansible.utils.ipv4 success_msg: Kube API address {{ bootstrap_kube_api_addr }} is valid. fail_msg: Kube API address {{ bootstrap_kube_api_addr }} is invalid. -- name: Check that Kube API address is in node CIDR +- name: Check if Kube API address is in node CIDR ansible.builtin.assert: that: bootstrap_node_cidr | ansible.utils.network_in_usable(bootstrap_kube_api_addr) success_msg: Kube API address {{ bootstrap_kube_api_addr }} is within {{ bootstrap_node_cidr }}. fail_msg: Kube API address {{ bootstrap_kube_api_addr }} is not within {{ bootstrap_node_cidr }}. -- name: Check that all IP addresses are unique +- name: Check if all IP addresses are unique ansible.builtin.assert: that: > [ @@ -122,7 +122,7 @@ success_msg: All IP addresses are unique. fail_msg: All IP addresses are not unique. -- name: Check that nodes are not the same IPs as k8s_gateway or ingress external/internal +- name: Check if nodes are not the same IPs as k8s_gateway or ingress external/internal when: not bootstrap_kube_vip_enabled | default(true) ansible.builtin.assert: that: item.address not in (bootstrap_k8s_gateway_addr, bootstrap_external_ingress_addr, bootstrap_internal_ingress_addr) @@ -133,7 +133,7 @@ loop_control: label: "{{ item.address }}" -- name: Check that nodes are not the same IPs as k8s_gateway, ingress external/internal or Kube API address +- name: Check if nodes are not the same IPs as k8s_gateway, ingress external/internal or Kube API address when: (bootstrap_distribution == "k3s") and (bootstrap_kube_vip_enabled | default(true)) ansible.builtin.assert: that: item.address not in (bootstrap_k8s_gateway_addr, bootstrap_external_ingress_addr, bootstrap_internal_ingress_addr, bootstrap_kube_api_addr) @@ -144,7 +144,7 @@ loop_control: label: "{{ item.address }}" -- name: Check that node addresses are ipv4 +- name: Check if node addresses are ipv4 ansible.builtin.assert: that: item.address is ansible.utils.ipv4 success_msg: Node address {{ item.address }} is valid. @@ -154,7 +154,7 @@ loop_control: label: "{{ item.address }}" -- name: Check that node addresses are in node CIDR +- name: Check if node addresses are in node CIDR ansible.builtin.assert: that: bootstrap_node_cidr | ansible.utils.network_in_usable(item.address) success_msg: Node address {{ item.address }} is within {{ bootstrap_node_cidr }}. @@ -165,7 +165,7 @@ loop_control: label: "{{ item.address }}" -- name: Check that node IP addresses are unique +- name: Check if node IP addresses are unique ansible.builtin.assert: that: > ( @@ -179,7 +179,7 @@ fail_msg: All node IP addresses are not unique. quiet: true -- name: Check that node names are unique +- name: Check if node names are unique ansible.builtin.assert: that: > ( @@ -193,7 +193,7 @@ fail_msg: All node names are not unique. quiet: true -- name: Check that nodes SSH ports are reachable +- name: Check if nodes SSH ports are reachable when: not ci_test | default(false) ansible.builtin.wait_for: host: "{{ current_address }}" diff --git a/bootstrap/tasks/validation/vars.yaml b/bootstrap/tasks/validation/vars.yaml index e1cc9f16..45036de2 100644 --- a/bootstrap/tasks/validation/vars.yaml +++ b/bootstrap/tasks/validation/vars.yaml @@ -1,5 +1,5 @@ --- -- name: Check that required bootstrap vars are set +- name: Check if required bootstrap vars are set ansible.builtin.assert: that: - item in vars @@ -31,7 +31,13 @@ - bootstrap_service_cidr - bootstrap_timezone -- name: Check that bootstrap node names are valid +- name: Check if bootstrap distribution is valid + ansible.builtin.assert: + that: bootstrap_distribution in ['k0s', 'k3s'] + success_msg: Distribution {{ bootstrap_distribution }} is valid + fail_msg: Distribution {{ bootstrap_distribution }} is not valid + +- name: Check if bootstrap node names are valid ansible.builtin.assert: that: item.name is match('^[a-z0-9-\.]+$') success_msg: Node name {{ item.name }} is valid