Terraform is a powerful Infrastructure as Code (IaC) tool that allows you to automate cloud infrastructure provisioning. When working with Amazon EC2 instances, you may need to upload local files to the instance. In this guide, we will walk through how to upload local files to an Amazon EC2 instance using Terraform. Whether you are using AWS directly or working on a Windows VPS UK, this tutorial will help you automate the process efficiently.

Step 1: Install Terraform

Before you start, ensure that Terraform is installed on your local machine. You can download Terraform from the official website or use your system’s package manager:

sudo apt-get install terraform

Verify that Terraform is installed correctly:

terraform --version

Step 2: Set Up AWS Credentials

For Terraform to interact with your AWS account, it needs access to your AWS credentials. You can configure the AWS CLI to store your credentials, or manually create an access key and secret key from the AWS Management Console.

aws configure

Enter your AWS Access Key ID and Secret Access Key when prompted.

Step 3: Define Your EC2 Instance in Terraform

Create a new directory for your Terraform project and navigate to it:

mkdir terraform-ec2
cd terraform-ec2

Inside this directory, create a new main.tf file to define your EC2 instance:

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

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"

  tags = {
    Name = "TerraformEC2"
  }

  connection {
    type        = "ssh"
    user        = "ec2-user"
    private_key = file("~/.ssh/id_rsa")
    host        = self.public_ip
  }
}

This file defines a simple EC2 instance in the "us-west-2" region. Make sure to replace the AMI ID with an AMI available in your preferred region.

Step 4: Upload Local Files Using Provisioners

To upload files from your local machine to the EC2 instance, you can use the file provisioner in Terraform. Modify your main.tf file to include the following code:

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"

  tags = {
    Name = "TerraformEC2"
  }

  connection {
    type        = "ssh"
    user        = "ec2-user"
    private_key = file("~/.ssh/id_rsa")
    host        = self.public_ip
  }

  provisioner "file" {
    source      = "path/to/local/file.txt"
    destination = "/home/ec2-user/file.txt"
  }

  provisioner "remote-exec" {
    inline = [
      "sudo chmod 600 /home/ec2-user/file.txt"
    ]
  }
}

In this example, the file provisioner uploads a local file (replace path/to/local/file.txt with your file path) to the EC2 instance at /home/ec2-user/file.txt. The remote-exec provisioner runs a command on the instance to change the file's permissions.

Step 5: Apply the Terraform Configuration

Initialize Terraform in your project directory to download the necessary providers:

terraform init

Next, apply the configuration to provision the EC2 instance and upload your local files:

terraform apply

Confirm the action by typing yes when prompted. Terraform will create the EC2 instance and upload the specified files to the instance.

Step 6: Verify File Upload

After the EC2 instance is created, you can SSH into the instance to verify that the file was successfully uploaded:

ssh -i ~/.ssh/id_rsa ec2-user@

Once logged in, check the file at the specified destination:

Was dit antwoord nuttig? 0 gebruikers vonden dit artikel nuttig (0 Stemmen)