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.

55 lines
1.4 KiB

  1. terraform {
  2. required_version = ">= 0.13.0"
  3. }
  4. provider "upcloud" {
  5. # Your UpCloud credentials are read from environment variables:
  6. username = var.UPCLOUD_USERNAME
  7. password = var.UPCLOUD_PASSWORD
  8. }
  9. module "kubernetes" {
  10. source = "./modules/kubernetes-cluster"
  11. zone = var.zone
  12. hostname = var.hostname
  13. template_name = var.template_name
  14. username = var.username
  15. machines = var.machines
  16. ssh_public_keys = var.ssh_public_keys
  17. }
  18. #
  19. # Generate ansible inventory
  20. #
  21. data "template_file" "inventory" {
  22. template = file("${path.module}/templates/inventory.tpl")
  23. vars = {
  24. connection_strings_master = join("\n", formatlist("%s ansible_user=ubuntu ansible_host=%s etcd_member_name=etcd%d",
  25. keys(module.kubernetes.master_ip),
  26. values(module.kubernetes.master_ip),
  27. range(1, length(module.kubernetes.master_ip) + 1)))
  28. connection_strings_worker = join("\n", formatlist("%s ansible_user=ubuntu ansible_host=%s",
  29. keys(module.kubernetes.worker_ip),
  30. values(module.kubernetes.worker_ip)))
  31. list_master = join("\n", formatlist("%s",
  32. keys(module.kubernetes.master_ip)))
  33. list_worker = join("\n", formatlist("%s",
  34. keys(module.kubernetes.worker_ip)))
  35. }
  36. }
  37. resource "null_resource" "inventories" {
  38. provisioner "local-exec" {
  39. command = "echo '${data.template_file.inventory.rendered}' > ${var.inventory_file}"
  40. }
  41. triggers = {
  42. template = data.template_file.inventory.rendered
  43. }
  44. }