【发布时间】:2021-06-12 18:16:12
【问题描述】:
我,尝试通过 Terraform data "external" 返回 bash 执行,但出现错误:
│ jq: error (at <stdin>:0): Cannot iterate over null (null)
│
│
│ with data.external.fetchssh,
│ on dovpccloud.tf line 31, in data "external" "fetchssh":
│ 31: data "external" "fetchssh" {
然而 bash 脚本成功返回 ssh-script:
#!/bin/bash
do_token=`echo "var.do-token" | terraform -chdir=/input console`
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-rsa。 在数据“外部”之后,我将在液滴资源中使用它:
resource "digitalocean_droplet" "web" {
image = "ubuntu-18-04-x64"
name = "web-1"
region = "lon1"
size = "s-1vcpu-1gb"
tags = [digitalocean_tag.devops.id, digitalocean_tag.your_email.id]
ssh_keys = [digitalocean_ssh_key.user.id, data.external.fetchssh]
}
我怀疑问题出在内部 terraform 方法的程序执行中,但无法得到什么。
【问题讨论】:
-
curl的示例输出是什么?否则,很难推测您的jq失败的原因。
标签: bash curl terraform jq digital-ocean