Skip to content

Terraform Provisioners

0

Hello,

When i apply my instance.tf script but i had this issue,

This is my script :

resource "aws_key_pair" "love-key" {
  key_name   = "lovekey"
  public_key = file("lovekey.pub")
}

resource "aws_instance" "love-inst" {
  ami                    = var.AMIS[var.REGION]
  instance_type          = "t2.micro"
  availability_zone      = var.ZONE1
  key_name               = aws_key_pair.love-key.key_name
  vpc_security_group_ids = ["sg-067a6076c9de32a39"]
  tags = {
    Name    = "Love-instance"
    Project = "Love"
  }
  provisioner "file" {
    source      = "web.sh"
    destination = "/tmp/web.sh"
  }
  provisioner "remote-exec" {
    inline = [
      "chmod u+x /tmp/web.sh",
      "sudo /tmp/web.sh"
    ]
  }
  connection {
    type = "ssh"
    user        = var.USER
    private_key = file("lovekey")
    host        = self.public_ip
  }
}

This error message when applying my script :

│ Error: file provisioner error │ │ with aws_instance.love-inst, │ on instance.tf line 16, in resource "aws_instance" "love-inst": │ 16: provisioner "file" { │resource "aws_key_pair" "love-key" { key_name = "lovekey" public_key = file("lovekey.pub") }

asked 2 years ago272 views

1 Answer
1
Accepted Answer

Hello, check wt this code once may resolve ur issue

resource "aws_key_pair" "love-key" {
  key_name   = "lovekey"
  public_key = file("lovekey.pub")
}

resource "aws_instance" "love-inst" {
  ami                         = var.AMIS[var.REGION]
  instance_type               = "t2.micro"
  availability_zone           = var.ZONE1
  key_name                    = aws_key_pair.love-key.key_name
  vpc_security_group_ids      = ["sg-067a6076c9de32a39"]
  tags = {
    Name       = "Love-instance"
    Project    = "Love"
  }

  connection {
    type        = "ssh"
    user        = var.USER
    private_key = file("lovekey")
    host        = self.public_ip
  }

  provisioner "file" {
    source      = "web.sh"
    destination = "/tmp/web.sh"
    depends_on  = [aws_instance.love-inst]
  }

  provisioner "remote-exec" {
    inline      = [
      "chmod u+x /tmp/web.sh",
      "sudo /tmp/web.sh"
    ]
    depends_on  = [aws_instance.love-inst]
  }
}
EXPERT

answered 2 years ago

EXPERT

reviewed 2 years ago

EXPERT

reviewed 2 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.