Role Documentation
common
These roles are called common for no other reason than because I can’t think of a better name. Refactoring is also a pain :)
config_checks
Source: common/config_checks
Performs basic config checks to ensure that variables are configured properly.
There are two ‘sub’ roles within the config_checks
role, and these
are as follows.
kubernetes.
Ensures that the controlplane endpoint is defined, as there is no suitable default, given the target networks could theoretically be anything.
Variables used:
ovirt.
Performs a number of checks against the oVirt related variables.
The checks validate the following when they exist:
Username
Endpoint
Password
Datacentre name
Cluster name
Variables used
gather_env_info
Source: common/gather_env_info
Performs a number of calls to gather environment information. Determines what state haikoo is in for use later. This role contains a number of sub-roles.
Datacentre/Cluster
Source: common/gather_env_info/dc_cluster/tasks/main.yaml
Validates that the datacentre defined in
ovirt_engine_datacenter_name
exists within oVirt, as well as the
cluster defined in ovirt_engine_cluster_name
.
Fails the playbook if either do not exist.
Variables used:
Variables created:
Networks
Source: common/gather_env_info/networks/tasks/main.yaml
Validates that the networks defined in temp_vm_network
and
kubernetes_cluster_network
exist in the datacentre.
Fails the playbook if any do not exist.
Variables used:
Variables created:
Storage
Source: common/gather_env_info/storage/tasks/main.yaml
Checks to see if the storage domain defined in
template_storage_location
exists within the oVirt cluster. Fails if
it does not exist.
Variables used:
Variables created:
Templates
Source: common/gather_env_info/templates/tasks/main.yaml
Checks to see whether the base image exists within oVirt as a template. Also checks to see how many subversions exist. If only one, we can assume that the template has not been modified for use within haikoo.
Variables used:
Variables created:
Virtual Machines
Source: common/gather_env_info/virtual_machines
Gathers information about the virtual machines in the cluster. Adds all existing hosts to the inventory and schedules nodes to be created or deleted. Ultimately this sub-role is what controls whether to create a new cluster, to expand/shrink an existing one.
Variables Used:
Common
oVirt
Kubernetes
Variables Set:
Control Plane
Worker Node
grab_ssh_key
Source: common/grab_ssh_key
Grabs the SSH key, either from Github or from the local disk and sets the public key as the ssh_key variable.
Variables used:
Variables created:
set_defaults
Source: common/set_defaults
Performs basic config checks to ensure that variables are configured properly.
There are two ‘sub’ roles within the config_checks
role, and these
are as follows.
kubernetes
These roles heavily involve kubernetes, and the setup around them.
init_cluster
Source: kubernetes/init_cluster
Initializes a kubernetes cluster in multiple stages.
The stages are as follows:
Create certificate key and save as certificate_key
Create a join token and save as token
Read the contents of the certificate key and join token into their respective vars.
Set the kube_config variable to
/etc/kubernetes/{{ kubernetes_cluster_name }}-cluster.conf
Determine whether to use the DNS Endpoint or the IP Endpoint
Template out the Kubernetes cluster config
Pull all the Kubernetes images
Run pre-flight Kubernetes checks
Generate Certificates and save to kubeadm_init
Generate
/etc/kubernetes/admin.conf
file.Write out the kubelet settings to
/var/lib/kubelet/config.yaml
and restart the kubeletGenerate the static pod manifests and save to
/etc/kubernetes/manifests/
Upload the kubelet configuration to a configmap.
Upload the certificates to kubeadm-certs.
Mark the node as a control plane
Generate the bootstrap tokens needed to join other nodes to the cluster
Enable client certificate rotation
Install all the addons (CoreDNS, kube-proxy)
Loop until the API is ready.
Variables created:
control_plane_setup
Source: kubernetes/control_plane_setup
The necessary tasks required for setting a node up for use as a control plane.
Variables used:
Variables created:
prepare_node
Source: kubernetes/control_plane_setup
Role to handle setting up a node for use as a kubernetes node.
Variables used:
Variables created: