Terraform 을 사용하면 클라우드 인프라의 정의, 미리 보기 및 배포가 가능합니다. Terraform을 사용하여 HCL 구문을 사용하여 구성 파일을 만듭니다. HCL 구문을 사용하면 클라우드 공급자(예: Azure)와 클라우드 인프라를 구성하는 요소를 지정할 수 있습니다. 구성 파일을 만든 후에는 인프라 변경 내용을 배포하기 전에 미리 볼 수 있는 실행 계획을 만듭니다. 변경 내용을 확인하면 실행 계획을 적용하여 인프라를 배포합니다.
이 문서에서는 이 시리즈의 이전 문서에서 만든 terraform 파일을 실행합니다. 그 결과 데모 가상 네트워크 간의 연결 유효성 검사가 수행됩니다.
이 문서에서는 다음 방법을 알아봅니다.
- 허브-스포크 토폴로지에서 허브 VNet 구현
- 배포할 리소스 확인
- Azure에서 리소스 만들기
- 서로 다른 네트워크 간의 연결 확인
1. 환경 구성
- Azure 구독: Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
Terraform 구성: 아직 구성하지 않은 경우 다음 옵션 중 하나를 사용하여 Terraform을 구성합니다.
2. 구성 확인
예제 디렉터리에서 이 문서 시리즈에서 만든 모든 파일이 있는지 확인합니다.
| 파일 이름 | 파일이 만들어지는 문서 |
|---|---|
| main.tf | Azure에서 Terraform을 사용하여 허브 및 스포크 하이브리드 네트워크 토폴로지 만들기 |
| variables.tf | Azure에서 Terraform을 사용하여 허브 및 스포크 하이브리드 네트워크 토폴로지 만들기 |
| on-prem.tf | Azure에서 Terraform을 사용하여 온-프레미스 가상 네트워크 만들기 |
| hub-vnet.tf | Azure에서 Terraform을 사용하여 허브 가상 네트워크 만들기 |
| hub-nva.tf | Azure에서 Terraform을 사용하여 허브 가상 네트워크 어플라이언스 만들기 |
| spoke1.tf | Azure에서 Terraform을 사용하여 스포크 가상 네트워크 만들기 |
| spoke2.tf | Azure에서 Terraform을 사용하여 스포크 가상 네트워크 만들기 |
3. Terraform 초기화
terraform init를 실행하여 Terraform 배포를 초기화합니다. 이 명령은 Azure 리소스를 관리하는 데 필요한 Azure 공급자를 다운로드합니다.
terraform init -upgrade
핵심 사항:
-
-upgrade매개 변수는 필요한 공급자 플러그 인을 구성의 버전 제약 조건을 준수하는 최신 버전으로 업그레이드합니다.
4. Terraform 실행 계획 만들기
terraform 계획을 실행하여 실행 계획을 만듭니다.
terraform plan -out main.tfplan
핵심 사항:
-
terraform plan명령은 실행 계획을 만들지만 실행하지는 않습니다. 대신 구성 파일에 지정된 구성을 만드는 데 필요한 작업을 결정합니다. 이 패턴을 사용하면 실제 리소스를 변경하기 전에 실행 계획이 예상과 일치하는지 확인할 수 있습니다. - 선택 사항인
-out매개 변수를 사용하여 계획의 출력 파일을 지정할 수 있습니다.-out매개 변수를 사용하면 검토한 계획이 정확하게 적용됩니다.
5. Terraform 실행 계획 적용
terraform 적용을 실행하여 클라우드 인프라에 실행 계획을 적용합니다.
terraform apply main.tfplan
핵심 사항:
- 예시
terraform apply명령은 이전에terraform plan -out main.tfplan를 실행했다고 가정합니다. -
-out매개 변수에 다른 파일 이름을 지정한 경우terraform apply에 대한 호출에서 동일한 파일 이름을 사용합니다. -
-out매개 변수를 사용하지 않은 경우 매개 변수 없이terraform apply를 호출합니다.
6. 결과 확인
이 섹션에서는 시뮬레이션된 온-프레미스 환경에서 허브 VNet으로의 연결을 테스트하는 방법을 보여 줍니다.
Azure Portal로 이동합니다.
Azure Portal에서 onprem-vnet-rg 리소스 그룹으로 이동합니다.
onprem-vnet-rg 탭에서 onprem-vm이라는 VM을 선택합니다.
공용 IP 주소 값을 확인합니다.
명령줄로 돌아가서 실행
ssh하여 시뮬레이션된 온-프레미스 환경에 연결합니다.ssh azureuser@<onprem_vm_ip_address>핵심 사항:
-
azureuser파일에서variables.tf사용자 이름을 변경한 경우,ssh명령에 해당 값을 삽입해야 합니다. - 실행할
terraform plan때 지정한 암호를 사용합니다.
-
onprem-vm 가상 머신에 연결되면 명령을 실행
ping하여 허브 VNet의 jumpbox VM에 대한 연결을 테스트합니다.ping 10.0.0.68ping명령을 실행하여 각 스포크에서 jumpbox VM에 대한 연결을 테스트합니다.ping 10.1.0.68 ping 10.2.0.68onprem-vm 가상 머신에서 ssh 세션을 종료하려면
exit을 입력하고 < Enter> 키를 누르십시오.
7. 리소스 정리
Terraform을 통해 만든 리소스가 더 이상 필요하지 않은 경우 다음 단계를 수행합니다.
terraform 계획을 실행하고 플래그를 지정합니다
destroy.terraform plan -destroy -out main.destroy.tfplan핵심 사항:
-
terraform plan명령은 실행 계획을 만들지만 실행하지는 않습니다. 대신 구성 파일에 지정된 구성을 만드는 데 필요한 작업을 결정합니다. 이 패턴을 사용하면 실제 리소스를 변경하기 전에 실행 계획이 예상과 일치하는지 확인할 수 있습니다. - 선택 사항인
-out매개 변수를 사용하여 계획의 출력 파일을 지정할 수 있습니다.-out매개 변수를 사용하면 검토한 계획이 정확하게 적용됩니다.
-
terraform을 실행하여 실행 계획을 적용합니다.
terraform apply main.destroy.tfplan
Azure에서 Terraform 문제 해결
Azure에서 Terraform을 사용할 때 발생하는 일반적인 문제 해결