Инфраструктура как код
i4b проектируется как API-first платформа: помимо личного кабинета — публичный REST API, интерфейс командной строки и Terraform-провайдер. Описывайте ресурсы декларативно, встраивайте их в CI/CD и воспроизводите окружения без ручных действий в панели.
Публичный REST API
Единый программный интерфейс к ресурсам аккаунта: серверы, сети, тома, объектное хранилище, заказы и счета. Аутентификация по токену, JSON-запросы и ответы, понятные коды состояния HTTP.
# Токен выпускается в личном кабинете
export I4B_TOKEN="ваш-токен"
curl https://api.i4b.ru/v1/account \
-H "Authorization: Bearer $I4B_TOKEN"
curl -X POST https://api.i4b.ru/v1/servers \
-H "Authorization: Bearer $I4B_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "web-01",
"cpu": 4,
"ram_gb": 8,
"disk_gb": 80,
"location": "msk1"
}'
curl https://api.i4b.ru/v1/servers \
-H "Authorization: Bearer $I4B_TOKEN"
# S3-совместимый доступ (aws-cli)
aws --endpoint-url https://s3.i4b.ru \
s3 cp ./backup.tar.gz s3://my-bucket/
Интерфейс командной строки
Утилита i4b — тонкая обёртка над REST API для повседневных операций из терминала и скриптов. Одна авторизация, дальше — управление ресурсами командами.
# Разовая авторизация в аккаунте
i4b auth login
# Проверить, кто вы и какие площадки доступны
i4b account whoami
i4b location list
i4b server create \
--name web-01 --cpu 4 --ram 8 \
--disk 80 --location msk1
i4b server list
i4b server reboot web-01
i4b server delete web-01
Terraform-провайдер
Описывайте инфраструктуру декларативно и держите её в системе контроля версий. Провайдер синхронизирует состояние ресурсов i4b с вашими .tf-файлами — plan покажет изменения до применения.
terraform {
required_providers {
i4b = {
source = "i4b/i4b"
}
}
}
provider "i4b" {
token = var.i4b_token
}
resource "i4b_server" "web" {
name = "web-01"
cpu = 4
ram_gb = 8
disk_gb = 80
location = "msk1"
}
output "ip" {
value = i4b_server.web.ipv4
}
# Инициализация, предпросмотр изменений и применение
terraform init
terraform plan
terraform apply
Первичная настройка при старте
Задавайте начальную конфигурацию виртуальной машины через cloud-init: пакеты, пользователи, SSH-ключи, команды запуска. Настройка применяется автоматически при первом старте — без ручного входа на сервер.
#cloud-config
package_update: true
packages:
- docker.io
- git
users:
- name: deploy
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_authorized_keys:
- ssh-ed25519 AAAA... you@laptop
runcmd:
- systemctl enable --now docker
Хотите ранний доступ к API?
Расскажите, какие сценарии автоматизации вам важны — учтём при развитии API, CLI и Terraform-провайдера и позовём в раннее тестирование.