Bash 명령의 Terraform 구문 분석 결과

2354 단어
이 예에서는 bash 명령 whoami의 결과를 가져오고 Terraform이 이 예에서 poweruser인 사용자 이름으로 사용하는 변수를 반환하려고 합니다.

유효한 JSON의 입력 문자열이 필요하기 때문에 Terraform 설명서가 지나치게 복잡하고 혼란스럽다는 것을 알았습니다. 다행스럽게도 이것은 쉘에서 채찍질하는 것이 그리 어렵지 않습니다.

참고: 많은 자습서에서 jq 도구 사용을 제안하지만 이는 특히 Terraform이 임의의 유닉스 컨테이너에서 실행되는 경우 복잡성을 더할 뿐입니다. 따라서 표준 도구만 사용하려고 합니다.

JSON에서 사용자 이름을 생성하는 Bash 스크립트는 다음과 같습니다.

#!/bin/env bash

username=`whoami`

echo "{\"value\": \"$username\"}"


이 whoami.sh를 호출하고 프로젝트의 최상위 디렉토리에 저장합니다.

결과는 다음과 같습니다.

{"value": "poweruser"}


다음은 Terraform입니다.

data "external" "username" {
  program = ["bash","whoami.sh"]
  query = {
    p_env = "whoami"
  }
}


코드를 사용하려면 다음을 변수로 사용하십시오.

  username            = data.external.username.result.value


이것이 작동하는 방식은 "데이터", "외부", 이름, "사용자 이름"이 있는 terraform의 맨 윗줄을 보면 알 수 있습니다.

마지막으로 "result.value"는 json 출력을 구문 분석할 때 Terraform에서 하드 코딩됩니다.

이것은 약간 적은 노력으로 사소한 셸 명령에서 Terraform으로 데이터를 가져오는 데 도움이 됩니다. 전반적으로 나는 이것이 상당히 혼란 스럽다는 것을 알았습니다.

시간이 주어지면 이 게시물을 편집하고 완전한 작업 Terrform 코드를 추가하겠습니다.

좋은 웹페이지 즐겨찾기