Консул HTTP-запросы для получения всех значений kv - PullRequest
0 голосов
/ 25 марта 2020

Мне нужно получить все значения consul kv, используя http api. В настоящее время я могу получить одно значение с помощью следующей команды.

curl -k -X GET https://consul.banuka1.us-east-2.test:8543/v1/kv/banuka-test/test-value?token=1995-08-18

возвращает только значение, указанное в нем (test-value)

Но я хочу получить все значения в kv store

Как я могу это сделать? Есть ли обходной путь здесь?

ПРИМЕЧАНИЕ: я уже сделал это с помощью consul cli, но я хочу сделать это с https api

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Вы можете упростить это и уменьшить количество вызовов API с помощью аргумента запроса recurse=true.

curl http://127.0.0.1:8500/v1/kv/\?recurse=true | jq -r '.[].Value | @base64d' 
0 голосов
/ 27 марта 2020

Обычно я делаю это для печати всех ключей и значений.

v1/kv/?keys - возвращает все ключи

Затем я повторяю каждый ключ и читаю необработанный ответ и декодирую значение base64 .

while read -r key
do    
    value=`curl --silent "http://127.0.0.1:8500/v1/kv/$key" | jq -r '.[].Value' | base64 --decode`
    echo "$key - $value"
done < <(curl --silent "http://127.0.0.1:8500/v1/kv/?keys"| jq -r '.[]')
...