AWS 무료티어 사용 하다가 과금이 된 경험이 있어 좀 더 안전한 GCP로 실습을 진행하였다.
책에서는 AWS로 실습을 진행하고 있다.
※ 테라폼 설치
테라폼 홈페이지(http://www.terraform.io)에서 테라폼을 다운로드 합니다.
운영 체제에 맞는 파일을 다운로드 후 압축을 해제하면 바이너리 파일이 나옵니다.
해당 바이너리 파일은 운영 체제 PATH에 환경 변수로 등록합니다.
macOS 경우 brew install terraform을 실행할 수 있습니다.
terraform 사용 시 프로그램이 클라우드에 접근해야 하기에 GCP는 서비스 계정 json 파일, AWS에서는 IAM이 필요합니다.
▶ 에디터 선택
Vim, 이맥스, 서브라임 텍스트, 아톰, 비주얼 스튜디오 코드, 인텔리제이 등 많은 편집기들이 테라폼 문법 기능을 지원합니다.
인텔리제이 기준 Terraform and HCL 플러그인 설치하면 편리한 기능을 제공합니다.
▶ main.tf 작성(GCP 기준)
provider "google" {
credentials = file("key.json")
project = "terraform-348208"
region = "asia-northeast3"
}
resource "google_compute_instance" "example" {
name = "example"
machine_type = "f1-micro"
zone = "asia-northeast3-a"
boot_disk {
initialize_params {
image = "debian-10-buster-v20220406"
}
}
network_interface {
network = "default"
access_config {}
}
}
위의 코드에서 credentials의 file은 GCP에서 생성한 서비스 계정 JSON 파일입니다.
main.tf와 같은 경로에 위치해 있습니다.
▶ main.tf 작성(AWS 기준)
provider "aws" {
region = "us-east-2"
}
resource "aws_instance" "example" {
ami = "ami-xxxxxxxxxxxxxx"
instance_type = "t2.micro"
}
AWS에서는 file 대신 ami의 권한을 부여합니다.
▶ terraform init 명령어를 실행하여 테라폼 코드를 스캔
어느 공급자인지 확인하고, 필요한 코드를 다운로드 하도록 해야합니다.
init 명령어는 여러 번 실행하면 안전하다는 것만 알아둡시다.
터미널에서 main.tf를 작성한 폴더로 이동하여 terraform init 명령어를 실행합니다.
terraform 바이너리에는 테라폼의 기본 기능이 포함되어 있지만 모든 공급자에 대한 코드가 포함되어 있지 않습니다.
그렇기에 terraform init 명령어를 실행하여 테라폼 코드를 스캔해야 합니다.
▶ terraform plan 명령어 실행
plan 명령어로 무언가를 실제로 변경하기 전에 테라폼이 수행할 작업을 확인할 수 있습니다.
실제 적용하기 전 코드의 유효성 검사를 할 수 있는 좋은 방법입니다.
plan 명령어의 결과값은 깃 등에서 쓰이는 diff 명령어의 결과와 유사합니다.
(+)가 있는 항목은 추가가 되는 것이고, (-)가 있는 항목은 삭제된다는 뜻입니다.
(-/+)는 대체를 의미합니다.
▶ terraform apply 명령어 실행
terraform apply로 적용합니다.
terraform plan과 비슷한 결과가 나오는데 마지막에 진짜로 실행할 것인지 물어보는데 yes라고 입력하면 됩니다.
그러면 클라우드에 반영됩니다.
참조 : https://book.naver.com/bookdb/book_detail.naver?bid=20489970
테라폼 업앤러닝
이 책은 예제 소개를 뛰어넘어 실제 환경에서 테라폼을 사용하는 방법에 중점을 두고 만들어졌다. 외국어에 능통해지려면 원어민과 대화하고, 외국어 TV 쇼를 보고, 외국 음악을 듣는데 시간을
book.naver.com
[테라폼/Terraform]테라폼 상태 관리/백엔드 (0) | 2022.05.31 |
---|---|
[테라폼/Terraform]테라폼 변수 (0) | 2022.05.31 |
[테라폼/Terraform]단일 웹 서버 배포 (0) | 2022.05.31 |
[테라폼/Terraform]왜 테라폼을 사용해야 하는가? 1-2 (0) | 2022.05.30 |
[테라폼/Terraform]왜 테라폼을 사용해야 하는가? 1-1 (0) | 2022.05.29 |
댓글 영역