일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 힙
- PS
- 동적sql
- 비관적락
- 낙관적락
- 유니크제약조건
- 다대다
- 일대다
- JPQL
- BOJ
- 즉시로딩
- 연결리스트
- 이진탐색
- CHECK OPTION
- eager
- execute
- 다대일
- dfs
- 스토어드 프로시저
- exclusive lock
- querydsl
- 스프링 폼
- 데코레이터
- FetchType
- 지연로딩
- shared lock
- SQL프로그래밍
- 연관관계
- 백트래킹
- fetch
- Today
- Total
흰 스타렉스에서 내가 내리지
Terraform 기본 본문
테라폼은 기본적으로 .tf 라는 파일 형식을 가지고 AWS 나 Azure 같은 퍼블릭 클라우드뿐만 아니라 다양한 서비스들을 지원한다.
테라폼 구성요소
provider | 테라폼으로 생성할 인프라의 종류를 의미합니다. |
resource | 테라폼으로 실제로 생성할 인프라 자원을 의미합니다. |
state | 테라폼을 통해 생성한 자원의 상태를 의미합니다. (실제로 코드, 즉 테라폼 명령을 실행한 결과물이 파일 형태로 남게 된다.) |
output | 테라폼으로 만든 자원을 변수 형태로 state (파일) 에 저장하는 것을 의미합니다. |
module | 공통적으로 활용할 수 있는 코드를 문자 그대로 모듈 형태로 정의하는 것을 의미합니다. |
remote | 다른 경로의 state 를 참조하는 것을 말합니다. output 변수를 불러올 때 주로 사용합니다. |
Terraform provider
Provider 안에서 다양한 Arguments 를 가진다.
AWS resource 를 다루기 위한 파일들을 다운로드 하는 역할을 한다. (SDK 같은 파일 등)
Terraform resource
테라폼으로 VPC 를 생성하는 코드이다.
VPC 역시 다양한 Arguments 와 다른 구성요소가 존재한다.
Terraform state
테라폼으로 작성한 코드를 실제로 실행하게 되면 생성되는 파일이다.
실제로는 코드가 굉장히 길어질 수 있다.
현업에서는 계속 작성하게 되면 수천 줄, 수만 줄 까지도 늘어나게 된다.
여기서, 테라폼 명령어를 실행하게 돼서 생성한 리소스들의 결과값이지 우리 인프라의 실제 상태는 아니다.
그래서 이 state 파일과 현재 인프라의 상태를 똑같이 유지하는 것이 키포인트이다.
state 는 원격 저장소인 'backend' 에도 저장될 수 있다.
lineage 값들은 나중에는 알아야 하는 값들인데 지금은 넘어가겠다.
Terraform Output
제일 위 resource 를 보면, VPC 의 id 나 CIDR 값들이 생긴다.
그런 것들을 참조하여 vpc_id 라는 형태의 변수를 state 파일로 저장한다.
remote 를 사용해서 재사용을 할 수 있다.
Terraform Module
리소스에 대한 코드는 경로로서 포함하게 되고, 하위 경로로 tf 파일들이 위치하게 된다.
그리고 그 안에 들어갈 인자 값들을 (위 이미지에서는 cidr_block) 넣어준다.
한 번 만들어진 테라폼 코드들을 같은 형태로 반복적으로 만들어낼 때 주로 사용된다.
재사용에 강점이 있다.
모듈을 어떻게 쓰느냐에 따라 테라폼을 잘 쓰는지 아닌지 갈라진다.
Terraform remote
remote state 는 key 값에 명시한 state 에서 변수를 가져온다.
key 값을 명시하면 그곳에 저장된 state 값을 참조할 수 있다.
state 파일에서 output 으로 저장된 변수를 가져오게 된다.
Terraform 기본 명령어
init | 테라폼 명령어 사용을 위해 각종 설정을 진행한다. |
plan | 테라폼으로 작성한 코드가 실제로 어떻게 만들어질지에 대한 예측 결과를 보여준다. (실제로 가장 많이 쓰이는 명령어이다.) |
apply | 테라폼 코드로 실제 인프라를 생성하는 명령어이다. |
import | 이미 만들어진 자원을 테라폼 state 파일로 옮겨주는 명령어이다. (즉, 이미 만들어진 자원을 코드로 만들고 싶을 때 이 import 명령어를 사용한다.) |
state | 테라폼 state 를 다루는 명령어이다. 하위 명령어로 mv, push 와 같은 명령어가 있다. (자주는 안쓰이지만 언젠가는 쓰인다.) |
destroy | 생성된 자원들 state 파일 모두 삭제하는 명령어이다. |
이 밖에도 다른 명령어가 많지만, 기본 명령어 습득 이후에 시작해도 괜찮다.
기본 명렁어의 사용 빈도가 90% 이상을 차지한다.
Terraform Process
Init
- 작성한 코드에서 init 명령어를 입력합니다.
- 테라폼의 다른 명령어들을 위한 설정을 진행합니다.
- 내부적으로는 provider 와 state, module 설정 등이 있습니다.
↓
Plan
- 실제로 작성한 테라폼 코드가 어떻게 만들어질지에 대한 예측 결과를 보여주는 명령어입니다.
- 가장 많이 쓰이는 명령어이다. 기본적으로 plan 에 문제가 없어야 apply 에 문제가 없을 확률이 높다.
(plan 명령어를 사용하는 것을 습관화해야 한다. 실제로 apply 를 한다는 건, 즉 실제 우리의 서비스가 돌아가고 있는 서버에 변경을 가하는 것은 굉장히 큰 결과로 돌아올 수 있기 때문이다. )
↓
Apply
- 실제로 작성한 코드로 명령어를 생성하는 명령어이다.
- 실제 인프라에 영향을 끼치는 명령어이므로 주의깊게 실행을 해야한다.
'DevOps' 카테고리의 다른 글
AWS Configure 설정 (0) | 2024.07.30 |
---|---|
terraform 설치하기 (0) | 2024.07.30 |
AWS EC2 그리고 SSH (0) | 2024.07.29 |
DevOps 엔지니어의 역할 (0) | 2024.07.27 |
DevOps 란 무엇인가 (0) | 2024.07.27 |