728x90
반응형
2장. 왜 테라폼인가?
- 테라폼의 기본 사용법 설명
- 테라폼 명령어를 실행하는 방법부터 테라폼을 사용하여 트래픽을 분산시키는 로드 밸런서가 있는 서버 클러스터를 배포하는 방법까지 익실 수 있습니다.
- 해당 인프라는 확장 가능하며 활용도가 높은 웹 서비스를 실행하기 좋은 출발점
- 이어지는 장에서 더욱 발전시켜 나갈 것
2.1 AWS 계정 설정
- AWS 계정이 없으신 분들은 계정 생성을 진행해주시면 됩니다!
2.2 테라폼 설치
- Terraform 공식 사이트에서 설치를 진행해주셔도 좋을 것 같습니다.
- Mac 사용자분들은 $ brew install terraform 명령어로 설치도 가능하십니다.
- 저는 tfenv 를 설치하여 다양한 테라폼 버전으로 테스트를 진행했었습니다. (1.0.2 ver 진행)
2.3 단일 서버 배포
- 빈 폴더 생성
- main.tf 파일 생성
# main.tf
# 책의 예제는 "us-east-2" 리전 사용
# 저희는 "ap-northeast-2", 서울리전을 사용하여 진행합니다.
provider "aws" {
region = "ap-northeast-2"
}
# resource 작성 규칙
#
# resource "<PROVIDER>_<TYPE>" "<NAME>" {
# [CONFIG ...]
# }
#
# 별다른 옵션 없이 작성 후, 실행하면 default vpc의 랜덤한 서브넷에 퍼블릭 (유동) IP 달고 (대충 그냥) 생성됩니다..
resource "aws_instance" "TEST-Server" {
ami = "ami-065bbf792e2f70fd9"
instance_type = "t2.micro"
}
#
# 태그값(Name) 넣어주면 그나마 괜찮음
# 하지만 여전히 부족한게 많음 (보안그룹, 라우팅 등등)
# "<NAME>" 항목이 변경되면 전혀 다른 인스턴스로 인식하여 기존의 인스턴스를 삭제하고 새로 올림
## 테라폼 코드에서 이 리소스를 참조하기 위해 사용할 수 있는 my_instance와 같은 식별자
#
resource "aws_instance" "**server**" {
ami = "ami-0b827f3319f7447c6"
instance_type = "t3.micro"
tags = {
Name = "TEST-Server"
}
}
# 바로 위의 코드와 비교하면 태그값만 달라진 코드
# 이러한 태그의 변화는 식별자("server")는 동일하므로 새로 띄우지않고 태그값만 변경함
resource "aws_instance" "server" {
ami = "ami-0b827f3319f7447c6"
instance_type = "t3.micro"
tags = {
Name = "**TEST-Name_Change**"
}
}
# 그렇다면 타입 변경의 경우는 어떨까?
resource "aws_instance" "server" {
ami = "ami-0b827f3319f7447c6"
instance_type = "**t3.medium**"
tags = {
Name = "**TEST-Name_Change**"
}
}
# tf plan 입력해보면 아래와 같이 변경된다고만 나오니 그렇게 될 것이라고 예상함
#
# Terraform will perform the following actions:
#
# # aws_instance.server will be updated in-place
# ~ resource "aws_instance" "server" {
# id = "i-01c97181ff54097e1"
# ~ instance_type = "t3.micro" -> "t3.medium"
# tags = {
# "Name" = "TEST-Name_Change"
# }
# # (27 unchanged attributes hidden)
#
#
#
#
#
# # (5 unchanged blocks hidden)
# }
#
# Plan: 0 to add, 1 to change, 0 to destroy.
#
## 인스턴스 중지 -> 중지됨 -> t3.micro >> t3.medium 으로 변경 -> 알아서 시작 -> 완료
**Apply complete! Resources: 0 added, 1 changed, 0 destroyed.**
# 성공적으로 인스턴스 타입 변경!
- 서브넷 및 AZ(가용영역) 특정도 필수적일 듯...
- ap-northeast-2d... 👻
# Git, Github과 같은 VCS를 사용하는 🍯팁
$ git init
$ git add main.tf
$ git commit -m "Initial TF Commit"
$ cat .gitignore
.terraform
*.tfstate
*.tfstate.backup
$ git add .gitignore
$ git commit -m "Add a gitignore file"
$ git remote add origin git@github.com:<YOUR_USERNAME>/<YOURE_REPO_NAME>.git
$ git push origin master
$ git pull origin master
2장부터 본격적으로 실습이 진행되서 재미있네용 🤓
긴 글 읽어주셔서 감사합니다 😘
(마크다운 가독성 업그레이드 수정 완료!! 🤓)
728x90
반응형
'Terraform' 카테고리의 다른 글
Terraform 101 Study - 1주차 (0) | 2024.06.16 |
---|---|
[Terraform] 2장. 왜 테라폼인가? (77~82p) (0) | 2021.07.13 |
[Terraform] 2장. 왜 테라폼인가? (61~76p) (0) | 2021.07.13 |
[Terraform] 1장. 왜 테라폼인가? (1~44p) (0) | 2021.07.12 |
[Terraform] 테라폼 학습 블로깅 시작 (0) | 2021.07.11 |