1
resposta

user_data erro na criação do script

Olá pessoal verifiquei aqui no fórum que teve pessoas com o mesmo problema, porém não consegui sair do outro lado pra resolução. Eu criei o script, porém ele só muda o nome da instância, ele não cria o script real, ainda continua o antigo hello world. segue o código, é algum problema de identação eu creio mas não entendi como seria a identação necessária.

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

  required_version = ">= 1.2.0"
}

provider "aws" {
  region = "us-west-1"
}

resource "aws_instance" "app_server" {
  ami           = "ami-0da7657fe73215c0c"
  instance_type = "t2.micro"
  key_name = "iac-alura"
  user_data = <<- EOF
     #!/bin/bash
     cd /home/ubuntu
     echo "<h1>FEITO COM TERRAFORM</h1>" > index.html
     nohup busybox httpd -f -p 8080 &
  EOF
  tags = {
    Name = "teste aws1"
  }
}
1 resposta

Oi!

Parece que a parte do user_data no seu script Terraform é onde você está tentando executar alguns comandos no servidor quando ele é inicializado. Se entendi certo, o problema é que o conteúdo do arquivo index.html ainda está sendo definido como "hello world" em vez do que você queria, certo?

Bem, olhando para o seu script, parece que a identação do conteúdo do user_data está correta. O que eu faria para solucionar isso é garantir que o comando echo está realmente sobrepondo o conteúdo do index.html.

Talvez seja útil adicionar um comando rm para excluir o index.html existente antes de criar um novo. Você pode tentar algo assim:

user_data = <<-EOF
  #!/bin/bash
  cd /home/ubuntu
  rm index.html  # Remover o arquivo existente
  echo "<h1>FEITO COM TERRAFORM</h1>" > index.html
  nohup busybox httpd -f -p 8080 &
EOF

Isso deve garantir que você está removendo o arquivo existente antes de criar um novo com o conteúdo desejado.

Dê uma tentativa e veja se resolve o seu problema. Se ainda tiver dificuldades, é só me chamar!