우선 AWS 계정이 있어야한다. 없으면 하나 만들면 된다. 신규가입하면 1년동안 프리티어 계정 혜택을 주니 가입하도록 하자
계정을 만들었다면 리소스 관리자인 IAM을 검색해서 들어가준다.
액세스 관리에 사용자를 눌러서 사용자가 없다면 사용자 추가로 새 사용자를 만들 수 있다.
테라폼 사용자에게 AWS 관리 콘솔에 접근 항목 말고, API 사용 접근만 사용하려면 프로그래밍 방식 액세스에 체크를 하고 넘어간다.
이것으로 우리가 테라폼에서 필요한 액세스 키 ID와 비밀 액세스 키를 설정할 수 있다. 그리고 밑에 다음을 눌러서 진행한다.
그룹에 사용자를 추가해야하는데 그룹이 없다면 그룹을 생성해야한다.
그룹을 생성할 때 admin 그룹을 만들어도 되는데, 나는 있으니까 테라폼 관리자 그룹을 따로 만들거다.
그룹 생성을 누른 후, 모든 것에 접근할 수 있는 관리자 접근을 허용해준다. 그리고 밑에 그룹생성을 눌러 다음으로 이동한다.
태그는 할 필요 없어서 오른쪽 밑 다음:검토 눌러서 넘어간다.
이제 내가 했던 옵션들이 맞는지 확인하고, 맞으면 오른쪽 밑 사용자 만들기를 눌러서 넘어가면 된다.
사용자 만들기를 하면 이렇게 사용자와 액세스 키 ID 비밀 액세스 키가 표시된다.
그리고 ec2에 보안그룹에 가서 필터 옵션에서 default를 검색하면 Vpc 기본 보안 그룹이 뜬다.
인바운드 규칙이 활성화되어 있는지 확인해야한다.
보안그룹 하나를 눌러서 오른쪽 밑 인바운드 규칙 편집을 누른다.
그리고 모든 트래픽을 허용해주고 내 IP를 허용해준다.
AWS에 인스턴스 올리기
이런 파일구조를 가지고 있는 디렉토리에서 작업을 할것이다.
IAM 사용자 액세스키는 IAM> 사용자 > 보안 자격 증명 에서 확인 가능하다.
액세스키와 시크릿키를 입력하고 (보안상 가림), ami는 찾아봐야한다.
https://cloud-images.ubuntu.com/locator/ec2/
여기서 오른쪽 밑 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 인스턴스 안에 넣어주면 된다고 한다.
그래서 콘솔창에서 해당 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으로 만들어질 인프라를 확인하고 테라폼 빌드하자
댓글