Terraform 구성이 포함된 설계에는 Automation Assembler 온-프레미스 제품과 통합하는 Terraform 런타임 환경에 대한 액세스 권한이 필요합니다.

Terraform 런타임을 추가하는 방법

런타임 환경은 Terraform CLI 명령을 실행하여 요청된 작업을 수행하는 Kubernetes 클러스터로 구성됩니다. 또한 런타임은 로그를 수집하고 Terraform CLI 명령의 결과를 반환합니다.

VMware Aria Automation 온-프레미스 제품을 사용하려면 사용자가 자체 Terraform 런타임 Kubernetes 클러스터를 구성해야 합니다. 조직당 하나의 Terraform 런타임만 지원됩니다. 해당 조직에 대한 모든 Terraform 배포는 동일한 런타임을 사용합니다.

참고:

Terraform 명령 및 상태를 실행하려면 K8s에서 실행되는 Terraform 런타임 환경이 필요합니다. 온-프레미스 VMware Aria Automation에서 Terraform 통합을 생성할 때 관리되는 k8(이미 VMware Aria Automation에서 관리되는 k8s 클러스터) 또는 외부 k8s 클러스터(VMware Aria Automation에서 관리되지 않는 k8s 클러스터) 및 Terraform 포드가 생성될 네임스페이스 중에서 선택할 수 있습니다. 외부 클러스터를 사용하는 경우 Terraform 런타임 대상에 대한 k8s 클러스터에 대한 Kubeconfig 액세스 권한을 제공해야 합니다. Kubeconfig는 k8s 표준이며 Kubeconfig는 관리자 Kubeconfig일 필요가 없습니다. 최소 권한(예: 네임스페이스에서 포드를 실행할 수 있는 권한 및 VMware Aria Automation Terraform 런타임 통합에 사용할 Kubeconfig를 생성할 수 있는 권한)이 있는 서비스 계정을 사용할 수 있습니다.

  1. Terraform CLI를 실행할 Kubernetes 클러스터가 있는지 확인합니다.
    • 모든 사용자는 kubeconfig 파일을 제공하여 관리되지 않는 Kubernetes 클러스터에서 Terraform CLI를 실행할 수 있습니다.
    • 엔터프라이즈 라이센스 사용자는 VMware Aria Automation에서 관리되는 Kubernetes 클러스터에서 Terraform CLI를 실행할 수 있습니다.

      Automation Assembler에서 인프라 > 리소스 > Kubernetes 로 이동하여 Kubernetes 클러스터가 있는지 확인합니다. 추가해야 하는 경우에는 Automation Assembler에서 Kubernetes를 사용하는 방법 항목을 참조하십시오.

  2. Kubernetes 클러스터가 새로 추가되거나 수정된 경우 데이터 수집이 완료될 때까지 기다립니다.

    데이터 수집은 네임스페이스 및 기타 정보 목록을 검색하며, 제공자에 따라 최대 5분이 소요될 수 있습니다.

  3. 데이터 수집이 완료되면 인프라 > 연결 > 통합 > 통합 추가로 이동하고 Terraform 런타임 카드를 선택합니다.
  4. 설정을 입력합니다.
    그림 1. Terraform 런타임 통합 예제
    고급 라이센스 사용자를 위한 Terraform 런타임 통합 예제
    설정 설명
    이름 런타임 통합에 고유한 이름을 부여합니다.
    설명 통합의 목적을 설명합니다.
    Terraform 런타임 통합:
    런타임 유형(엔터프라이즈 전용) 엔터프라이즈 라이센스 사용자는 VMware Aria Automation에서 관리되는 Kubernetes 클러스터에서 Terraform CLI를 실행할지 또는 관리되지 않는 클러스터에서 실행할지 선택할 수 있습니다.
    Kubernetes kubeconfig(모든 사용자)

    관리되지 않는 Kubernetes 클러스터의 경우 외부 클러스터에 대한 kubeconfig 파일의 전체 컨텐츠를 붙여넣습니다.

    프록시 서버와 함께 외부 Kubernetes 런타임을 사용하려면 프록시 지원을 추가하는 방법을 참조하십시오.

    이 옵션은 모든 사용자가 사용할 수 있습니다.

    Kubernetes 클러스터(엔터프라이즈 전용)

    VMware Aria Automation에서 관리되는 Kubernetes의 경우 Terraform CLI를 실행할 클러스터를 선택합니다.

    클러스터 및 해당 kubeconfig 파일에 연결할 수 있어야 합니다. /cmx/api/resources/k8s/clusters/{clusterId}/kube-config에서 GET을 사용하여 kubeconfig에 대한 액세스를 검증할 수 있습니다.

    이 옵션은 엔터프라이즈 라이센스에서만 사용할 수 있습니다.

    Kubernetes 네임스페이스 Terraform CLI를 실행하는 포드를 생성하기 위해 클러스터 내에서 사용할 네임스페이스를 선택합니다.
    런타임 컨테이너 설정
    이미지 실행하려는 Terraform 버전의 컨테이너 이미지에 대한 경로를 입력합니다.
    참고: 검증 버튼은 컨테이너 이미지를 확인하지 않습니다.
    CPU 요청 실행 중인 컨테이너의 CPU 양을 입력합니다. 기본값은 250밀리코어입니다.
    CPU 제한 실행 중인 컨테이너에 대해 허용되는 최대 CPU를 입력합니다. 기본값은 250밀리코어입니다.
    메모리 요청 실행 중인 컨테이너의 메모리 양을 입력합니다. 기본값은 512MB입니다.
    메모리 제한 실행 중인 컨테이너에 대해 허용되는 최대 메모리를 입력합니다. 기본값은 512MB입니다.
  5. 검증을 클릭하고 필요에 따라 설정을 조정합니다.
  6. 추가를 클릭합니다.

