Проблема подключения с использованием SSH Private key - PullRequest
0 голосов
/ 18 апреля 2019

Я очень новичок в terraform и пытаюсь исследовать.Я использую digitalocean в качестве ресурса.Я могу создать дроплет и теперь хочу снабдить его некоторым программным обеспечением.Но не могу установить соединение с ним.

Я использую виртуальную машину на своем ноутбуке, поэтому хочу использовать свой личный ключ SSH для доступа к дроплету.Поэтому я копирую свой ключ SSH в файл на компьютере terraform и указываю его путь.Ниже приведена моя конфигурация:

provider "digitalocean" {
  token = "${var.do_token}"
}

resource "digitalocean_droplet" "web" {
  name = "web"
  size = "${var.size}"
  image = "${var.image}"
  region = "${var.region}"
  ssh_keys = [23625200]
  private_networking = "true"
}
connection {
  user = "root"
  type = "ssh"
  private_key = "${file("/root/id_rsa")}"
  timeout = "2m"
 }

Закрытый ключ моего ноутбука доступен на компьютере terraform в файле /root/id_rsa.

При попытке проверки или планирования я получаю ошибку ниже:

Error: Unknown root level key: connection

Не могли бы вы помочь мне, что не так я здесь делаю?

Заранее спасибо.

1 Ответ

0 голосов
/ 18 апреля 2019

Ваш connection блок должен быть частью инициатора , который, в свою очередь, является частью ресурса (потенциально null_resource ресурса , если никакой другой ресурс не имеет смысла).

Так что в вашем случае вы должны иметь что-то вроде этого:

resource "digitalocean_droplet" "web" {
  name               = "web"
  size               = "${var.size}"
  image              = "${var.image}"
  region             = "${var.region}"
  ssh_keys           = [23625200]
  private_networking = "true"

  provisioner "remote-exec" {
    connection {
      host        = "${self.ipv4_address}"
      user        = "root"
      type        = "ssh"
      private_key = "${file("/root/id_rsa")}"
      timeout     = "2m"
    }

    inline = [
      "yum -y install httpd",
    ]
  }
}
...