• aws cli 버전 2  설치
sudo apt update -y
sudo apt install -y unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
aws-cli/2.7.6 Python/3.9.11 Linux/5.13.0-1025-aws exe/x86_64.ubuntu.20 prompt/off

 

  • aws 정책 설정 (IAM)

 

 

  • aws 사용자 설정 (IAM)

액세스 키ID 와 비밀 액세스 키를 저장해 둔다. (창 닫기면 다시 확인불가)

 

 

 

  • AWS CLI를 통한 configure(ap-northeast-2' 는 서울 region)
aws configure
AWS Access Key ID [None]: AAAABBBCCC3333EFFFF
AWS Secret Access Key [None]: AAEFFFE23432432432432423432423
Default region name [None]: ap-northeast-2
Default output format [None]:  json
aws lightsail get-bundles --region ap-northeast-2
aws lightsail get-bundles --region ap-northeast-2 --query 'bundles[].{price:price,cpuCount:cpuCount,ramSizeInGb:ramSizeInGb,diskSizeInGb:diskSizeInGb,bundleId:bundleId,instanceType:instanceType,supportedPlatforms:supportedPlatforms[0]}' --output table
aws lightsail get-bundles --region eu-west-1 --query 'bundles[].{price:price,cpuCount:cpuCount,ramSizeInGb:ramSizeInGb,diskSizeInGb:diskSizeInGb,bundleId:bundleId,instanceType:instanceType,supportedPlatforms:supportedPlatforms[0]}' --output table

 

  • 액세스 키, 시크릿 키 환경변수에 등록
export AWS_ACCESS_KEY_ID=AAABBBCC324324324234
export AWS_SECRET_ACCESS_KEY=AAABFDSAFDSBBCC3FDSAF24324324234

 

  • versions.tf 파일 작성 
mkdir terraform-prac
cd terraform-prac/

 

  • vi versions.tf
terraform {
  required_providers {
    aws = {
      source = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
}

provider "aws" {
  access_key = ""
  secret_key = ""
  region = "ap-northeast-2"
}

 

terraform init

terraform version

 

  • ssh key 생성
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vagrant/.ssh/id_rsa): ./lightsail_key
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in ./lightsail_key.
Your public key has been saved in ./lightsail_key.pub.

 

  • vi main.tf
resource "aws_lightsail_key_pair" "lightsail-test" { 
  name = "lightsail-test" 
  public_key = file("./lightsail_key.pub") 
}


resource "aws_lightsail_instance" "lightsail_test" {
  name              = "lightsail-test-instance"
  availability_zone = "ap-northeast-2a" # seoul regin 'a'
  blueprint_id      = "ubuntu_18_04"
  bundle_id         = "micro_2_0"
  key_pair_name     = aws_lightsail_key_pair.lightsail-test.name
  
  user_data = <<-EOF
    #! /bin/bash
    sudo mkdir -p /home/ubuntu/test
    echo "<h1>Hello, World.</h1>" | sudo tee /ubuntu/test/hello
    
  EOF
  
  tags = {
    Name = "my-lightsail"
  }
}

resource "aws_lightsail_instance_public_ports" "lightsail_firewall_test" { 
    instance_name = aws_lightsail_instance.lightsail_test.name 

    # port information
    port_info {
            protocol = "tcp"
            from_port = 80
            to_port = 0
    } 
    port_info {
            protocol = "tcp"
            from_port = 22
            to_port = 0
    }
    port_info {
            protocol = "tcp"
            from_port = 3306
            to_port = 0
    }
}

 

  •  ssh 접속 테스트
terraform plan # 테스트

terraform apply # 수행

[AWS화면에서 인스턴스 생성확인]

ssh -i ./lightsail_key ubuntu@10.11.11.11  # SSH 접속


[인스턴스 삭제]
terraform destroy

 

 

 

[참고]

https://not-to-be-reset.tistory.com/440

 

'Infra Structure > Terraform' 카테고리의 다른 글

[Terraform] Terraform 설치  (0) 2022.06.05

+ Recent posts