Я пишу сценарий процесса с помощью vultr-cli. Мне нужно развернуть новый VPS в Vultr, выполнить несколько промежуточных шагов, а затем уничтожить VPS с помощью сценария bash. Как получить значения экземпляра в скрипте после развертывания? Есть ли способ получить информацию в формате JSON или напрямую установить переменные среды?

Пока мой сценарий выглядит так:

#!/bin/bash

## Create an instance. How do I retrieve the instance ID 
## for use later in the script?
vultr-cli instance create --plan vc2-1c-1gb --os 387 --region ewr

## With the instance ID, retrieve the main IPv4 address.
## Note: I only want the main IP, but there may be multiple. 
vultr-cli instance ipv4 list $INSTANCE_ID

## Perform some tasks here with the IPv4. Assuming I created 
## the instance with my SSH key, for example:
scp root@$INSTANCE_IPv4:/var/log/logfile.log ./logfile.log

## Destroy the instance. 
vultr-cli instance delete $INSTANCE_ID
0
David Finster 23 Янв 2021 в 20:09

1 ответ

Лучший ответ

Vultr-cli будет выводить ответ, который он получает от API, как это

☁  ~  vultr-cli instance create --plan vc2-1c-1gb --os 387 --region ewr
INSTANCE INFO
ID          87e98eb0-a189-4519-8b4e-fc46bb0a5331
Os          Ubuntu 20.04 x64
RAM         1024
DISK            0
MAIN IP         0.0.0.0
VCPU COUNT      1
REGION          ewr
DATE CREATED        2021-01-23T17:39:45+00:00
STATUS          pending
ALLOWED BANDWIDTH   1000
NETMASK V4
GATEWAY V4      0.0.0.0
POWER STATUS        running
SERVER STATE        none
PLAN            vc2-1c-1gb
LABEL
INTERNAL IP
KVM URL
TAG
OsID            387
AppID           0
FIREWALL GROUP ID
V6 MAIN IP
V6 NETWORK
V6 NETWORK SIZE     0
FEATURES        []

Итак, вы хотите получить идентификатор и его значение из ответа. Это грубый пример, но он работает.

vultr-cli instance create --plan vc2-1c-1gb --os 387 --region ewr | grep -m1 -w "ID" | sed 's/ID//g' | tr -d " \t\n\r"

Мы ищем первую строку с идентификатором (который всегда будет первой строкой). Затем удалите идентификатор слова, а затем удалите все пробелы и символы новой строки.

Вы захотите сделать что-то подобное с вашим вызовом ipv4 list.

Опять же, может быть лучший способ записать часть grep / sed / tr, но это сработает для ваших нужд. Надеюсь, это поможет!

1
ddymko 23 Янв 2021 в 17:45