테라폼(Terraform)이란?
테라폼을 설명하기전에 IaC에 대한 설명을 먼저 해야 할 것 같다. IaC는 Infrastructure as Code, 즉 코드형 인프라로, 코드 형태로 인프라를 작성, 정의, 배포, 업데이트 등 인프라를 관리하고 프로비저닝 하는 것을 뜻합니다.
여기서 테라폼은 IaC의 도구로 서버와 인프라 자체를 구성하는데 사용되는 도구입니다.
준비 사항
- EC2 사용 권한이 있는 AWS 사용자
- Terraform 설치
1. ACCESS_KEY 설정
이번 실습에서 우리는 EC2 배포 실습만 할 것이기 때문에 EC2 외 다른 권한을 부여하지 않은 AWS 사용자를 만들어 액세스 키를 설정해야 합니다.
해당 액세스 키를 발급해주고 여기서 발급받는 액세스 키는 키를 생성했을 때 빼고 재발급 받지 못하므로, 메모장에 저장을 하던지 csv파일로 다운받아 꼭! 저장해주도록 해야합니다.
키를 발급받았으면, CMD 터미널을 켜 액세스 키를 변수에 등록해주도록 해야합니다.
set AWS_ACCESS_KEY_ID = <본인 액세스 키>
set AWS_SECRET_ACCESS_KEY = <본인 시크릿 키>
set 명령어는 일반 변수 설정이라 현재 터미널에서만 사용되며,
영구적인 등록이 필요한 경우 setx 명령어를 사용해주어야 합니다.
2. Terraform을 활용한 EC2 배포
필자는 기본 VPC가 배포되어 있는 상태에서 EC2를 배포하므로, 혹여나 개인적으로 VPC를 생성하여 하는 경우 코드가 다를 수 있다는 점 주의해야합니다.
vscode를 키고 실습 폴더에 main.tf라는 테라폼 파일을 생성합니다.
그 후 코드를 하나씩 입력해주면 되는데,
여기서 provider은 공급자의 이름으로 AWS나 Azure 같은 클라우드 제공자를 입력해주면 됩니다.
또한, 어느 리전에서 인프라를 배포해야하는지 알아야 하기 때문에 리전까지 같이 적어주어야 합니다.
저는 서울 리전에 EC2를 배포할 것이기 때문에 서울 리전 정보인 ap-northeast-2를 입력해주었습니다.
resource 명령어를 통해 aws_instance를 testEC2라는 이름으로 생성해주는 코드를 작성해줍니다.
이미지는 아마존 리눅스를 사용할 것이기 때문에, 해당 이미지 제품 코드를 입력해주고 인스턴스 유형까지 입력해 줍니다.
저는 프리티어를 사용하고 있기 때문에 t2.micro를 사용했습니다.
마지막으로 태그네임이 필요한 경우 tags 명령어를 통해 해당 태그 네임을 추가해주도록 합니다.
3. Terraform 실행
terraform init // 테라폼 실행 초기화
terraform plan // 인프라 예측 결과 출력
terraform apply // 테라폼 리소스 생성
terraform apply를 실행할 때, 승인에 대한 질문이 뜰텐데, yes를 입력해주면 자동적으로 생성됩니다.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
aws_instance.testEC2: Creating...
aws_instance.testEC2: Still creating... [10s elapsed]
aws_instance.testEC2: Still creating... [20s elapsed]
aws_instance.testEC2: Still creating... [30s elapsed]
aws_instance.testEC2: Creation complete after 31s [id=i-091510d029d2b1610]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
성공적으로 테라폼이 실행된 것을 알 수 있습니다.
테라폼을 처음 이용해본결과, 코드를 통해 인프라를 자동으로 할 수 있어 정말 간편했습니다.
자주 사용될 인프라에 대한 코드만 잘 생성해놓으면 불필요한 시간 소비를 방지할 수 있을 것 같습니다.
'Devops > Iac' 카테고리의 다른 글
[Terraform] VPC 환경 구축해보기 (0) | 2023.07.26 |
---|