--- - name: Verify master node count ansible.builtin.assert: that: - "{{ bootstrap_nodes.master | length > 0 }}" - "{{ bootstrap_nodes.master | length is odd }}" 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: Verify node CIDR 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: Verify 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: Verify 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: Verify cluster CIDR is ipv4 AND ipv6 when: bootstrap_ipv6_enabled | default(false) ansible.builtin.assert: that: > ( bootstrap_cluster_cidr.split(',')[0] is ansible.utils.ipv4 or bootstrap_cluster_cidr.split(',')[1] is ansible.utils.ipv4 ) and ( bootstrap_cluster_cidr.split(',')[1] is ansible.utils.ipv6 or bootstrap_cluster_cidr.split(',')[0] is ansible.utils.ipv6 ) success_msg: Cluster CIDR {{ bootstrap_cluster_cidr }} is valid. fail_msg: Cluster CIDR {{ bootstrap_cluster_cidr }} is invalid. - name: Verify service CIDR is ipv4 AND ipv6 when: bootstrap_ipv6_enabled | default(false) ansible.builtin.assert: that: > ( bootstrap_service_cidr.split(',')[0] is ansible.utils.ipv4 or bootstrap_service_cidr.split(',')[1] is ansible.utils.ipv4 ) and ( bootstrap_service_cidr.split(',')[1] is ansible.utils.ipv6 or bootstrap_service_cidr.split(',')[0] is ansible.utils.ipv6 ) success_msg: Service CIDR {{ bootstrap_service_cidr }} is valid. fail_msg: Service CIDR {{ bootstrap_service_cidr }} is invalid. - name: Verify k8s_gateway 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: Verify k8s_gateway 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: Verify ingress-nginx ansible.builtin.assert: that: ["{{ bootstrap_ingress_nginx_addr is ansible.utils.ipv4 }}"] success_msg: "ingress-nginx address {{ bootstrap_ingress_nginx_addr }} is valid." fail_msg: "ingress-nginx address {{ bootstrap_ingress_nginx_addr }} is invalid." - name: Verify ingress-nginx in node CIDR ansible.builtin.assert: that: ["{{ bootstrap_node_cidr | ansible.utils.network_in_usable(bootstrap_ingress_nginx_addr) }}"] success_msg: "ingress-nginx address {{ bootstrap_ingress_nginx_addr }} is within {{ bootstrap_node_cidr }}." fail_msg: "ingress-nginx address {{ bootstrap_ingress_nginx_addr }} is not within {{ bootstrap_node_cidr }}." - name: Verify kube-vip ansible.builtin.assert: that: ["{{ bootstrap_kube_vip_addr is ansible.utils.ipv4 }}"] success_msg: "kube-vip address {{ bootstrap_kube_vip_addr }} is valid." fail_msg: "kube-vip address {{ bootstrap_kube_vip_addr }} is invalid." - name: Verify kube-vip in node CIDR ansible.builtin.assert: that: ["{{ bootstrap_node_cidr | ansible.utils.network_in_usable(bootstrap_kube_vip_addr) }}"] success_msg: "kube-vip address {{ bootstrap_kube_vip_addr }} is within {{ bootstrap_node_cidr }}." fail_msg: "kube-vip address {{ bootstrap_kube_vip_addr }} is not within {{ bootstrap_node_cidr }}." - name: Verify nodes are not the same IPs as k8s_gateway, ingress-nginx or kube-vip ansible.builtin.assert: that: - "{{ item.address not in (bootstrap_k8s_gateway_addr, bootstrap_ingress_nginx_addr, bootstrap_kube_vip_addr) }}" success_msg: "Node address {{ item.address }} is different than k8s_gateway, ingress-nginx or kube-vip." fail_msg: "Node address {{ item.address }} is not different than k8s_gateway, ingress-nginx or kube-vip." quiet: true loop: "{{ bootstrap_nodes.master + bootstrap_nodes.worker | default([]) }}" loop_control: label: "{{ item.address }}" - name: Verify nodes are ipv4 ansible.builtin.assert: that: item.address is ansible.utils.ipv4 success_msg: Node address {{ item.address }} is valid. fail_msg: Node address {{ item.address }} is invalid. quiet: true loop: "{{ bootstrap_nodes.master + bootstrap_nodes.worker | default([]) }}" loop_control: label: "{{ item.address }}" - name: Verify nodes 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 }}." fail_msg: "Node address {{ item.address }} is not within {{ bootstrap_node_cidr }}." quiet: true loop: "{{ bootstrap_nodes.master + bootstrap_nodes.worker | default([]) }}" loop_control: label: "{{ item.address }}" - name: Verify SSH port is reachable ansible.builtin.wait_for: host: "{{ item.address }}" port: 22 search_regex: OpenSSH timeout: 10 connection: local loop: "{{ bootstrap_nodes.master + bootstrap_nodes.worker | default([]) }}" loop_control: label: "{{ item.address }}"