Как отправить локальные файлы, используя Terraform Cloud в качестве удаленного бэкэнда? - PullRequest
0 голосов
/ 01 февраля 2020

Я создаю AWS экземпляр EC2 и использую Terraform Cloud в качестве бэкэнда.

в . / Main.tf :

terraform {

    required_version = "~> 0.12"
    backend "remote" {
    hostname     = "app.terraform.io"
    organization = "organization"
    workspaces { prefix = "test-dev-" }

  }

в . / Modules / instances / function.tf


resource "aws_instance" "test" {
    ami = "${var.ami_id}"
    instance_type = "${var.instance_type}"
    subnet_id = "${var.private_subnet_id}"
    vpc_security_group_ids = ["${aws_security_group.test_sg.id}"]
    key_name      = "${var.test_key}"                                        

    tags = {
        Name = "name"
        Function = "function"
    }

  provisioner "remote-exec" {
    inline = [
      "sudo useradd someuser"
    ]

    connection {
      host = "${self.public_ip}"
      type        = "ssh"
      user        = "ubuntu"
      private_key = "${file("~/.ssh/mykey.pem")}"
    }
  }
}

и в результате я получил следующую ошибку:

Call to function "file" failed: no file exists at /home/terraform/.ssh/...

, так что здесь происходит то, что terraform пытается найти файл в Terraform Cloud вместо моего локального компьютера. Как я могу передать файл с моего локального компьютера и все еще использовать Terraform Cloud?

1 Ответ

0 голосов
/ 25 марта 2020

Нет прямого способа сделать то, что я спросил в вопросе. В итоге я загрузил ключи в AWS с его CLI следующим образом:

aws ec2 import-key-pair --key-name "name_for_the_key" --public-key-material file:///home/user/.ssh/name_for_the_key.pub

, а затем сослался на него так:

resource "aws_instance" "test" {

    ami = "${var.ami_id}"

    ...

    key_name      = "name_for_the_key"   

    ...

}

Примечание Да file:// выглядит как синтаксис "Windowsest", но вы должны использовать его и на linux.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...