Files
CloudRouterAdvanced/docs/QUICKSTART.md
T
ayurishchevandClaude Sonnet 5 5979a9a58b Add adaptive router VM/interface scaling and local delivery integrity tests
Terraform now provisions router_count IaaS Router VMs (default 2, no
longer hardcoded to router1/router2), each with 1 public +
private_interface_count isolated private interfaces (no shared LAN or
VRRP between routers). Both counts scale via Terraform variables and
TF_VAR_* environment variables. The post-install script became a
Terraform template that matches interfaces to their expected subnet by
CIDR instead of a fragile "first private IP" heuristic.

Added an offline pytest suite (terraform/tests/) that checks the
delivery's internal consistency and runs real terraform init/validate
against the actual vkcs provider schema via a project-local filesystem
mirror (provider binary fetched from its GitHub releases, bypassing the
region-blocked HashiCorp registry) - no cloud credentials or API calls
involved. terraform/versions.tf now declares the previously-missing
required_providers block.

Ansible (inventory.ini, base/frr_router/keepalived roles) still assumes
the old 2-router/2-NIC/VRRP topology and is not yet adapted - documented
as a follow-up, not addressed here.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011hXR2ftXZZhJ4Y3XuSoR8r
2026-09-03 16:03:12 +03:00

2.9 KiB

Quick Start (самостоятельное развёртывание)

Пошаговая инструкция для самостоятельного развёртывания сценария из этого репозитория на VK Cloud.

1. Подготовка

  • Аккаунт VK Cloud с включённым API/CLI-доступом, project_id.
  • SSH-ключ загружен в VK Cloud (имя ключа понадобится в terraform.tfvars).
  • Установлены terraform (≥1.13) и ansible.

2. Клонировать репозиторий и задать credentials

Отредактировать terraform/terraform.tfvars:

username     = "<ваш VK Cloud логин>"
password     = "<пароль>"
project_id   = "<ваш project_id>"
ssh_key_name = "<имя загруженного SSH-ключа>"

3. (Опционально) масштабирование

По умолчанию: 2 роутера × 3 интерфейса (1 публичный + 2 приватных). Меняется без правки кода — либо раскомментировать нужные строки в terraform.tfvars, либо через переменные окружения:

export TF_VAR_router_count=4
export TF_VAR_private_interface_count=3

4. Развернуть

cd terraform
terraform init
terraform plan
terraform apply

Каждая ВМ сама донастроит сеть при первой загрузке (network-init.sh.tpl) и перезагрузится.

5. Настроить Ansible

⚠️ Важно: ansible/inventory.ini и роли (base/frr_router/keepalived) пока жёстко рассчитаны на 2 роутера с интерфейсами eth0/eth1 (VRRP-схема) — под новую N-роутерную/3-NIC архитектуру ещё не адаптированы. Для дефолтных значений (router_count=2, private_interface_count=2) впишите реальные wan_ip/lan_ip/GRE/BGP-параметры роутеров в inventory.ini вручную. При масштабировании выше 2 роутеров или интерфейсов Ansible-слой нужно дорабатывать отдельно.

cd ansible
ansible-playbook -i inventory.ini site.yml

6. Проверить

  • SSH на публичные IP роутеров, cat /var/log/network-config.log — лог настройки интерфейсов.
  • ip a, networkctl — убедиться, что eth0 (WAN) и eth1..ethN (приватные) подняты корректно.
  • FRR/strongSwan/keepalived статусы — см. раздел "Under the Hood" в README.md.

Локальная офлайн-проверка поставки (без облака)

terraform/tests/setup-local-terraform.sh
venv/bin/pytest terraform/tests -v