hcloud, но я не думаю, что это имеет значение.
Тут все работает, но мне нужны так же еще команды уже после того, как серверу был выдан айпи их локальной сети.
Но терраформ сначала создает сервер, затем запускает провижен, и только потом дает серверу локальный айпи.
...
hcloud_server.master[0] (local-exec): Warning: Permanently added '116.203.205.113' (ECDSA) to the list of known hosts.
hcloud_server.master[0]: Creation complete after 1m33s [id=8751744]
hcloud_server_network.k8s-net-master: Creating...
Вот пример main.tf
...
resource "hcloud_network" "k8s-net" {
name = "k8s-net"
ip_range = var.net_range
}
resource "hcloud_network_subnet" "k8s-subnet" {
network_id = hcloud_network.k8s-net.id
type = "cloud"
network_zone = var.net_zone
ip_range = var.subnet_range
}
resource "hcloud_server_network" "k8s-net-master" {
server_id = hcloud_server.master[0].id
network_id = hcloud_network.k8s-net.id
ip = var.master_ip
}
resource "hcloud_server_network" "k8s-net-node" {
count = var.node_count
server_id = hcloud_server.node[count.index].id
network_id = hcloud_network.k8s-net.id
}
resource "hcloud_server" "master" {
count = var.master_count
name = "master-${count.index + 1}"
server_type = var.master_type
image = var.master_image
ssh_keys = [hcloud_ssh_key.k8s_admin.id]
location = var.datacenter_location
connection {
host = self.ipv4_address
type = "ssh"
private_key = file(var.ssh_private_key)
}
provisioner "file" {
source = "files/10-kubeadm.conf"
destination = "/root/10-kubeadm.conf"
}
provisioner "file" {
source = "scripts/bootstrap.sh"
destination = "/root/bootstrap.sh"
}
provisioner "remote-exec" {
inline = ["DOCKER_VERSION=${var.docker_version} KUBERNETES_VERSION=${var.kubernetes_version} bash /root/bootstrap.sh"]
}
provisioner "file" {
source = "scripts/master.sh"
destination = "/root/master.sh"
}
provisioner "remote-exec" {
inline = ["FEATURE_GATES=${var.feature_gates} HCLOUD_API_TOKEN=${var.hcloud_token} bash /root/master.sh"]
}
provisioner "local-exec" {
command = "bash scripts/copy-kubeadm-token.sh"
environment = {
SSH_PRIVATE_KEY = var.ssh_private_key
SSH_USERNAME = "root"
SSH_HOST = hcloud_server.master[0].ipv4_address
TARGET = "${path.module}/secrets/"
}
}
}