설정이 캐시됩니다. 통합을 추가한 후에는 클러스터 또는 네임스페이스와 같은 설정을 수정할 수 있지만 변경 내용이 감지되고 Terraform CLI가 새 설정에서 실행되는 데 최대 5분이 걸릴 수 있습니다.

Terraform 런타임 문제 해결

일부 Terraform 구성 배포 문제가 런타임 통합과 관련이 있을 수 있습니다.

문제 원인 해결 방법
네임스페이스가 잘못되었음을 나타내는 오류와 함께 검증이 실패합니다. UI에서 클러스터를 수정했지만 이전 네임스페이스를 종료했습니다. 클러스터 선택을 수정한 후 항상 네임스페이스를 다시 선택합니다.
네임스페이스 드롭다운이 비어 있거나 새로 추가된 네임스페이스를 나열하지 않습니다. 클러스터에 대한 데이터 수집이 완료되지 않았습니다. 데이터 수집은 클러스터를 입력하거나 수정한 후 최대 5분이 소요되고 네임스페이스를 입력하거나 수정할 때 최대 10분이 소요됩니다. 기존 네임스페이스가 포함된 새 클러스터의 경우 데이터 수집이 완료될 때까지 5분까지 기다립니다.

기존 클러스터의 새 네임스페이스의 경우 데이터 수집이 완료될 때까지 10분까지 기다립니다.

문제가 계속되면 클러스터를 제거하고 인프라 > 리소스 > Kubernetes에 다시 추가합니다.

통합 계정이 업데이트된 후에도 Terraform CLI 컨테이너가 이전 클러스터, 이전 네임스페이스 또는 이전 런타임 설정으로 생성됩니다. VMware Aria Automation에서 사용하는 Kubernetes API 클라이언트는 5분 동안 캐시됩니다. 변경 내용을 적용하려면 5분까지 소요될 수 있습니다.
검증 또는 Terraform 배포 작업이 kubeconfig를 사용할 수 없다는 오류와 함께 실패합니다. VMware Aria Automation에서 클러스터에 연결할 수 없기 때문에 이러한 오류가 발생하는 경우가 있습니다.

다른 경우에는 사용자 자격 증명, 토큰 또는 인증서가 잘못되었습니다.

kubeconfig 오류는 여러 가지 이유로 인해 발생할 수 있으며 문제 해결을 위해 기술 지원과 관련한 참여가 필요할 수 있습니다.

프록시 지원을 추가하는 방법

외부 Kubernetes 런타임 클러스터가 프록시 서버를 통해 연결되도록 하려면 다음 단계를 수행합니다.

  1. 외부 Kubernetes 클러스터 서버에 로그인합니다.
  2. 빈 폴더를 생성합니다.
  3. 새 폴더에서 Dockerfile이라는 새 파일에 다음 줄을 추가합니다.
    FROM projects.registry.vmware.com/vra/terraform:latest as final
    ENV https_proxy=protocol://username:password@proxy_host:proxy_port
    ENV http_proxy=protocol://username:password@proxy_host:proxy_port
    ENV no_proxy=.local,.localdomain,localhost
  4. 인터넷에 액세스하는 데 사용하는 프록시 서버 설정이 https_proxyhttp_proxy 환경 변수에 포함되도록 자리 표시자 값을 수정합니다.

    protocol은 프록시 서버가 무엇을 사용하느냐에 따라 http 또는 https가 되며 https_proxy 또는 http_proxy의 환경 변수 이름과 일치하지 않을 수 있습니다.

  5. Dockerfile을 저장하고 닫습니다.
  6. 빈 폴더에서 다음 명령을 실행합니다. 계정 권한에 따라 sudo 모드에서 명령을 실행해야 할 수도 있습니다.

    docker build --file Dockerfile --tag custom-terraform-runtime:1.0 .

    이 명령은 로컬 custom-terraform-runtime: 1.0 Docker 이미지를 생성합니다.

  7. Automation Assembler인프라 > 연결 > 통합에서 Terraform 런타임 통합으로 이동합니다.
  8. custom-terraform-runtime:1.0 이미지를 사용하도록 런타임 컨테이너 설정을 생성하거나 편집합니다.
    Terraform 런타임 프록시 이미지