You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.7 KiB

  1. provider "hcloud" {}
  2. module "kubernetes" {
  3. source = "./modules/kubernetes-cluster"
  4. # source = "./modules/kubernetes-cluster-flatcar"
  5. prefix = var.prefix
  6. zone = var.zone
  7. machines = var.machines
  8. #only for flatcar
  9. #ssh_private_key_path = var.ssh_private_key_path
  10. ssh_public_keys = var.ssh_public_keys
  11. network_zone = var.network_zone
  12. ssh_whitelist = var.ssh_whitelist
  13. api_server_whitelist = var.api_server_whitelist
  14. nodeport_whitelist = var.nodeport_whitelist
  15. ingress_whitelist = var.ingress_whitelist
  16. }
  17. #
  18. # Generate ansible inventory
  19. #
  20. locals {
  21. inventory = templatefile(
  22. "${path.module}/templates/inventory.tpl",
  23. {
  24. connection_strings_master = join("\n", formatlist("%s ansible_user=ubuntu ansible_host=%s ip=%s etcd_member_name=etcd%d",
  25. keys(module.kubernetes.master_ip_addresses),
  26. values(module.kubernetes.master_ip_addresses).*.public_ip,
  27. values(module.kubernetes.master_ip_addresses).*.private_ip,
  28. range(1, length(module.kubernetes.master_ip_addresses) + 1)))
  29. connection_strings_worker = join("\n", formatlist("%s ansible_user=ubuntu ansible_host=%s ip=%s",
  30. keys(module.kubernetes.worker_ip_addresses),
  31. values(module.kubernetes.worker_ip_addresses).*.public_ip,
  32. values(module.kubernetes.worker_ip_addresses).*.private_ip))
  33. list_master = join("\n", keys(module.kubernetes.master_ip_addresses))
  34. list_worker = join("\n", keys(module.kubernetes.worker_ip_addresses))
  35. network_id = module.kubernetes.network_id
  36. }
  37. )
  38. }
  39. resource "null_resource" "inventories" {
  40. provisioner "local-exec" {
  41. command = "echo '${local.inventory}' > ${var.inventory_file}"
  42. }
  43. triggers = {
  44. template = local.inventory
  45. }
  46. }