[테라폼] 테라폼 AWS 설정

https://aws.amazon.com/ko/

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

개발자, 데이터 사이언티스트, 솔루션스 아키텍트 또는 AWS에서 구축하는 방법을 배우는 데 관심이 있는 모든 사용자용 무료 온라인 교육 AWS 전문가가 구축한 500개 이상의 무료 디지털 교육 과정

aws.amazon.com

우선 AWS 계정이 있어야한다. 없으면 하나 만들면 된다. 신규가입하면 1년동안 프리티어 계정 혜택을 주니 가입하도록 하자

계정을 만들었다면 리소스 관리자인 IAM을 검색해서 들어가준다.

 

액세스 관리에 사용자를 눌러서 사용자가 없다면 사용자 추가로 새 사용자를 만들 수 있다.

테라폼 사용자에게 AWS 관리 콘솔에 접근 항목 말고, API 사용 접근만 사용하려면 프로그래밍 방식 액세스에 체크를 하고 넘어간다.

이것으로 우리가 테라폼에서 필요한 액세스 키 ID와 비밀 액세스 키를 설정할 수 있다. 그리고 밑에 다음을 눌러서 진행한다.

그룹에 사용자를 추가해야하는데 그룹이 없다면 그룹을 생성해야한다. 

그룹을 생성할 때 admin 그룹을 만들어도 되는데, 나는 있으니까 테라폼 관리자 그룹을 따로 만들거다.

 

그룹 생성을 누른 후, 모든 것에 접근할 수 있는 관리자 접근을 허용해준다. 그리고 밑에 그룹생성을 눌러 다음으로 이동한다.

 

태그는 할 필요 없어서 오른쪽 밑 다음:검토 눌러서 넘어간다.

 

이제 내가 했던 옵션들이 맞는지 확인하고, 맞으면 오른쪽 밑 사용자 만들기를 눌러서 넘어가면 된다.

 

사용자 만들기를 하면 이렇게 사용자와 액세스 키 ID 비밀 액세스 키가 표시된다.


그리고 ec2에 보안그룹에 가서 필터 옵션에서 default를 검색하면 Vpc 기본 보안 그룹이 뜬다. 

인바운드 규칙이 활성화되어 있는지 확인해야한다.

 

보안그룹 하나를 눌러서 오른쪽 밑 인바운드 규칙 편집을 누른다.

그리고 모든 트래픽을 허용해주고 내 IP를 허용해준다. 


AWS에 인스턴스 올리기

이런 파일구조를 가지고 있는 디렉토리에서 작업을 할것이다.

IAM 사용자 액세스키는 IAM> 사용자 > 보안 자격 증명 에서 확인 가능하다.

액세스키와 시크릿키를 입력하고 (보안상 가림), ami는 찾아봐야한다.

https://cloud-images.ubuntu.com/locator/ec2/ 

 

Ubuntu Amazon EC2 AMI Finder

Amazon EC2 AMI Locator As Ubuntu cloud images are uploaded and registered on the Amazon EC2 cloud, they are referred to as AMI (Amazon Machine Images). Each AMI is a machine template from which you can instantiate new servers. Each AMI has its own unique I

cloud-images.ubuntu.com

여기서 오른쪽 밑 search에서 사용하고자 하는 지역을 입력하면 결과값이 나온다.

AMI는 만료기한이 있어서 지금 글을 쓰는 시점에서의 검색결과와 여러분이 찾을때의 ami id가 다를 수 있다.

t2.micro에는 인스턴스 저장 장치 대신 외부 저장 장치인 ebs만 있어서, hvm-ebs를 선택해줘야한다.

provider "aws" {
  access_key = "액세스키"
  secret_key = "시크릿키"
  region     = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0688ba7eeeeefe3cd"
  instance_type = "t2.micro"
}

이런 구조가 나올 것이다.

 

제일 처음 시작은 terraform init이다. provider 플러그인을 초기화하기 때문에 aws의 플러그인을 다운로드 하는 중이다.

그리고 이제 terraform plan 이나 terraform apply를 할 수 있다.

*** 새로운 디렉토리를 생성할 때 마다 apply를 실행하기 전 꼭 terraform init을 실행해야한다.

 

terraform apply

terraform apply를 하면 적용하고 난 후의 변경사항이 주욱 나온다 그리고 제

일밑에 Enter a value 옆에 yes를 하면 테라폼 작성한 파일을 기반으로 AWS 클라우드에 올라간다.

그런데 계속 이런 메세지가 뜬다... ㅜ 

스택 오버플로우에서 찾아보니 해당 vpc의 서브넷id를 resource 인스턴스 안에 넣어주면 된다고 한다. 

https://stackoverflow.com/questions/67973518/terraform-simple-script-says-error-error-launching-source-instance-vpcidnotsp   

그래서 콘솔창에서 해당 Vpc의 서브넷 아이디를 찾아서 넣은 뒤 

provider "aws" {
  access_key = "xxxxxxxxxxxx"
  secret_key = "xxxxxxxxxxxx"
  region     = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0688ba7eeeeefe3cd"
  instance_type = "t2.micro"
  subnet_id = "subnet-0daf0e4be40340c35"
}

terraform apply가 진행되고, Apply complete가 된다.

그리고 ec2에 인스턴스를 보면 하나 돌아가고 있는 t2.micro가 보인다. terraform으로 만든 인스터스다!

 

 

terraform destroy를 하면 apply를 할때랑 마찬가지로 Enter a value 가 나오는데 yes를 하면 테라폼으로 구축한것들이 AWS상에서 사라지게 된다.

그리고 콘솔상에서 확인해보면, 아까 실행중이던 인스턴스가 없어진것을 볼 수 있다. 


terraform plan

인프라에 적용하지 않아도, 어떤것이 만들어질 지 미리 보여준다.

이렇게 만들어질 인프라에 대한 정보를 보여준다. 제일 밑에 Note 로 -out에 대한 옵션을 성명해준다.


terraform plan -out <파일명>

terraform plan -out <파일명>

terraform plan -out out.terraform 으로 저장했다. 그리고 instance.tf 밑에 출력파일 out.terraform이 생긴것을 볼 수 있다.

 

terraform apply <출력 파일>

 

terraform apply out.terraform 을 입력하니 아까 저장되어있는 플랜대로 인프라를 구축해서 완료했다는 것을 표시해준다.

콘솔에 가서 확인해보니 이제 막 만들어서 초기화를 하고 있는 인스턴스도 보인다.

개발환경에서는 꼭 plan -out으로 만들어질 인프라를 확인하고 테라폼 빌드하자

JUNE .

20'S LIFE IN SYDNEY and BUSAN

    이미지 맵

    DevOps Study/Terraform 다른 글

    이전 글

    다음 글