#!/bin/bash

read -r -d '' script <<'EOF'
to_entries|map({(.key|tostring):.value.value})|add as $input |

{
  ansible_host:$input.k8s_master_ip.public_ip,
  private_ip:$input.k8s_master_ip.private_ip,
} as $master |

$input.k8s_node_names|to_entries|map({(.value):{
  ansible_host:$input.k8s_node_private_ips[.key],
  private_ip:$input.k8s_node_private_ips[.key],
  }) as $nodes |

{_meta:{
  hostvars:([{"k8s-master": $master}]+$nodes|add)},
  all:(["k8s-master"] + ($input.k8s_node_names)),
  k8s:(["k8s-master"] + ($input.k8s_node_names)),
  "k8s-nodes":{
      "hosts": $input.k8s_node_names,
      "vars": {
          "ansible_ssh_common_args": (["-J ", $input.k8s_master_ip.public_ip]|add)
      }
  }
}
EOF

set -euo pipefail
(cd .. && terraform output -json) | jq "$script"