ECS. Как использовать команду curl API
Summary: Как использовать команду curl интерфейса прикладного программирования (API) с примерами GET и PUT.
Instructions
В этой статье базы знаний показано, как использовать команды curl для использования API ECS.
В руководствах пользователя, таких как «Руководство по администрированию ECS» или «Руководство по доступу к данным», приведены примеры использования API с командами curl.
Здесь показано, как использовать команду curl для GET и PUT в API. В этом примере API сертификата LDAPS для каждой KB ECS: Настройка и принятие всех сертификатов через LDAPS в ECS.
Пример Curl — пример API сертификата LDAPS:
API сертификатов LDAPS использует IP-адрес управления и разрешает доступ не emcmonitor, а пользователю root. Это пример использования API ECS, API сертификата LDAPS находится в "/vdc/truststore". Ваш API может отличаться и находиться в другом месте.
Чтобы проверить настройки ECS в отношении параметров сертификата LDAPS, сначала получите IP-адрес управления узлом для использования. Если для управления пользовательским интерфейсом существует разделение сети, команда «getrackinfo -n" имеет значения "mgmt". Используйте IP-адрес узлов public.mgmt, для выполнения следующих действий репликация и разделение сети передачи данных не требуются:
# getrackinfo -n Named networks ============== Node ID Network Ip Address Netmask Gateway VLAN Interface 1 repl 10.xxx.xxx.11 255.255.254.0 xxx.xxx.xxx.xxx 14 public 1 mgmt 10.xxx.xxx.21 255.255.254.0 xxx.xxx.xxx.xxx 13 public 1 data 10.xxx.xxx.31 255.255.254.0 xxx.xxx.xxx.xxx 15 public 2 repl 10.xxx.xxx.12 255.255.254.0 xxx.xxx.xxx.xxx 14 public 2 mgmt 10.xxx.xxx.22 255.255.254.0 xxx.xxx.xxx.xxx 13 public 2 data 10.xxx.xxx.32 255.255.254.0 xxx.xxx.xxx.xxx 15 public 3 repl 10.xxx.xxx.13 255.255.254.0 xxx.xxx.xxx.xxx 14 public 3 mgmt 10.xxx.xxx.23 255.255.254.0 xxx.xxx.xxx.xxx 13 public 3 data 10.xxx.xxx.33 255.255.254.0 xxx.xxx.xxx.xxx 15 public 4 repl 10.xxx.xxx.14 255.255.254.0 xxx.xxx.xxx.xxx 14 public 4 mgmt 10.xxx.xxx.24 255.255.254.0 xxx.xxx.xxx.xxx 13 public 4 data 10.xxx.xxx.34 255.255.254.0 xxx.xxx.xxx.xxx 15 public
Если на виртуальном ЦОД нет разделения сети public.mgmt, используйте вместо него общедоступный IP-адрес узла. Обратите внимание, что адрес разделения сети public.mgmt имеет приоритет, если он задан.
# getrackinfo Node private Node Public BMC Ip Address Id Status Mac Ip Address Mac Ip Address Node Name =============== ====== ====== ================= ================= ================= ================= ========= 192.1XX.2XX.1 1 MA a4:bf:xx:xx:xx:74 10.xx.xx.1 a4:bf:xx:xx:xx 192.1XX.2XX.101 provo-red 192.1XX.2XX.2 2 SA a4:bf:xx:xx:xx:c8 10.xx.xx.2 a4:bf:xx:xx:xx 192.1XX.2XX.102 sandy-red 192.1XX.2XX.3 3 SA a4:bf:xx:xx:xx:e0 10.xx.xx.3 a4:bf:xx:xx:xx 192.1XX.2XX.103 orem-red 192.1XX.2XX.4 4 SA a4:bf:xx:xx:xx:56 10.xx.xx.4 a4:bf:xx:xx:xx 192.168.219.104 ogden-red
Используйте полученный IP-адрес управления для получения токена пользователя root; требуется пароль пользователя root:
# curl -s -k -v -u root https://<NodeManagementIP>:4443/login 2>&1
Пример.
# curl -s -k -v -u root https://10.xxx.xxx.21:4443/login 2>&1 Enter host password for user 'root': ...... < HTTP/1.1 200 OK < Date: Thu, 14 Jan 2021 13:51:24 GMT < Content-Type: application/xml < Content-Length: 93 < Connection: keep-alive < X-SDS-AUTH-TOKEN: BAAcdWhGbnVRVjd1WlpmR0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAgAC0A8= < X-SDS-AUTH-USERNAME: root < X-SDS-AUTH-MAX-AGE: 28800 < * Connection #0 to host 10.xxx.xxx.21 left intact root
Если вывод не "HTTP/1.1 200 OK", проверьте пароль и IP-адрес, проверьте, существует ли разделение сети управления пользовательским интерфейсом из команды "getrackinfo -n». С помощью токена пользователя root создайте переменную токена. Допустимый токен необходимо обновить, если в новом сеансе интерфейса командной строки:
# export TOKEN='X-SDS-AUTH-TOKEN: BAAcdWhGbnVRVjd1WlpmR0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAgAC0A8='
Чтобы протестировать значение токена, можно выполнить команду «curl»:
# curl -k -X GET -H "$TOKEN" https://10.xxx.xxx.21:4443/object/capacity | xmllint --format - % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 176 100 176 0 0 249 0 --:--:-- --:--:-- --:--:-- 250 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <cluster_capacity> <totalFree_gb>100657</totalFree_gb> <totalProvisioned_gb>447005</totalProvisioned_gb> </cluster_capacity>
Описанные выше действия предназначены для получения маркера пользователя root для получения доступа curl к хранилищу доверенных сертификатов пользовательского интерфейса ECS. Дополнительные сведения по разделу «Добавление пользовательского сертификата LDAP» см. в руководстве администратора ECS. В данном примере API сертификата ECS API сертификата LDAPS находится в папке "/vdc/truststore". Ваш API может находиться в другом месте.
Пример GET с помощью curl:
Получите параметры хранилища доверенных сертификатов с помощью команды GET curl:
# curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://<NodeManagementIP>:4443/vdc/truststore/settings
Пример.
# curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://10.xxx.xxx.21:4443/vdc/truststore/settings
{"accept_all_certificates":false}
В приведенном выше примере доверенное хранилище "accept_all_certificates" имеет значение false. Это означает, что ECS может доверять только загруженным сертификатам LDAPS, которые соответствуют сертификату сервера AD/LDAP. Пользователь может захотеть установить для этого параметра значение «истина» или «ложь» в зависимости от его потребностей. Чтобы протестировать подключение LDAPS, можно установить для него значение true и протестировать вход пользователей в систему.
Создайте файл json, чтобы изменить параметры хранилища доверенных сертификатов с помощью команды curl с полезными данными json:
# sudo vi truststoresettings.json
# sudo cat truststoresettings.json
{"accept_all_certificates": "true"}
Модуль json.tool на python может проверять формат файла json. Если есть ошибка, возможно, это не файл json. В этом примере ошибки нет, и выполняется вывод файла, поэтому он является отформатированным файлом json:
# python -m json.tool truststoresettings.json
{
"accept_all_certificates": "true"
}
Пример Curl PUT:
Выполните команду «curl» с файлом json в качестве полезной нагрузки с помощью команды «curl PUT»:
# curl -s -k -X PUT -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://:4443/vdc/truststore/settings -d @truststoresettings.json
Чтобы убедиться, что он обновлен, выполните команду «curl GET»:
# curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://10.xxx.xxx.21:4443/vdc/truststore/settings
{"accept_all_certificates":true}