Skip to content

asmigar/create-nginx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Forked Repository.

What Is This?

A simple terraform project to create an EC2 instance with nginx and python installed. Also, generates ssh key to access the instance.

How To?

Pre-requisites

  1. Create an IAM user with Administrator access here
  2. Create Access key for the above user for CLI access. You will find the option under Security Credentials tab on the IAM user console.
  3. Install aws cli on your machine. Steps here.
  4. Run aws configure --profile asmigar. It will prompt for the Access Key and Secret Access Key you created in Step 2.
$ aws configure --profile asmigar
AWS Access Key ID [None]: [Enter your access key id here. And then press enter]
AWS Secret Access Key [None]: [Enter your corresponding secret access key here. And then press enter]
Default region name [None]: [You can keep it blank. So just press Enter]
Default output format [None]: [You can keep it blank. So just press Enter]
  1. Verify your aws creds are configured by running aws iam list-users --profile asmigar. You should at least see the admin user you created in step 1.
$ aws iam list-users --profile asmigar
{
    "Users": [
        {
            "Path": "/",
            "UserName": "SagarM",
            "UserId": "AIDA5FTY6HTRVAX2LBERT",
            "Arn": "arn:aws:iam::905417997539:user/SagarM",
            "CreateDate": "2024-03-26T11:11:14+00:00",
            "PasswordLastUsed": "2024-04-01T04:59:30+00:00"
        }
    ]
}
  1. Install Terraform's latest version from here
  2. Install Terragrunt's latest version from here

Create Remote State

Terraform keeps all the info about the resources in a state file. Rather than keeping it on local disk, we store it on S3 bucket. To learn more read the docs here

  1. Run below terraform command to create remote state bucket on your AWS account.
cd remote_state; terraform init; terraform apply --auto-approve
  1. The above command will output the s3 bucket name. Copy the s3 bucket name. For example,
Outputs:

terraform_state_bucket_name = [
"asmigar-<env1>create-nginx-terraform-state-<aws_account_id>", 
"asmigar-<env2>create-nginx-terraform-state-[aws_account_id]"

Create Infra

  1. Run below command to create EC2 instance. This will even output the ssh command to access the instance.
cd infra/dev; terragrunt init; terragrunt apply --auto-approve

CI/CD

Github Actions are configured to apply terraform code. You would need to create environments in the GitHub repo and create some secrets needed in workflow `tf-ci.yml

Report Bug

To raise issue/bug click here.

Want to Discuss More?

Feel free to reach out to me here.

About

terraform project for creating nginx

Resources

Stars

Watchers

Forks

Packages

No packages published