3
respostas

Bash do user_data não executa

Olá pessoal, consigo subir minha instancia. más o bash do user_data ela não é executada. Pra funcionar a pagina externa eu tenho que executar o bash na linha de comando da instancia. Agradeço desde já a ajuda.

Segue meu main.tf

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.16"
    }
  }


}

provider "aws" {
  region  = "sa-east-1"
}

resource "aws_instance" "app_server" {
  key_name = "alura"  
  ami           = "ami-015e30624fffff117"
  instance_type = "t2.micro"
  user_data = <<-EOF
              #! /bin/bash
              cd /home/ubuntu/
              echo "Deploy via terraform" > index.html
              nohup busybox httpd -f -p 8080 &
              EOF


  tags = {
    Name = "teste aws5"
  }
}
3 respostas

Aqui também to tendo esse problema.

João, eu tive que setar também o security group no main.tf, e usar um script diferente para criar servidor, criei com apache2

main.tf:

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws",
      version = "~> 4.16"
    }
  }

  required_version = ">= 1.2.0"
}

provider "aws" {
  profile = ""
  region  = ""
}

resource "aws_instance" "app_server" {
  ami           = ""
  instance_type = ""
  key_name      = ""

  user_data                   = <<-EOT
    ${file("${path.module}/userdata.sh")}
  EOT
  user_data_replace_on_change = true

  vpc_security_group_ids = [""]
  subnet_id              = ""
  tags = {
    Name = "Teste AWS"
  }
}

e criei na mesma pasta um arquivo chamado userdata.sh

#!/bin/bash
cd /home/ubuntu
sudo apt install apache2 -y
sudo systemctl start apache2
sudo systemctl start apache2.service
sudo ufw allow 80/tcp comment 'accept Apache'
sudo ufw allow 443/tcp comment 'accept HTTPS connections'
echo "<h1> Feitoria terraform </h1>" > index.html

Ainda estou com problema pra fazer ele pegar o index.html, por enquanto tá rodando o index.html padrão do apache mesmo, mas pelo menos roda o servidor.

module "ec2_instance" {

count = 1

source = "terraform-aws-modules/ec2-instance/aws"

version = "~> 3.0"

name = "instancia_terraform"

ami = "ami-06a7641d5bd7bdc65"

instance_type = "t2.micro"

subnet_id = module.vpc.public_subnets[0]

vpc_security_group_ids = [aws_security_group.sg_443.id, aws_security_group.sg_port_80.id, aws_security_group.sg_ssh.id]

associate_public_ip_address = true

key_name = "par_ohio

user_data = <<-EOF

#!/bin/bash

sudo apt-get update -y

sudo apt-get install apache2 apache2-utils mariadb-client php7.4 libapache2-mod-php7.4 php7.4-mysql -y

sudo apt-get install php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline -y

sudo apt-get install php7.4-bcmath php7.4-curl php7.4-fpm php7.4-gd php7.4-xml php7.4-mbstring -y

sudo systemctl enable apache2.service

EOF

o index tu pode criar via CAT