Построен Terraform Remote Exe c Host IP из ресурса EC2 - PullRequest
0 голосов
/ 31 января 2020

Looooong Time Lurker и первый раз постер здесь o /

В настоящее время я пытаюсь создать экземпляр AWS EC2 с подключенным блочным устройством EBS, который затем требует установленного MongoDB.

Итак, я пошел по пути создания экземпляра EC2 и подключения тома EBS, но для удаленного exe-файла c, который мне нужен для запуска экземпляра, необходим IP-адрес хоста для подключения и запуска MongoDB команды установки.

Он просто сохраняет время ожидания на S SH, что бы я ни пытался. Теперь я, вероятно, просто пропускаю шаг или иду по этому пути неправильно, но, надеюсь, вы можете помочь.

Любая помощь будет принята с благодарностью. : D

Ниже приведен пример кода, который я собрал вместе:

    provider "aws" {
  region     = "eu-west-1"
  access_key = "xxxxxxx"
  secret_key = "xxxxxxxx"
}

resource "tls_private_key" "mongo" {
  algorithm = "RSA"
  rsa_bits  = 4096
}

resource "aws_key_pair" "generated_key" {
  key_name   = "MongoKey"
  public_key = "${tls_private_key.mongo.public_key_openssh}"
}

data "aws_ami" "ubuntu" {
  most_recent = true
  owners      = ["099720109477"]

  filter {
    name = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-*"]
  }


}


resource "aws_instance" "web" {
    ami                         = "${data.aws_ami.ubuntu.id}"
    instance_type               = "t2.micro"
    key_name                    = "MongoKey"
    monitoring                  = true
    associate_public_ip_address = true


  root_block_device {
    volume_size = 40
  }

  ebs_block_device {
    volume_size = 100
    device_name = "xvda"    
  }

  tags = {
    Name = "MongoDB"
  }


    provisioner "remote-exec" {
            connection {
                type      = "ssh"
                user      = "ubuntu"
                host      = "MongoDB"
              }

      inline = [
        "sudo apt-get install gnupg",
        "wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -",
        "echo deb [ arch=amd64,arm64,s390x ] http://repo.mongodb.com/apt/ubuntu xenial/mongodb-enterprise/4.2 multiverse | sudo tee /etc/apt/sources.list.d/mongodb-enterprise.list",
        "sudo apt-get update",
        "sudo apt-get install -y mongodb-enterprise",
        "sudo service mongod start",
        "sudo service mongod status"
      ]
  }

Ответы [ 2 ]

0 голосов
/ 31 января 2020

Если вы продолжаете сталкиваться с проблемами / трудностями при подключении с вашим подходом remote-exec, я бы рекомендовал рассмотреть параметр user-data в качестве замены. сценарий user-data будет запущен во время инициализации вашего экземпляра, поэтому вам не нужно открывать какие-либо сеансы s sh для выделения ресурсов.

Вы можете выполнить sh, обновив aws_instance ресурс для чего-то вроде этого:

resource "aws_instance" "web" {
    ami                         = "${data.aws_ami.ubuntu.id}"
    instance_type               = "t2.micro"
    key_name                    = "MongoKey"
    monitoring                  = true
    associate_public_ip_address = true


  root_block_device {
    volume_size = 40
  }

  ebs_block_device {
    volume_size = 100
    device_name = "xvda"    
  }

  tags = {
    Name = "MongoDB"
  }

    user_data = << EOF
        #! /bin/bash
        sudo apt-get install gnupg,
        wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -,
        echo deb [ arch=amd64,arm64,s390x ] http://repo.mongodb.com/apt/ubuntu xenial/mongodb-enterprise/4.2 multiverse | sudo tee /etc/apt/sources.list.d/mongodb-enterprise.list,
        sudo apt-get update,
        sudo apt-get install -y mongodb-enterprise,
        sudo service mongod start,
        sudo service mongod status
    EOF
  }

Надеюсь, это поможет.

больше примеров пользовательских данных

0 голосов
/ 31 января 2020

Можете ли вы попробовать изменить раздел подключения, как показано ниже

connection {
            type        = "ssh"
            user        = "ubuntu"
            host        = "${aws_instance.web.private_ip}"
            private_key = "${tls_private_key.mongo.private_key_pem}"

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