ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Terraform] VM(Virtual Machine) 100개 한번에 만들기 (1/3)
    오픈소스 2024. 2. 17. 01:00

     개요

     이제 실제로 Terraform 환경을 구성해서 서버를 만들어 보도록 하자. 공식 홈페이지에 기재된 가이드를 참고하면 쉽게 설치를 할 수 있으며 인터넷이 사용 불가할 경우에는 OS 버전에 해당하는 Terraform Portable 파일을 받아서 진행하면 된다. 필자의 경우에는 아래와 같은 환경에서 구성을 진행했는데 설치에 있어서 별 다른 문제는 발생하지 않았다. 주의해야 하는 부분이 있다면 Terraform Provider에 관한 내용이다. Terraform + Vmware / Terraform + Nutanix와 같이 Terraform은 각 플랫폼과 연동할 수 있는 것으로 Provider라는 기능을 제공한다. 내가 원하는 플랫폼의 Provider가 제공되는냐에 따라 Terraform 사용 여부가 나뉘게 된다. 버전에 따라 소스 코드가 달라질 수 있듯이, Provider 버전도 영향을 줄 수 있기 때문에 이후 필자의 소스코드를 그대로 사용할 계획이라면 버전도 모두 동일하게 진행해주길 바란다.

    더보기
    • OS : RHEL 8.8
    • Kernel : 4.18.0-477.10.1.el8_8.x86_64
    • Terraform Version : v1.3.0
    • Terraform Provider : v2.5.0

     

     


     

     

     #1. Terraform 환경 구성하기 (파일 다운로드)

      인터넷 사용이 불가하단은 가정 하, 준비해야 하는 파일은 총 2개다. Terraform Portable 파일과 Provider 파일이다. 아래는 필자가 다운로드를 받은 실제 URL 주소이다. 압축을 풀면 여러 파일이 있는데 용량이 가장 큰 파일 하나씩만 있으면 된다.

     

    Install | Terraform | HashiCorp Developer

    Explore Terraform product documentation, tutorials, and examples.

    developer.hashicorp.com

     

    Terraform-Provider-Vsphere Versions | HashiCorp Releases

     

    releases.hashicorp.com

     

     #2. Terraform 환경 구성하기 (#terraform init)

     다운로드 받은 파일을 각각 Portable파일 / Provider파일이라고 칭하면서 작성하도록 하겠다. 먼저 Portable 파일은 어떤 경로에 두어도 상관이 없으며 다음과 같은 명령어를 수행했을 때 결과가 정상적으로 나오면 성공이다.

    그림-1. Terraform Version

    두번째는 Provider파일이다. Terraform은 기본 설정으로 *.tf 라는 파일을 통하여 VM을 관리하는 방식을 취하고 있으며 인터넷이 연결되어 있다면 소스 코드를 실행하기 위한 Provider를 자동으로 다운로드를 받는다. 하지만 인터넷이 없다면 Provider파일을 정해진 위치에 압축을 풀어주어야만 한다. 이에 대한 내용은 Provider파일에 대한 설치 문서를 참고하자.

    순서대로 진행해보자. 먼저 main.tf 파일을 생성하여 Provider를 호출하는 구문을 추가한다.

    terraform {
      required_providers {
        vsphere = {
          source = "hashicorp/vsphere"
          version = "2.5.0"
        }
      }
    }
    
    
    # terraform init

    그림-2. Terraform init Fail

    아직 Provider파일을 정해진 위치에 풀지 않았기 때문에 메시지는 다를 수 있지만 비슷한 오류 구문이 발생할 것이다. 마지막 부분에 Connection Refused가 발생하는 것은 인터넷 연결을 통하여 시도하였으나 연결이 불가하다는 의미이므로 신경쓰지 않아도 된다. 계속 진행 해보자.

    # mkdir -p ~/.terraform.d/plugins/hashicorp/vsphere/2.5.0/linux_amd64
    # mv terraform_vsphere_provider ~/.terraform.d/plugins/hashicorp/vsphere/2.5.0/linux_amd64
    
    # terraform init

     

    오타가 없다면 잘 성공했을 것이고, 만약 오류가 난다면 필자가 겪었던 문제가 동일하지 않을까 싶다. 그 문제는 아래서 따로 다루도록 하고 성공했다면 다음과 같다.

    그림-3. Terraform init Success

     

     #2-1. Terraform 환경 구성하기 (TroubleShooting)

     필자도 처음에는 공식 홈페이지에 기재된 내용으로 정상적으로 구성을 하였다. 문제는 성공한 서버를 OVF 이미지로 변환하여 다른 가상화 플랫폼에서 사용하였더니 Provider파일일 존재하지 않는다는 오류가 발생하였다. 원인을 알 수 없었지만 경로 정보를 수정하여 해결하였다. (이거 진짜 이유를 모르겠는데 아시는 분 있으시면 댓글 부탁 드립니다.)

    ### AS-IS (공식 홈페이지 내용) ###
    
    # Provider Path : ~/.terraform.d/plugins/hashicorp/vsphere/2.5.0/linux_amd64
    # main.tf
    terraform {
      required_providers {
        vsphere = {
          source = "hashicorp/vsphere"
          version = "2.5.0"
        }
      }
    }
    
    ### ------------------------- ###
    
    ### TO-BE (TroubleShooting 결과) ###
    
    # Provider Path : ~/.terraform.d/plugins/local/hashicorp/vsphere/2.5.0/linux_amd64
    # main.tf
    terraform {
      required_providers {
        vsphere = {
          source = "local/hashicorp/vsphere"
          version = "2.5.0"
        }
      }
    }

     

     

     


     

     

     마무리

     총 3편의 내용으로 다룰 내용이며, 다음 편에서는 실제로 사용한 소스 코드에 대한 내용을 다루고 마지막 포스팅에서는 Cloud-Init을 가볍게 다뤄볼 예정이다.

     

    궁금하신 내용은 댓글로 남겨주시고, 많은 블로그 방문은 저에게 큰 힘이 됩니다. ・ᴥ・ 

     

    댓글

Designed by Tistory.