개요
Terraform은 Cloud Infrastructure를 자동화 하는 Iac 도구이다. 통상적으로 Iac 도구로 Terraform, Ansible이 언급되고 있는 것 같다. Terraform은 클라우드 공급자 API를 사용하여 인프라를 만들고 기본 구성 작업은 SSH를 사용하여 수행하고, Ansible은 구성 관리 작업에 특화된 오픈소스이다.
Ansible은 카카오클라우드 스쿨 엔지니어 양성과정에서 학습 해봤지만, Terraform은 한 번도 해본적이 없기에 다른 분이 올려준 자료를 보고 천천히 따라해보려 한다. Terraform은 여러 Cloud Provider를 지원하는데, 이번 학습 시간에는 AWS - Terraform 조합으로 실습해보려 한다.
목표
테라폼으로 EC2 1개 설치 해보기
- Step 1. CloudFormation을 통해 Bastion Host 생성하기
- Step 2. Bastion Host에 여러가지 Tool 설치하기(Feat. CloudFormation)
- Step 3. eksctl 명령어를 사용하여 EKS Provision
- Step 4. EKS에 게임(Super Mario) 애플리케이션 배포하기
- Step 5. 워커노드 증설 해보기
구현
환경준비
- Visual Studio 설치
- AWS 로그인
- Default VPC 사용
- EC2 한개 사용
- IAM Access-Key, Secret-Key 생성
Step 1. Amazon Linux EC2 생성, 테라폼 설치
EC2 생성하기
- 이름 : Terraform_bastion
- 이미지 : Amazon Linux 2023 AMI
- 인스턴스 유형 : t2.micro
- 키 페어 : 생성하기
- 네트워크 : Default, Public
- 보안그룹 : SSH 허용
EC2 구성 및 환경변수 지정
SSH를 사용해 EC2에 접근하기
ssh -i 0606-key.pem ec2-user@<EC2-Public-Ip Address>
아래 명령어를 입력하여 환경변수를 지정해 준다.
export AWS_ACCESS_KEY_ID=<AWS-ACCESS-KEY>
export AWS_SECRET_ACCESS_KEY=<AWS-SECRET-ACCESS-KEY>
export AWS_DEFAULT_REGION=ap-northeast-2
※ 참고사항
aws configure 보다 export가 우선이다.
새로운 터미널로 로그인 하면 aws configure의 적용을 받는다.
아래 명령어를 입력하여 aws 명령어가 잘 작동하는지 확인, 오류없이 결과가 나오면 정상
aws s3 ls
아래 명령어를 통해 페이저 사용을 비활성화 한다. (AWS CLI 출력에 번호를 매기는 기능 해제라고 한다.)
export AWS_PAGER=""
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-usage-pagination.html
AWS CLI 페이지 매김 옵션 사용 - AWS Command Line Interface
--starting-token 파라미터는 null이거나 비어있을 수 없습니다. 이전 명령이 NextToken 값을 반환하지 않으면 반환할 더 이상의 항목이 없는 것이기 때문에 명령을 다시 호출할 필요가 없습니다.
docs.aws.amazon.com
Terraform 설치
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
terraform -install-autocomplete
Step 2. Terraform으로 EC2 1개 설치하기
main.tf파일 작성하기
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_instance" "example" {
ami = "ami-0425f132103cb3ed8"
instance_type = "t2.micro"
}
main.tf가 있는 폴더에서 terraform init 명령어 입력하기
tree .terraform 명령어로 폴더 구조 확인하기
terraform plan 명령어로 어떤 인프라가 생성되는지 확인하기
terraform apply 명령어로 EC2 생성!
위 그림처럼 이름이 없이 EC2가 생성된 것을 확인할 수 있다!
Step 3. Terraform으로 EC2 정보 변경하기
위 단계를 거쳐 EC2를 생성하면 이름이 없는 채로 생성된다. 서버 이름을 넣어주자!(Terraform으로 Provision 한 리소스 정보 수정하기)
기존 main.tf 파일을 아래와 같이 수정해준다.(tags 추가)
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_instance" "example" {
ami = "ami-0425f132103cb3ed8"
instance_type = "t2.micro"
}
tags = {
Name="aws-tts-seoul-web01"
}
terraform plan
terraform apply
기존에 Name이 비어있던 EC2 인스턴스가 "aws-seoul"로 변경된 것을 확인할 수 있다.
삭제하기
terraform destroy
https://brunch.co.kr/@topasvga/2752
(Start) 1. 테라폼-AWS-설치-2022
다음은 주말 CloudNet 테라폼 스터디 내용 참고하여 정리한 부분입니다. https://gasidaseo.notion.site/gasidaseo/CloudNet-Blog-c9dfa44a27ff431dafdd2edacc8a1863 내용은 계속 업데이트 됩니다. 기본 환경은 AWS , 리눅스
brunch.co.kr
'클라우드' 카테고리의 다른 글
[Docker] Centos이미지 기반 httpd 서비스 구성하기 (0) | 2023.07.14 |
---|---|
[Docker] Docker로 컨테이너 배포하기 (0) | 2023.07.14 |
[EKS] Amazon EKS 설치하기 (0) | 2023.06.22 |
kubeadm으로 고가용성 클러스터 생성-1 (0) | 2023.04.03 |
[k8s] Deployment (0) | 2023.03.08 |