Автоматизация обновлений с помощью REST API загрузок MariaDB.Org
Фонд MariaDB поддерживает REST API загрузок. Обратитесь к документации API загрузок, чтобы узнать все задачи, которые можно выполнить с помощью этого API. В общем случае можно сказать, что он предоставляет информацию о продуктах MariaDB и доступных версиях. Это позволяет легко автоматизировать обновления для MariaDB и связанных продуктов.
API загрузок предоставляет HTTPS-конечные точки, возвращающие информацию в формате JSON. HTTP и JSON — это чрезвычайно распространенные стандарты, которые легко использовать с любым языком программирования. Вся информация, предоставляемая API, является общедоступной, поэтому аутентификация не требуется.
Использование API с оболочкой Unix
Оболочки Linux отлично подходят для написания простых скриптов. Они в какой-то степени совместимы друг с другом, поэтому простые скрипты можно запускать практически на любой системе Unix/Linux. В следующих примерах мы будем использовать Bash.
В Linux для работы с любым REST API обычно необходимы следующие программы:
- curl, для вызова HTTP-URL и получения их вывода.
- jq, для извлечения или преобразования информации из JSON-документа.
Пример: Проверка появления новой GA-версии
Тривиальным случаем использования является написание скрипта, который проверяет список основных GA-версий MariaDB и, когда что-то изменяется, отправляет нам электронное письмо. Таким образом, мы можем протестировать самую новую GA-версию и, возможно, установить ее.
Скрипт в этом примере будет чрезвычайно простым. Мы сделаем это так:
- Получение JSON-объекта, описывающего все версии MariaDB.
- Для каждого элемента массива отображаются только свойства
release_idиrelease_status, и они конкатенируются. - Применяется фильтр, так что выбираются только строки, содержащие 'stable', но не 'old' (чтобы исключить 'Old Stable').
- Из оставшихся строк отображается только первый столбец (номер версии).
- Если полученные результаты отличаются от ранее записанных в файл (см. последний пункт), отправляется электронное письмо.
- Сохранение результатов в файл.
Это то, что мы можем легко сделать с помощью оболочки Unix:
#!/bin/bash
current_ga_versions=$(
curl https://downloads.mariadb.org/rest-api/mariadb/ | \
jq -r '.major_releases[] | .release_id + " " + .release_status' | \
grep -i 'stable' | grep -vi 'old' | \
cut -d ' ' -f 1
)
# create file if it doesn't exist, then compare version lists
touch ga_versions
previous_ga_versions=$( cat ga_versions )
echo "$current_ga_versions" > ga_versions
if [ "$current_ga_versions" != "$previous_ga_versions" ];
then
mail -s 'NOTE: New MariaDB GA Versions' devops@example.com <<< 'There seems to be a new MariaDB GA version! Yay!'
fi
Единственной нестандартной командой здесь является jq. Это отличный способ манипулирования JSON-документами, поэтому, если вы не знакомы с ним, вы можете ознакомиться с документацией jq.
Использование API с Python-скриптом
Для использования API с Python нам нужен модуль, который может отправлять HTTP-запросы и анализировать JSON-вывод. Модуль requests обладает обеими этими функциями. Его можно установить следующим образом:
pip install requests
Следующий скрипт выводит стабильные версии в стандартный вывод:
#!/usr/bin/env python
import requests
response = requests.get('https://downloads.mariadb.org/rest-api/mariadb/').json()
for x in response['major_releases']:
if x['release_status'] == 'Stable':
print(x['release_id'])
requests.get() выполняет HTTP-вызов типа GET, а requests.json() возвращает словарь, представляющий ранее полученный JSON-документ.
Контент первоначально предоставлен Vettabase Ltd.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/automating-upgrades-with-mariadborg-downloads-rest-api/