Используемые термины: Aptly , API , Linux .
В данной инструкции мы рассмотрим процесс установки и запуска API для платформы управления репозиториями Deb-пакетов Aptly. Также мы рассмотрим несколько запросов в качестве примера.
Установка Aptly API и запуск в качестве службы
Обратный прокси NGINX
Примеры запросов к API
Дополнительные материалы
В зависимости от типа Linux, на который установлен Aptly. действия будут сильно различаться. Рассмотрим саму установку платформы, а также запуск API в качестве systemd процесса.
API является частью приложения Aptly и устанавливается вместе с ним. Сам Aptly может быть установлен на различные операционные системы.
Подробнее, процесс расписан в другой инструкции — Настройка и управление репозиторием Debian с помощью Aptly .
Сразу после установки Aptly можно запустить API командой:
aptly api serve
Однако, мы рассмотрим способ его запуска в качестве сервиса.
Как было сказано выше, процесс отличается для систем на базе deb и rpm.
Для систем DEB разработчики Aptly предоставляют готовые файлы для автозапуска сервиса. Для этого устанавливаем пакет aptly-api:
apt update
apt install aptly-api
Для RPM нет готового пакета с нужными файлами, поэтому создадим их вручную:
vi /usr/lib/systemd/system/aptly-api.service
[Unit]
Description=Aptly REST API
After=network.target
Documentation=man:aptly(1)
[Service]
User=root
Group=root
Environment=TERM=dumb
WorkingDirectory=/opt/aptly
EnvironmentFile=/etc/sysconfig/aptly-api
ExecStart=/usr/bin/aptly api serve -config=/etc/aptly.conf ${APTLY_OPTIONS} -listen=${LISTEN_ADDRESS}
LimitNOFILE=32768
[Install]
WantedBy=multi-user.target
В юните автозапуска мы используем EnvironmentFile. Создадим его:
vi /etc/sysconfig/aptly-api
# Default settings for aptly-api systemd service
# bind to host:port
LISTEN_ADDRESS=’localhost:8080′
# aptly options:
# -no-lock allow aptly commands in parallel with api service (no global database lock, but lock per request)
APTLY_OPTIONS=»-no-lock»
* наполнение для файла взято из того же файла пакета aptly-api. В нем необходимо обратить внимание на опцию LISTEN_ADDRESS , которая указывает, на какой адресе и каком порту должен запускаться сервис.
Если у нас работает SELinux, то задаем bin_t контекст для исполняемого файла aptly:
chcon -R -t bin_t /usr/bin/aptly
После создания необходимых файлов можно запустить сервис API командой:
systemctl enable aptly-api —now
Проверить работу сервиса можно командой:
systemctl status aptly-api
Также можно сделать первый запрос к API:
curl http://127.0.0.1:8080/api/version
Мы должны получить в ответ информацию о версии установленного Aptly.
Мы запустили API на порту 8080. Хорошей практикой будет использовать обратный прокси. Мы будем использовать nginx.
Для начала установим его. Наши действия будут зависеть от типа Linux.
а) Для Deb:
apt install nginx
б) Для RPM:
yum install nginx
NGINX установлен. Идем дальше.
Запускаем сервис nginx и разрешаем его автозапуск:
systemctl —now enable nginx
Создадим конфигурационный файл с настройкой виртуального домена.
а) Для Deb:
vi /etc/nginx/sites-enabled/aptly-api.conf
б) Для RPM:
vi /etc/nginx/conf.d/aptly-api.conf
Вставляем:
server {
listen 80;
server_name aptly-api.remontka.com ;
client_max_body_size 1G;
access_log off;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
* где aptly-api.remontka.com — доменное имя, которое ведет на наш сервер с nginx и aptly-api.
Проверяем конфигурацию и перечитываем ее:
nginx -t && nginx -s reload
Если в нашей системе используется SELinux (как правило, на RPM-based системах), вводим команду:
setsebool httpd_can_network_connect 1 -P
* данная политика разрешает httpd-сервису и веб-скриптам подключение по сети.
Если в нашей системе используется брандмауэр, разрешаем порт 80 (http). В зависимости от фаервола, команды будут отличаться.
а) iptables (как правило, DEB):
iptables -I INPUT -p tcp —dport 80 -j ACCEPT
apt install iptables-persistent
netfilter-persistent save
б) firewalld (как правило, RPM):
firewall-cmd —add-ser=http
firewall-cmd —add-ser=http —per
Готово.
С любого компьютера в сети переходим в браузере по адресу http://<IP-адрес API>/api/version — должна открыться страница с информацией о версии Aptly.
Рассмотрим несколько простых примеров работы с API. Более детальную документацию и примеры можно найти на официальном сайте .
1. Получить список существующих репозиториев:
curl http://aptly.remontka.com/api/repos | jq
2. Добавление пакета в репозиторий. выполняется в 3 этапа.
Загружаем deb-файл на сервер во временный каталог:
curl -X POST -F file=@my-app_amd64.deb http://aptly.remontka.com/api/files/my-app-temp-dir
* где my-app-temp-dir — временный каталог. Его название может быть произвольным.
Добавляем загруженный файл в репозиторий:
curl -X POST http://aptly.remontka.com/api/repos/myrepo-name/file/my-app-temp-dir/my-app_amd64.deb
* где:
Обновляем публикацию:
curl -X PUT http://aptly.remontka.com/api/publish/filesystem:remontka:myrepo-name/stable
* где:
3. Получаем информацию.
Список пакетов в репозитории:
curl http://aptly.remontka.com/api/repos/myrepo-name/packages | jq
* где myrepo-name — имя репозитория.
Детальная информация о пакете:
curl «http://aptly.remontka.com/api/packages/Pamd64%20my-app%201.0.0%20d572ef62ef4e4836» | jq
* где Pamd64%20my-app%201.0.0%20d572ef62ef4e4836 — пакет в формате «Pamd64 <имя пакета> <версия пакета> <идентификатор>». Обратите внимание, что символы пробела указываются как %20 .
4. Удаление пакетов:
curl -X DELETE -H ‘Content-Type: application/json’ -d ‘{ «PackageRefs»: [ «Pamd64 my-app 1.0.0 d572ef62ef4e4836» ] }’ http://aptly.remontka.com/api/repos/myrepo-name/packages
* где:
Другие полезные материалы по теме:
1. Настройка и управление репозиторием Debian с помощью Aptly .
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…