Как установить драйвер стека в экземплярах GCE LINUX (Ubuntu / Debian) в GCP, используя скрипт Terraform? - PullRequest
0 голосов
/ 05 апреля 2019

Я создаю экземпляр Debian LINUX, используя приведенный ниже скрипт terraform.

resource "template_dir" "config" {
  source_dir      = "${path.module}/config.d/"
  destination_dir = "/tmp/fluent-templates"

  vars = {
    instance-name = "${var.instance_name}"
  }
}

resource "google_compute_instance" "default" {
  name         = "${var.instance_name}"
  project      = "${var.project}"
  machine_type = "${var.machine_type}"
  zone         = "${var.zone}"

  boot_disk {
    initialize_params {
      image = "${var.boot_disk_image}"
    }
  }

  network_interface {
    network = "default"

    access_config {
      // Ephemeral IP
    }
  }


  #StackDriver must be installed before this command runs,
  #as it will create the "/etc/google-fluentd/config.d" directory,
  #which is supposed to be replaced by the below provisioner

  provisioner "file" {
    source      = "${template_dir.config.destination_dir}"
    destination = "/etc/google-fluentd/config.d"
  }
}

Я хочу установить StackDriver Logging Agent на эти Debian / Ubuntu, используя Terraform, чтобы избежать SSH вручную и устанавливать его каждый раз, когда я запускаю экземпляр.

Я пытался использовать remote-exec, но у меня это не сработало. Ниже приведен код для remote-exec:

provisioner "remote-exec" {
    inline = [
      "curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh",
      "bash install-logging-agent.sh",
    ]
  }

Помещение вышеуказанного кода в ресурс google_compute_instance в моем скрипте terraform не сработало и в результате не удалось подключиться примерно через 5 минут со следующей ошибкой:

* google_compute_instance.default:
 timeout - last error: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain

Я не уверен, как подключиться к серверу, чтобы использовать remote-exec .

Ответы [ 3 ]

2 голосов
/ 09 апреля 2019

Вот ссылка для создания сценария Terraform:

https://cloud.google.com/community/tutorials/getting-started-on-gcp-with-terraform

Добавьте следующие метаданные для установки агента ведения журнала Stackdriver:

metadata_startup_script = "curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh; sudo bash install-logging-agent.sh"

НаконецSSH в экземпляр и проверьте статус службы:

$ sudo service google-fluentd status

1 голос
/ 26 апреля 2019

Использование remote-exec работает лучше всего для меня.

provisioner "remote-exec" {
    inline = [
      "curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh",
      "sudo bash install-logging-agent.sh",
      "rm install-logging-agent.sh",
    ]
    connection {
            type  = "ssh"
            user  = "${var.gce_ssh_user}"
            private_key = "${file(var.gce_ssh_private_key_file)}"
            timeout = "60s"
        }
  }

При раскрутке экземпляра LINUX используйте от remote-exec до ssh в экземпляре и выполните две упомянутые команды: Установка агента в Linux и Windows page.

Я добавил rm install-logging-agent.sh для удаления скрипта после завершения установки.

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

Похоже, вы должны использовать поле сценария запуска, чтобы указать установку агента:

https://www.terraform.io/docs/providers/google/r/compute_instance.html

metadata_startup_script = "echo hi > /test.txt"

...