LINUX.ORG.RU
решено ФорумAdmin

terraform приклепляет локалку после провижена.

 


0

1

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/"
    }
  }
}

★★★★

решил, сам запихав

resource "null_resource" "node" {
    depends_on = [hcloud_server_network.k8s-net-node]


...

constin ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.