我想将 bash 变量传递给 bash 脚本中的curl 请求:
#!/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 密钥