Curl이 bash 변수를 수신하지 못하고 jq 오류로 종료되었습니다.

Curl이 bash 변수를 수신하지 못하고 jq 오류로 종료되었습니다.

bash 스크립트에서 컬 요청에 bash 변수를 전달하고 싶습니다.

#!/bin/sh
#request sshkey from do rebrain account
do_token=`echo "var.do-token" | terraform -chdir=/input console -var-file terraform.auto.tfvars`
echo $do_token
curl -X GET -s -H "Authorization: Bearer $do_token" -d '{ "job_run": {} }' "https://api.digitalocean.com/v2/account/keys?page=1" | jq -r --arg queryname "User's key" '.ssh_keys[] | select(.name == $queryname).public_key'

echo $do_token 다음과 같이 적절한 토큰을 따옴표로 묶어 반환합니다 "token". 하지만 오류가 발생합니다 "jq: error (at <stdin>:0): Cannot iterate over null (null)".

그런 다음 이를 main.tf에 전달합니다.

data "external" "fetchssh" {
  program = ["bash", "${path.module}/get_sshkey.sh"]
  query = {
    do_token = var.do-token
  }
}

Terraform에서 data.external.fetchssh 변수 사용

오류를 방지하려면 어떻게 구현해야 합니까?

답변1

이는 유효한 "${do_token//"}"이므로 전달하면 curl -X GET -s -H "Authorization: Bearer ${do_token//\"}" "https://api.digitalocean.com/v2/account/keys?page=1" | jq -r --arg queryname "User's key" '.ssh_keys[] | select(.name == $queryname).public_key'SSH 키가 반환됩니다.

관련 정보