206 lines
9.0 KiB
YAML
206 lines
9.0 KiB
YAML
---
|
|
- name: Set reachable address
|
|
ansible.builtin.set_fact:
|
|
current_address: "{{ item.external_address | default(item.address) }}"
|
|
loop: "{{ bootstrap_nodes.master + bootstrap_nodes.worker | default([]) }}"
|
|
loop_control:
|
|
label: "{{ item.address }}"
|
|
|
|
- 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 internal ingress
|
|
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: Verify internal ingress 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: Verify external ingress
|
|
ansible.builtin.assert:
|
|
that: bootstrap_external_ingress_addr is ansible.utils.ipv4
|
|
success_msg: external ingress address {{ bootstrap_external_ingress_addr }} is valid.
|
|
fail_msg: external ingress address {{ bootstrap_external_ingress_addr }} is invalid.
|
|
|
|
- name: Verify external ingress in node CIDR
|
|
ansible.builtin.assert:
|
|
that: bootstrap_node_cidr | ansible.utils.network_in_usable(bootstrap_external_ingress_addr)
|
|
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: 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 all IP addresses are unique
|
|
ansible.builtin.assert:
|
|
that: >
|
|
[
|
|
bootstrap_k8s_gateway_addr,
|
|
bootstrap_external_ingress_addr,
|
|
bootstrap_internal_ingress_addr,
|
|
bootstrap_kube_vip_addr
|
|
] | unique | length == 4
|
|
success_msg: All IP addresses are unique.
|
|
fail_msg: All IP addresses are not unique.
|
|
|
|
- name: Verify 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)
|
|
success_msg: Node address {{ item.address }} is different than k8s_gateway or ingress-nginx.
|
|
fail_msg: Node address {{ item.address }} is not different than k8s_gateway or ingress-nginx.
|
|
quiet: true
|
|
loop: "{{ bootstrap_nodes.master + bootstrap_nodes.worker | default([]) }}"
|
|
loop_control:
|
|
label: "{{ item.address }}"
|
|
|
|
- name: Verify nodes are not the same IPs as k8s_gateway, ingress external/internal or kube-vip
|
|
when: 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_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([]) }}"
|
|
when: item.external_address is not defined
|
|
loop_control:
|
|
label: "{{ item.address }}"
|
|
|
|
- name: Verify node IP addresses are unique
|
|
ansible.builtin.assert:
|
|
that: >
|
|
(
|
|
(bootstrap_nodes.master + bootstrap_nodes.worker | default([])) | map(attribute='address') | list
|
|
) | unique | length
|
|
==
|
|
(
|
|
(bootstrap_nodes.master + bootstrap_nodes.worker | default([])) | map(attribute='address') | list
|
|
) | length
|
|
success_msg: All node IP addresses are unique.
|
|
fail_msg: All node IP addresses are not unique.
|
|
quiet: true
|
|
|
|
- name: Verify node names are unique
|
|
ansible.builtin.assert:
|
|
that: >
|
|
(
|
|
(bootstrap_nodes.master + bootstrap_nodes.worker | default([])) | map(attribute='name') | list
|
|
) | unique | length
|
|
==
|
|
(
|
|
(bootstrap_nodes.master + bootstrap_nodes.worker | default([])) | map(attribute='name') | list
|
|
) | length
|
|
success_msg: All node names are unique.
|
|
fail_msg: All node names are not unique.
|
|
quiet: true
|
|
|
|
- name: Verify SSH port is reachable
|
|
ansible.builtin.wait_for:
|
|
host: "{{ current_address }}"
|
|
port: 22
|
|
search_regex: OpenSSH
|
|
timeout: 10
|
|
connection: local
|
|
loop: "{{ bootstrap_nodes.master + bootstrap_nodes.worker | default([]) }}"
|
|
loop_control:
|
|
label: "{{ current_address }}"
|