Import JSON Code from API+jq
Создаём скрипт запроса ключа
В обратных кавычках Curl запрос с отфильтрованным fingerprint-ом ключа
sudo tee ~/key_convert << 'EOF'
#!/bin/bash
echo "{
\"fingerprint\": `curl -X GET \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <key>' \
'https://api.digitalocean.com/v2/account/keys?page=1&per_page=999' \
| jq '.ssh_keys[] | select(.name=="REBRAIN.SSH.PUB.KEY") | .fingerprint'`
}"
EOF
Доставляем ключ в конфигурацию terraform
Функция lookup извлекает значение указанного ключа из набора
data "external" "key_conv" {
program = ["bash", "${path.root}/key_convert"]
}
resource "digitalocean_droplet" "ubuntu01" {
***
ssh_keys = [
"${lookup(data.external.key_conv.result, "fingerprint", "what?")}"
]
}
Пример jq-запросов вывода ключей
Выгрузка значения fingerprint конкретного ключа по его name:
curl -X GET \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <key>' \
'https://api.digitalocean.com/v2/account/keys?page=1&per_page=999' \
| jq '.ssh_keys[] | select(.name=="REBRAIN.SSH.PUB.KEY") | .fingerprint'
Выгрузка значений name всех ключей:
curl -X GET \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <key>' \
'https://api.digitalocean.com/v2/account/keys?page=1&per_page=999' \
| jq '.ssh_keys[] | .name'