일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- session manager
- algorithm
- 이진탐색
- terraform variable
- haproxy
- Docker
- PrivateSubnet
- terraform backend
- Jenkinspipeline
- terraform 설치
- s3
- java
- ec2
- 프로그래머스
- Mac
- 인텔리제이
- lsof
- endpoint
- linuxr계정설정
- terraform
- Process monitoring
- JWT
- binarysearch
- Python
- SELinux비활성화
- heapq
- Timezon설정
- terraform 기본개념
- Jenkins
- terraform main commands
- Today
- Total
MONG 기술블로그
테라폼 기본 명령어 실습 본문
이전 시간에 테라폼의 기본 개념들에 대해 알아보았다.
요번 시간에는 테라폼에서 사용하는 명령어에 대해 알아보고 직접 실습해보자.
■ 테라폼 명령어 ( terraform )
테라폼 주요 명령어에 대해서 간략하게 용도에 대해 알아보자. ( Main Commands )
또한 주요 명령어를 통해 실제로 AWS S3를 생성하는 실습을 진행한다.
Terraform Main Commands
1. init
- 다른 테라폼 명령어를 위한 워킹 디렉토리를 준비할때 최초로 사용한다.
- 예를들어 provider.tf 파일에 프로바이더 정보를 기입한 뒤에 init 명령어를 사용하여 워킹 디렉토리를 세팅할 수 있다.
2. plan
- 현재 테라폼을 통해 설정한 정보를 통해 실제로 변하는 자원정보를 확인한다.
- 즉 실제로 자원에 대해 변경을 가하는 명령어는 아니며, 반영 전 변경될 자원에 대해 확인을 도와주는 명령어이다.
3. apply
- 테라폼 설정정보를 통해 실제 자원을 변경 OR 생성하는 ( IaC 적용 ) 명령어이다.
- terraform apply 시 실제로 구성된 자원정보가 변경되므로 유의하여 사용해야한다.
- 반영된 자원정보는 설정한 backend 와 local의 .tfstate 파일에 저장된다.
4. destory
- 테라폼을통해 생성된 자원에 대해 모두 삭제하는 명령어이다.
■ S3 생성 실습
다음 순서로 진행한다.
1. provider.tf 에 AWS Provider 정보 세팅
2. terraform init 명령어를 통해 워킹 디렉토리 준비
3. s3.tf 에 생성할 s3정보 기입
4. terraform plan 명령어로 프로비저닝할 자원정보 확인
5. terraform apply 명령어로 자원 프로비저닝
6. .tfstate 삭제 후 terraform plan 결과 확인
7. terraform import로 이미 구축된 자원정보를 .tfstate에 반영
9. terrraform destory로 생성한 실습자원 삭제
1.provider.tf 에 AWS Provider 정보 세팅
# provider.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.0"
}
}
}
# Configure the AWS Provider
provider "aws" {
region = "ap-northeast-2"
access_key = ""
secret_key = ""
}
AWS Provider 세팅을 위해 .tf파일을 생성한다.
https://registry.terraform.io/providers/hashicorp/aws/latest/docs
Terraform Registry
registry.terraform.io
2.terraform init 명령어를 통해 워킹 디렉토리 준비
`terraform init` 명령어를 사용하여 provider.tf 를 기반으로 Working Directory를 세팅한다.
3.s3.tf 에 생성할 s3정보 기입
# s3.tf
resource "aws_s3_bucket" "test-s3-bucket" {
bucket = "mjh-test-s3-bucket"
tags = {
Name = "Name"
Environment = "mjh-test-s3-bucket"
}
}
생성할 s3 리소스 정보를 기입한다. 하기 링크를 참고하여 작성했다.
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket
Terraform Registry
registry.terraform.io
4. terraform plan 명령어로 프로비저닝할 자원정보 확인
`terraform plan` 명령어로 테라폼 코드 기반으로 정의된 자원에 대해 `apply` 적용 시 생성되는 정보에 대해 확인 할 수 있다.
5. terraform apply 명령어로 자원 프로비저닝
`terraform apply` 명령어를 사용하면 테라폼으로 정의된 자원이 생성된다.
또한 생성된 자원에 대한 정보가 담긴 `terraform.tfstate` 파일이 생성되니 꼭 체크하자.
Provider 정보에 기입한 AWS Account에 접속하여 실제 자원이 생성됨을 확인할 수 있다.
6. .tfstate 삭제 후 terraform plan 결과 확인
.tfstate는 현재 테라폼으로 구성된 자원의 상태정보를 관리한다.
이를 확인하기위해 .tfstate 파일 삭제 후 terraform plan을 실행해보자.
.tfstate를 삭제하면 기존에 이미 생성한 s3 자원임에도 불구하고 `terraform plan` 명령어 시 새로 생성해야하는 자원으로 인식한다.
따라서 .tfstate에는 테라폼을 통해 생성되었던 자원에 대한 상태정보가 저장된다는것을 알 수 있다.
또한 위 상태에서 `terraform apply` 명령어 실행 시 이미 존재하는 자원에 대해 `create`는 불가하므로 에러가 발생한다.
7. terraform import로 이미 구축된 자원정보를 .tfstate에 반영
이미 구축된 자원에 대해 terraform 으로 관리하는 방법에 대해 알아보자.
다음 명령어를 사용하여 기 생성되어있는 자원정보를 .tfstate에 반영하자.
# 기존에 생성한 s3 리소스 import ( import는 Document의 최하단 참고 )
terraform import aws_s3_bucket.test-s3-bucket mjh-test-s3-bucket
# terraform apply 가능여부 확인
# import가 정상실행되었다면, apply도 정상수행될것.
terraform apply
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket
Terraform Registry
registry.terraform.io
8. terrraform destroy로 생성한 실습자원 삭제
실습에서 생성한 자원을 모두 삭제하자. `terraform destroy` 명령어를 통해 삭제가 가능하다.
'Terraform' 카테고리의 다른 글
테라폼 고도화 - 1 ( Backend ) (0) | 2022.03.21 |
---|---|
테라폼 고도화 - 2 ( Variable ) (0) | 2022.03.21 |
테라폼 설치 및 기본 개념 (0) | 2022.03.14 |