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 キーが返されます。