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 키가 반환됩니다.