brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Oct 17. 2022

19탄-(Start) 1. 테라폼-AWS-설치-2022


다음은 주말 CloudNet 테라폼 스터디 내용 참고하여  정리한 부분입니다.

https://gasidaseo.notion.site/gasidaseo/CloudNet-Blog-c9dfa44a27ff431dafdd2edacc8a1863



내용은 계속 업데이트 됩니다.

기본 환경은 AWS , 리눅스 서버를 사용합니다.




목표

환경 구축  - 리눅스 서버 1대 설치, 테라폼 설치

EC2  1대 설치

EC2  1대 정보 변경해보기




<1> 아마존 리눅스 EC2 생성, 테라폼 설치

<2> 테라폼으로  EC2 1개 설치 - 실습1

<3> EC2 정보 변경 - 실습2



<1> 아마존 리눅스 EC2 생성, 테라폼 설치


환경 준비?


1

mac, windows 사용시 - 비쥬얼 스튜디오 코드 설치


2

AWS 로그온

AWS 디폴트 VPC사용 요망.

디폴트 VPC를 삭제한 경우  

콘솔 - Your VPCs에서 다시 한번에 바로 생성 가능하다.


3

AWS에  ec2 하나를 생성해 사용합니다.

ppk로 만들기

보안 그룹은 디폴트 = ssh만 허용 , http는 허용 안됨.


IAM > Access-key/Secret key 1개 생성.

테스트 환경이라  admin권한 부여



3

(선택)

ec2에서 환경변수로 지정


linux , mac

export AWS_ACCESS_KEY_ID=Axxxxxxxxxx

export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxLEKEY

export AWS_DEFAULT_REGION=ap-northeast-2


Windows

set AWS_ACCESS_KEY_ID=Axxxxxxx

set AWS_SECRET_ACCESS_KEY=xxxxxxxxxxx

set AWS_DEFAULT_REGION=ap-northeast-2



4

//  참고

aws configure 보다 export가 우선이다.

export AWS_DEFAULT_REGION=ap-northeast-2   에 만들어 진다.

aws configure로 설정시 .aws 폴더 아래 , configure에 리전 정보가 있다.


푸티로 새로 로그인 하면  aws configure의 적용을 받는다.



5

aws configure 


aws s3 mb s3://dasdadq223

aws s3 ls로 확인




# 페이저 사용 비활성화 = 명령어 사용시 바로 프롬프트가 떨어지도록 한다.


리눅스

export AWS_PAGER=""


windows

set AWS_PAGER=""


명령어 실행 시 편리한 툴 설치

yum install tree jq watch



6

cli로 디폴트 vpc 확인

aws ec2 describe-vpcs --filter 'Name=isDefault,Values=true' | jq '.Vpcs[0].VpcId'


테이블로 보기

aws ec2 describe-subnets --filter 'Name=vpc-id,Values=vpc-<자신의VPC ID>' --output table

aws ec2 describe-subnets --filter 'Name=vpc-id,Values=vpc-00b1f2343611598c2' --output table



7

amazon linux 테라폼 설치


sudo yum install -y yum-utils

sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo

sudo yum -y install terraform

terraform version

// os별 설치법  https://www.terraform.io/downloads



8

자동 완성 설치

terraform -install-autocomplete





<2> 테라폼으로  EC2 1개 설치 - 실습1


1

최신 AMI 찾기

콘솔에서 ami 이미지를 확인하거나

또는  cli로 확인한다.

ami-0425f132103cb3ed8




aws ec2 describe-images --owners self amazon --query 'Images[*].[ImageId]' --output text


aws ssm get-parameters-by-path --path /aws/service/ami-amazon-linux-latest

aws ssm get-parameters-by-path --path /aws/service/ami-amazon-linux-latest --query "Parameters[].Name"

//  리전마다 Ami가 다르므로 맞는 ami를 사용하자. 여기서는 아마존 리눅스 이미지를 사용한다.

// 콘솔에서도 이미지 이름을 확인할 수 있다.



2

EC2 생성 모니터링


export AWS_PAGER=""

while true; do aws ec2 describe-instances --query "Reservations[*].Instances[*].{PublicIPAdd:PublicIpAddress,InstanceName:Tags[?Key=='Name']|[0].Value,Status:State.Name}" --filters Name=instance-state-name,Values=running --output text ; echo "------------------------------" ; sleep 1; done




3

aws configure


또는

export AWS_ACCESS_KEY_ID=Axxxxxxxxxx

export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxMPLEKEY

export AWS_DEFAULT_REGION=ap-northeast-2



4

서울 리전의 경우


cat <<EOT > main.tf

provider "aws" {

  region = "ap-northeast-2"

}

resource "aws_instance" "example" {

  ami           = "ami-0425f132103cb3ed8"

  instance_type = "t2.micro"

}

EOT



설명?


// provider : aws  와 같은 공급자

// resource : 만들고자하는 인프라.

// region


// resource Provider_타입_이름

// resource "aws_instance" "example" {

// aws 인스턴스를 만든다. 이름은 example 이다.



5

오레곤에 만드는 경우


cat <<EOT > main.tf

provider "aws" {

  region = "us-west-2"

}

resource "aws_instance" "example" {

  ami           = "ami-08e2d37b6a0129927"

  instance_type = "t2.micro"

}

EOT





 

6

terraform init    

프로바이더 플러그인 가져온다.


# tree .terraform

.terraform

└── providers

    └── registry.terraform.io

        └── hashicorp

            └── aws

                └── 4.34.0

                    └── linux_amd64

                        └── terraform-provider-aws_v4.34.0_x5



7

terraform plan   

내가 만든 코드가 어떤 인프라로 변하는지 리스트가 나온다.




8

terraform apply --auto-approve   

생성


또는


terraform apply

yes 로 생성한다.



7

모니터링 결과

이름 없이 생성 된다.

------------------------------

None    43.201.8.122    running




<3> EC2 정보 변경 - 실습2


서버명을 넣어보자~   tags


1

서울에서



cat <<EOT > main.tf

provider "aws" {

  region = "ap-northeast-2"

}

resource "aws_instance" "example" {

  ami           = "ami-0425f132103cb3ed8"

  instance_type = "t2.micro"


  tags = {

    Name = "aws-tts-seoul-web01"

  }


}

EOT





2

오레곤에 한다면


cat <<EOT > main.tf

provider "aws" {

  region = "us-west-2"

}

resource "aws_instance" "example" {

  ami           = "ami-08e2d37b6a0129927"

  instance_type = "t2.micro"

}


  tags = {

    Name = "t101-study"

  }


}

EOT




2

terraform plan



3

terraform apply

yes



4

모니터링

서버명  aws-tts-seoul-web01 로 변경 됨.


------------------------------

None    43.201.8.122    running

------------------------------

None    43.201.8.122    running

------------------------------

aws-tts-seoul-web01     43.201.8.122    running

------------------------------

aws-tts-seoul-web01     43.201.8.122    running



5

삭제 ?

모든 리소스를 삭제 한다. 주의!


terraform destroy --auto-approve


또는

terraform destroy

 yes




다음 과정

https://brunch.co.kr/@topasvga/2753




https://brunch.co.kr/@topasvga/2421


감사합니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari