Раздел переписан по факту поведения платформы, а не по документации. - номер сети лежит в resource_id, а не id, добавлен vpc_id_of() - список сетей приходит голым массивом - при создании принимается только имя, регион и участники только для чтения - подключение сервера асинхронно и блокирует сервер, добавлен vpc_wait_member() - отключение участника и удаление сети настойчивые, ждут снятия блокировки Добавлен пример private_network.py. Claude-Session: https://claude.ai/code/session_01Loz5stgQZH6ofBdMqTxiJu
34 строки
1.4 KiB
Python
34 строки
1.4 KiB
Python
"""Приватная сеть между серверами.
|
|
|
|
Зачем. Серверы в одной приватной сети видят друг друга напрямую, минуя интернет.
|
|
Трафик внутри не тарифицируется, а машине-исполнителю можно не давать публичный адрес
|
|
вообще, что и дешевле, и безопаснее. Управляющий сервер разговаривает с ней по локали.
|
|
|
|
Порядок такой: создать сеть, подключить в неё серверы, дождаться подключения.
|
|
"""
|
|
from regcloud_api import RegCloud
|
|
|
|
api = RegCloud()
|
|
|
|
print("сети на аккаунте:")
|
|
for v in api.vpcs():
|
|
print(f" {RegCloud.vpc_id_of(v)} {v['name']:16s} {v['region_slug']:12s} "
|
|
f"участников {len(v.get('members') or [])}")
|
|
|
|
net = api.create_vpc("backoffice")
|
|
net_id = RegCloud.vpc_id_of(net)
|
|
print("создана сеть", net_id)
|
|
|
|
# подключаем свои серверы
|
|
for server in api.servers():
|
|
api.vpc_attach(net_id, server["id"])
|
|
api.vpc_wait_member(net_id, server["id"])
|
|
print(" подключён", server["name"])
|
|
|
|
print("в сети сейчас:", api.vpc_members(net_id))
|
|
|
|
# отключать и удалять тоже надо уметь
|
|
# for sid in api.vpc_members(net_id):
|
|
# api.vpc_detach(net_id, sid)
|
|
# api.delete_vpc(net_id)
|