우리가 테라폼을 하는 이유
- 히스토리 추적이 쉽다. (내용들이 남으니까)
- 틀에 박힌 인프라 리소스를 만들지 않는다.
resource
- 실제로 생성 할 인프라 자원
- example: aws_security_group, aws_lb, aws_instance, aws_s3_bucket
provider
- 테라폼으로 정의할 Infrastructure Provider를 의미합니다.
output
- 인프라를 프로비저닝 한 후에 생성된 자원을 output 부분으로 뽑을수 있습니다.
- Output으로 추출한 부분은 이후에 remote state 에서 활용할수 있습니다.
backend
- terraform의 상태를 저장할 공간을 지정하는 부분입니다.
- backend를 사용하면 현재 배포된 최신 상태를 외부에 저장하기 때문에 다른 사람과의 협업이 가능합니다. 가장 대표적으로 AWS S3가 있습니다.
module
- 공통적으로 활용할수 있는 인프라 코드를 한 곳으로 모아서 정의하는 부분
- Module을 사용하면 변수만 바꾸서 동일한 리소스를 손쉽게 생성할 수 있다는 장점
remote state