65 lines
1.8 KiB
Bash
65 lines
1.8 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
#
|
||
|
# Generates a inventory file based on the terraform output.
|
||
|
# After provisioning a cluster, simply run this command and supply the terraform state file
|
||
|
# Default state file is terraform.tfstate
|
||
|
#
|
||
|
|
||
|
set -e
|
||
|
|
||
|
TF_OUT=$(terraform output -json)
|
||
|
|
||
|
CONTROL_PLANES=$(jq -r '.kubernetes_cluster.value.control_plane_info | to_entries[]' <(echo "${TF_OUT}"))
|
||
|
WORKERS=$(jq -r '.kubernetes_cluster.value.worker_info | to_entries[]' <(echo "${TF_OUT}"))
|
||
|
mapfile -t CONTROL_PLANE_NAMES < <(jq -r '.key' <(echo "${CONTROL_PLANES}"))
|
||
|
mapfile -t WORKER_NAMES < <(jq -r '.key' <(echo "${WORKERS}"))
|
||
|
|
||
|
API_LB=$(jq -r '.kubernetes_cluster.value.control_plane_lb' <(echo "${TF_OUT}"))
|
||
|
|
||
|
echo "[all]"
|
||
|
# Generate control plane hosts
|
||
|
i=1
|
||
|
for name in "${CONTROL_PLANE_NAMES[@]}"; do
|
||
|
private_ip=$(jq -r '. | select( .key=='"\"${name}\""' ) | .value.private_ip' <(echo "${CONTROL_PLANES}"))
|
||
|
echo "${name} ansible_user=root ansible_host=${private_ip} access_ip=${private_ip} ip=${private_ip} etcd_member_name=etcd${i}"
|
||
|
i=$(( i + 1 ))
|
||
|
done
|
||
|
|
||
|
# Generate worker hosts
|
||
|
for name in "${WORKER_NAMES[@]}"; do
|
||
|
private_ip=$(jq -r '. | select( .key=='"\"${name}\""' ) | .value.private_ip' <(echo "${WORKERS}"))
|
||
|
echo "${name} ansible_user=root ansible_host=${private_ip} access_ip=${private_ip} ip=${private_ip}"
|
||
|
done
|
||
|
|
||
|
API_LB=$(jq -r '.kubernetes_cluster.value.control_plane_lb' <(echo "${TF_OUT}"))
|
||
|
|
||
|
echo ""
|
||
|
echo "[all:vars]"
|
||
|
echo "upstream_dns_servers=['8.8.8.8','8.8.4.4']"
|
||
|
echo "loadbalancer_apiserver={'address':'${API_LB}','port':'6443'}"
|
||
|
|
||
|
|
||
|
echo ""
|
||
|
echo "[kube_control_plane]"
|
||
|
for name in "${CONTROL_PLANE_NAMES[@]}"; do
|
||
|
echo "${name}"
|
||
|
done
|
||
|
|
||
|
echo ""
|
||
|
echo "[etcd]"
|
||
|
for name in "${CONTROL_PLANE_NAMES[@]}"; do
|
||
|
echo "${name}"
|
||
|
done
|
||
|
|
||
|
echo ""
|
||
|
echo "[kube_node]"
|
||
|
for name in "${WORKER_NAMES[@]}"; do
|
||
|
echo "${name}"
|
||
|
done
|
||
|
|
||
|
echo ""
|
||
|
echo "[k8s_cluster:children]"
|
||
|
echo "kube_control_plane"
|
||
|
echo "kube_node"
|