일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Linux
- NaCl
- ALB
- FSX
- RDS
- terraform
- 윈도우
- S3
- AD
- 테라폼
- CLI
- 도메인
- lambda
- AWS
- Windows
- ncp
- 네이버 클라우드 플랫폼
- EC2
- VPC
- dns
- route table
- Storage
- storage gateway
- Dedup
- Athena
- security group
- Python
- Subnet
- Jenkins
- CloudFront
- Today
- Total
끄적이는 보송
[AWS] Terraform 구조 본문
Terraform은 Hashicorp에서 오픈소스로 개발한 인프라관리 Tool 이며 Infrastructure as Code (IaC)를 지향한다고 한다. 필자는 AWS 클라우드만 다루며 다른 벤더사는 잘 모른다. 이런 상황에 만약 Azure로 기존의 인프라를 옮긴다면...? 대재앙이다. 필자는 Vendor-lock-in 그 자체다. 멀티 클라우드를 지향하는 기업도 슬슬 생기고 있고 이 모든 것을 품을 수 있는게 테라폼인듯 하여 공부해보려 한다.
Terraform 사용 방법
Terraform은 CLI와 HCL (Harshicorp Language)를 제공하며 이들을 알 필요가 있다. Terraform 사용 절차는 다음과 같다.
API set up > Terraform Write > Terraform Plan > Terraform Apply
-> API set up : AWS(벤더)의 계정과 키를 통해 CLI 환경 구성한다.
-> Terraform Write : HCL로 어떤 자원을 어떻게 구성하겠다는 테라폼 소스 코드를 작성한다. 확장자는 .tf 이다.
-> Terraform Plan : 작성한 코드가 생성 가능한지 혹은 어떤 리소스가 생성되고, 수정되고, 제거되는지 보여준다.
-> Terraform Apply : 작성한 코드를 바탕으로 실제 인프라에 적용한다.
Terraform 구조
모듈은 리소스의 컨테이너와 같으며 테라폼 구성을 패키징하고 재사용하기 위한 주요 수단이다. 모듈에는 3가지가 있다.
-> The Root Module : 테라폼은 적어도 하나 이상의 모듈로 구성되어 있으며 .tf 확장자 이름으로 여러 리소스가 명시되어 있다.
-> Child Module : 루트 이외에 인프라 리소를 구성하고 있는 테라폼의 다른 모듈을 Child Module 이라고 한다. Child Module은 동일한 구성 내에서 여러번 호출 될 수 있으며, 여러 구성이 동일한 Child Module을 사용 할 수 있다. 다양하게 재상용 및 다중 적용이 가능한다는 뜻.
-> Published Module : 로컬 파일시스템의 모듈 이외에 다른 사용자가 사용할 수 있도록 게시한 모듈이다.
https://www.terraform.io/docs/language/modules/develop/structure.html
테라폼의 정해진 표준은 없지만 위의 사이트를 통해 다음의 구조를 참조해보았다.
-> README / README.md : 모듈에 대한 용도를 설명하는 우리가 모두 아는 그 리드미다.
-> Licence : 모듈을 공개적으로 개시한다면 명확한 라이센스 개시를 권자 (필수는 아님) 오픈 소스가 아니더라도 라이센스 보유를 권장한다.
-> main.tf, variables.tf, outputs.tf. 확장자 : 권장되는 모듈 이름.
-> Nested Module : module 하위 디렉토리에 위치해야 한다. README.md 로 구성이 된 Nested Module은 외부 사용자가 사용할 수 있는 것으로 간주되며 그렇지 않으면 내부 사용자 전용으로 간주된다. (권장사항)
-> Examples : 모듈 사용의 예를 보여주며 루트 하위 디렉토리에 있어야 한다. 목적과 사용법을 설명해야 하는 README가 있고 하위 모듈의 예도 Examples의 디렉토리에 있어야 한다.
뭔가 처음에 구조를 잘 잡고 코드를 작성해야 할 것 같다.
'STUDY > Terraform' 카테고리의 다른 글
[AWS] Terraform으로 간단한 VPC 구성하기 (0) | 2021.07.07 |
---|---|
[AWS] Terraform 설치 on Windows 10 (0) | 2021.07.04 |