data "local_file" "ssh_public_key" { filename = pathexpand(var.ssh_public_key) } data "hcloud_ssh_keys" "all_keys" {} locals { existing_key = try([ for key in data.hcloud_ssh_keys.all_keys.ssh_keys : key if key.name == "${var.cluster_name}-ssh-key" ][0], null) } resource "hcloud_ssh_key" "cluster" { count = local.existing_key == null ? 1 : 0 name = "${var.cluster_name}-ssh-key" public_key = data.local_file.ssh_public_key.content } data "hcloud_ssh_key" "cluster" { fingerprint = local.existing_key != null ? local.existing_key.fingerprint : hcloud_ssh_key.cluster[0].fingerprint }