Information Security Study
240705 테라폼 기본 사용법(aws자원->테라폼 동기화), 테라폼 모듈 작성과 활용, NHN Cloud-Terraform 실습, variable, local, output, count, foreach, for 등 본문
240705 테라폼 기본 사용법(aws자원->테라폼 동기화), 테라폼 모듈 작성과 활용, NHN Cloud-Terraform 실습, variable, local, output, count, foreach, for 등
gayeon_ 2024. 7. 5. 16:02테라폼 기본 사용법(이어서)
aws에만 등록된 자원을 테라폼에도 동일하게 인식시키기
240704에서 하던 방법대로 data 타입으로 자원 설정을 해 주고 apply를 하면 읽기 전용으로만 사용 가능하다.
위 처럼 import를 사용하면 수정할 수 있다.
수정 가능한지 확인하기 위해 Name을 변경했다.
변경확인
aws에는 있지만 테라폼이 관리하지 않을 자원은
terraform state rm aws_subnet.private_subnet1
명령으로
테라폼 코드로 생성한 요소는
terraform destroy
로 삭제할 수 있다.
테라폼 모듈 작성과 활용
테라폼 사용할 때 모듈로 관리해 복잡한 인프라 구성을 간단하고 재사용성을 높일 수 있다.
테라폼 모듈의 특징
1) 재사용성
2) 캡슐화
3) 버전관리
테라폼 모듈의 장점
1) 코드 중복 감소
2) 유지 보수 용이
3) 배포 시간 단축
테라폼 모듈의 단점
1) 의존성 관리의 복잡성
2) 디버깅의 어려움
테라폼 모듈의 구조는 디렉토리 하나 내부에 여러개의 .tf, .tf.json파일로 구성된다.
모든 테라폼 설정을 하나의 module로 부르고 root module이 아니면서 모듈을 구성하는 모듈을 child module이라 한다.
필수 argument는 suorce이다.
module block이 추가/수정/삭제될 때 terraform init을 해줘야 한다.
실습해 볼 vpc 구조이다.
인터넷 게이트웨이는 퍼블릭존을 외부로 노출시키고
NAT는 public존에서 private존으로 접근할 수 있도록 도와준다.
이제 인터넷 게이트웨이, NAT를 추가해 볼 것이다.
availability_zone에 가용영역을 지정한다.
nat는 위와 같이 작성한다.
apply 후 확인해 보니 생성되었다.
인터넷 게이트웨이도 생성되었다.
이제 main.tf가 너무 커졌기 때문에 모듈화를 해 볼 것이다.
하위 폴더를 만든 뒤
main.tf를 하나 생성한다.
상위 폴더에는 하위폴더를 인식하도록 module을 작성하고
리소스들은 하위폴더에만 작성한다.
init을 하지 않았을 때 plan을 하면 오류가 난다.
init 후 plan을 하면 인식을 한다.
provider 등에 대한 갱신을 해야 하기 때문에 init을 해야 한다.
NHN Cloud-Terraform 실습
위에서 aws에서 했던 과정들을 NHN에서도 해 볼 것이다.
https://docs.nhncloud.com/ko/Compute/Instance/ko/terraform-guide/#terraform-nhn-cloud-provider
Terraform 사용 가이드 - NHN Cloud 사용자 가이드
서드파티 사용 가이드 > Terraform 사용 가이드 이 문서는 Terraform으로 NHN Cloud를 사용하는 방법을 설명합니다. Terraform Terraform은 인프라를 손쉽게 구축하고 안전하게 변경하고, 효율적으로 인프라의
docs.nhncloud.com
위 문서를 참고했다.
1.0.2 바이너리 파일을 다운 받고
플러그인을 설정했다.
provider의 각 정보는 위 링크된 문서에서 찾아 넣었다.
문서를 보니 NHN 클라우드에서는 provider.tf로 쓴다.
main이 아닌 instance.tf로 써야 한다.
provider.tf에 모든 정보 작성 후 init
init을 하니 다른 파일들이 생겼다.
공식 문서 참고해서 vpc 하나와 서브넷 두 개를 생성했다.
powershell에서 apply로 만들었다.
생성 확인
서브넷 두 개 생성 확인
인터넷 게이트웨이랑 NAT는 없는 것 같아서 NHN 클라우드로 테라폼 쓰는 실습은 여기까지만 했다.
variable, local, output, count, foreach, for 등
Variables
- 테라폼 구성 시 입력값을 정의할 때 사용한다.
- 사용자가 인프라를 배포할 때 값을 제공할 수 있다.
Locals
- 한 구성 파일 내에서만 사용되는 일종의 상수이다.
- 여러번 반복해서 사용하는 값을 한 곳에 정의해 코드의 가독성과 유지보수성을 높인다.
Outputs
- 테라폼이 적용된 후 사용자가 확인할 수 있는 값을 정의한다.
- 테라폼 구성 또는 모듈과의 연동 시 중요한 값을 출력하여 쉽게 참조할 수 있다.
위처럼 동일한 구성의 배포용 vpc를 생성했다.
이제까지 했던 프로젝트를 개발용/배포용으로 나눠 위 요소들을 사용할 것이다.
개발용 vpc의 public subnet, private subnet, igw, nat
배포용 vpc의 public subnet, private subnet, igw, nat
가 있어야 한다.
먼저 variable을 사용해 볼 것이다.
위 경로에 파일을 생헝한다.
vpc_module 하위의 main.tf에 작성해도 되지만 관리를 편하게 하기 위해 분리했다.
vpc의 tags를 위처럼 수정한다.
apply를 하면 name 뒤에 dev가 붙었다.
하지만 개발용과 배포용을 구분하기 위해서는 루트 모듈의 main.tf에서 환경변수를 추가하면 된다.
하나는 배포용, 하나는 개발용으로 쉽게 구분할 수 있게 됐다.
'네트워크 캠퍼스 > Terraform' 카테고리의 다른 글
240708 local, output, count, foreach, for 등, 상태 저장소(backend), 상태 관리(state) (1) | 2024.07.08 |
---|---|
240704 테라폼 개념과 환경설정, 테라폼 기본 사용법 (0) | 2024.07.04 |