Resource функция decort_vins служит для управления виртуальными сетевыми сегментами (Virtual Network Segment) в платформе DECORT.
Изменения в 3.3.0
Добавлена обработка статусов виртуальной сети.
Если статус DELETED, то при попытке изменения конфигурационного файла, сеть будет автоматически восстановлена.
Если статус DESTROYED, то при попытке изменения конфигурационного файла, сеть будет автоматически пересоздана.
Начиная с версии 3.3.0, в ресурсе vins появляется опциональное поле enabled
, которое принимает в себя булево значение. Поле отвечает за ручную регуляцию статуса доступности виртуальной сети, автоматическая регуляция так же имеется - восстановленная и вновь созданная виртуальная сеть переводится в режим enabled = true
.
Добавлена возможность добалять NAT правила через блок nat_rule.
Добавлена возможность резервировать и освобождать IP адреса для виртуальной сети с помощью блока ip.
Добавлена возможность ручного рестарта виртуальной сети, через опциональное поле restore
которое принимает в себя булево значение.
Добавлена возможность ручного рестарта VNF, через опциональное поле vnfdev_restart
которое принимает в себя булево значение.
Добавлена возможность ручного редеплоя VNF, через опциональное поле vnfdev_redeploy
которое принимает в себя булево значение.
Добавлена возможность удаления ресурса в корзину и полность, через опциональное поле permanently
которое принимает в себя булево значение.
Добавлена возможность удаления ресурса даже если к нему присоеденены другие ресурсы, которые будут отключены от виртуальной сети, через опциональное поле force
которое принимает в себя булево значение.
Аргументы
Resource функция decort_vins принимает следующие аргументы:
Аргумент |
Тип |
Обязательный |
Описание |
name |
string |
✔️ |
Имя виртуального сетевого сегмента (ViNS), по которому требуется получить информацию. Имя не может быть пустым. ViNS идентифицируется по комбинации имени и идентификатора ресурсной группы (rg_id ) или подписчика (account_id ). Обратите внимание, что имя ViNS является уникальным в рамках "account" и ресурсной группы. |
rg_id |
int |
❌ |
Идентификатор ресурсной группы, в которой должен находиться данный ViNS. Если требуется создать ViNS на уровне подписчика ("account"), то необходимо указать rg_id = 0 . Обратите внимание, что попытка изменить rg_id у существующего ресурса приведёт к его пересозданию. |
account_id |
int |
❌ |
Данный параметр является обязательным независимо от того, создаётся ли ViNS на уровне подписчика или на уровне ресурсной группы. Идентификатор подписчика ("account"), в котором должен находиться данный ViNS. Обратите внимание, что попытка изменить account_id у существующего ресурса приведёт к его пересозданию. |
ext_net_id |
int |
❌ |
Идентификатор внешней сети, в которую должен быть подключён ViNS. Если подключение во внешнюю сеть не требуется, то необходимо задать ext_net_id = 0 . Обратите внимание, что из всех ViNS, созданных на уровне одной и той же ресурсной группы, только один может иметь подключение к внешней сети. ViNS, созданные на уровне "account", не могут иметь подключений к внешним сетям. |
ext_ip_addr |
string |
❌ |
IP внешней сети |
ipcidr |
string |
❌ |
IP CIDR, который требуется присвоить внутреннему сегменту данного ViNS. Данный параметр не является обязательным и принимается во внимание только на стадии создания нового ViNS. Если он не задан, то платформа установит значение самостоятельно. |
pre_reservations_num |
int |
❌ |
Кол-во IP адресов, которое будет зарезервировано при создании |
gid |
int |
❌ |
GRID ID |
enabled |
bool |
❌ |
Флаг, отвечающий за возможность переводить ресурс в состояния enable и disable |
permanently |
bool |
❌ |
Безвозвратное удаление диска. Используется при удалении |
force |
bool |
❌ |
Удаление ресурса, в случае если он к чему-то присоединен произойдет отсоединение его от других ресурсов и удаление |
ip |
Struct{} см. ниже |
❌ |
Структура для резервирования IP адресов |
nat_rule |
Struct{} см. ниже |
❌ |
Структура для того, чтобы задавать правила NAT |
desc |
string |
❌ |
Текстовое описание данного ViNS. Данный параметр не является обязательным, значение по умолчанию - пустая строка. |
restore |
bool |
❌ |
Флаг, для восстановления ресурса |
vnfdev_restart |
bool |
❌ |
Флаг, для рестарта VNF |
vnfdev_redeploy |
bool |
❌ |
Флаг, для редеплоя VNF |
Описание структуры ip
Аргумент |
Тип |
Обязательный |
Описание |
type |
string |
✔️ |
Тип резервирования IP адреса |
ip_addr |
string |
❌ |
IP адрес, который надо зарезервировать |
mac_addr |
string |
❌ |
MAC адрес, который надо зарезервировать |
compute_id |
int |
❌ |
ID компьюта, который надо зарезервировать |
Описание структуры nat_rule
Аргумент |
Тип |
Обязательный |
Описание |
int_ip |
string |
❌ |
Внутренний IP, для NAT правила |
int_port |
int |
❌ |
Внутренний порт, для NAT правила |
ext_port_start |
int |
❌ |
Начало диапазона внешних портов, для NAT правила |
ext_port_end |
int |
❌ |
Конец диапазона внешних портов, для NAT правила |
proto |
string |
❌ |
Протокол для NAT. tcp или udp |
Пользователь облачной платформы, от лица которого происходит обращение к данной функции, должен иметь доступ к указанной учётной записи ("account") и/или ресурсной группе. В противном случае возникнет ошибка доступа.
Возвращаемые значения
В случае успешного выполнения Resource функция decort_vins возвращает в указанную при вызове переменную следующие значения:
Параметр |
Тип |
Описание |
vnf_dev |
[]Struct{} см. ниже |
VNFDEV |
_ckey |
string |
CKey |
account_id |
int |
Уникальный идентификатор подписчика-владельца ViNS. |
account_name |
string |
Имя подписчика ("account"), которому принадлежит ViNS. |
computes |
[]Struct{} см. ниже |
Информация о компьютах |
default_gw |
string |
Шлюз по умолчанию |
default_qos |
[]Struct{} см. ниже |
qos виртуальной сети |
desc |
string |
Текстовое описание ViNS. |
gid |
int |
Grid ID |
guid |
int |
ID ресурса |
lock_status |
string |
Статус доступа виртуальной сети |
manager_id |
int |
ID manager |
manager_type |
string |
Type of manager |
milestones |
int |
Milestones |
name |
string |
Имя ViNS. |
net_mask |
int |
Маска подсети |
network |
string |
Сеть Vins |
pre_reservations_num |
int |
Кол-во зарезервированных ip адресов |
redundant |
bool |
Redudant |
rg_id |
int |
Идентификатор ресурсной группы, на уровне которой создан ViNS. Для ViNS, существующих на уровне "account", данный параметр будет равен 0. |
rg_name |
string |
Имя ресурсной группы |
sec_vnf_dev_id |
int |
ID sec vnf |
status |
string |
Статус |
user_managed |
bool |
Флаг user managed |
vnfs |
[]Struct{} см. ниже |
VNFS |
vxlan_id |
int |
ID vxlan |
routes |
[]Struct{} см. ниже |
Список статических маршрутов |
Описание структуры routes
Параметр |
Тип |
Описание |
compute_ids |
[]int |
Список ID compute, которым предоствавлен доступ |
route_id |
int |
ID статического маршрута |
guid |
string |
ID ресурса |
destination |
string |
IP целевой сети |
netmask |
string |
Маска сети |
gateway |
string |
IP шлюза |
Описание структуры vnf_dev
Параметр |
Тип |
Описание |
_ckey |
string |
Ckey |
account_id |
int |
ID аккаунта |
capabilities |
[]string |
Возможности vnf_dev |
config |
Struct{} см. ниже |
Конфиг VNF |
config_saved |
bool |
Флаг, отвечающий за то сохранен ли конфиг |
custom_pre_cfg |
bool |
Custom |
desc |
string |
Описание |
gid |
int |
Grid ID |
guid |
int |
ID ресурса |
vnf_id |
int |
ID vnf |
interfaces |
[]Struct{} см. ниже |
Информация о интерфейсах |
lock_status |
string |
Статус доступа vnf_dev |
milestones |
int |
Этапы |
vnf_name |
string |
Имя VNF |
status |
string |
Статус |
tech_status |
string |
Технический статус |
type |
string |
Тип vnf |
vins |
[]int |
Список виртуальных сетей |
Описание структуры config
Параметр |
Тип |
Описание |
mgmt |
Struct{} см. ниже |
Config Mgmt |
resources |
[]Struct{} см. ниже |
Config resources |
Описание структуры mgmt
Параметр |
Тип |
Описание |
ip_addr |
string |
IP адрес mgmt |
password |
string |
Пароль юзера |
ssh_key |
string |
Публичный SSH ключ |
user |
string |
Имя юзера |
Описание структуры resources
Параметр |
Тип |
Описание |
cpu |
int |
Кол-во cpu ресурса |
ram |
int |
Кол-во ram ресурса |
stack_id |
int |
ID stack ресурса |
uuid |
string |
UUID ресурса |
Описание структуры interfaces
Параметр |
Тип |
Описание |
conn_id |
int |
ID коннекта |
conn_type |
string |
Тип коннекта |
def_gw |
string |
Шлюз по умолчанию |
flipgroup_id |
int |
ID flipgroup |
guid |
string |
ID ресурса |
ip_address |
string |
IP адрес интерфейса |
listen_ssh |
bool |
Флаг, говорящий о том, слушается ли ssh |
mac |
string |
MAC адрес интерфейса |
name |
string |
Имя интерфейса |
net_id |
int |
ID сети |
net_mask |
int |
Маска |
net_type |
string |
Тип сети |
pci_slot |
int |
Слот pci |
qos |
Struct{} см. ниже |
QOS |
target |
string |
Таргет интерфейса |
type |
string |
Тип интерфейса |
vnfs |
[]int |
Список ID vnf |
Описание структуры computes
Параметр |
Тип |
Описание |
compute_id |
int |
ID компьюта |
compute_name |
string |
Имя компьюта |
Описание структуры qos
Параметр |
Тип |
Описание |
e_rate |
int |
E rate |
guid |
string |
ID ресурса |
in_brust |
int |
In brust |
in_rate |
int |
In rate |
Описание структуры vnfs
Описание структуры dhcp
Параметр |
Тип |
Описание |
_ckey |
string |
CKey |
account_id |
int |
Уникальный идентификатор подписчика-владельца ViNS. |
config |
Struct{} см. ниже |
Информация о DHCP конфиге |
created_time |
int |
Время создания |
devices |
[]Struct{} см. ниже |
Информация о девайсах |
gid |
int |
GRID ID |
guid |
int |
ID ресурса |
dhcp_id |
int |
ID dhcp |
lock_status |
string |
Статус доступа виртуальной сети |
milestones |
int |
Milestones |
owner_id |
int |
ID владельца |
owner_type |
string |
Тип владельца |
pure_virtual |
bool |
Флаг, показывающий является ли ресурс чисто виртуальным |
status |
string |
Статус |
tech_status |
string |
Технический статус |
type |
string |
Тип ресурса |
Описание структуры dhcp config
Параметр |
Тип |
Описание |
default_gw |
string |
Шлюз по умолчанию |
dns |
[]string |
Список dns |
ip_end |
string |
Конец диапазона IP адресов |
ip_start |
string |
Старт диапазона IP адресов |
lease |
int |
срок |
netmask |
int |
Маска сети |
network |
string |
Сеть |
reservations |
[]Struct{} см. ниже |
Информация о резервациях |
Описание структуры reservations
Параметр |
Тип |
Описание |
client_type |
string |
Тип клиента |
desc |
string |
Описание |
domainname |
string |
Имя домена |
hostname |
string |
Имя хоста |
ip |
string |
IP адрес |
mac |
string |
MAC адрес |
type |
string |
Тип |
vm_id |
int |
ID виртуальной машины |
Описание структуры devices
Параметр |
Тип |
Описание |
primary |
Struct{} см. ниже |
Первичная информация |
Описание структуры primary
Параметр |
Тип |
Описание |
dev_id |
int |
ID dev |
iface01 |
string |
Интерфейс 1 |
iface02 |
string |
Интерфейс 2 |
Описание структуры gw
Параметр |
Тип |
Описание |
_ckey |
string |
CKey |
account_id |
int |
Уникальный идентификатор подписчика-владельца ViNS. |
config |
Struct{} см. ниже |
Информация о конфиге |
created_time |
int |
Время создания |
devices |
[]Struct{} см. ниже |
Информация о девайсах |
gid |
int |
GRID ID |
guid |
int |
ID ресурса |
gw_id |
int |
ID GW |
lock_status |
string |
Статус доступа виртуальной сети |
milestones |
int |
Milestones |
owner_id |
int |
ID владельца |
owner_type |
string |
Тип владельца |
pure_virtual |
bool |
Флаг, показывающий является ли ресурс чисто виртуальным |
status |
string |
Статус |
tech_status |
string |
Технический статус |
type |
string |
Тип ресурса |
Описание структуры gw config
Параметр |
Тип |
Описание |
default_gw |
string |
Шлюз по умолчанию |
ext_net_id |
int |
ID внешней сети |
ext_net_ip |
string |
IP внешней сети |
ext_netmask |
int |
Маска внешней сети |
qos |
Struct{} см. ниже |
QOS |
Описание структуры nat
Параметр |
Тип |
Описание |
_ckey |
string |
CKey |
account_id |
int |
Уникальный идентификатор подписчика-владельца ViNS. |
created_time |
int |
Время создания |
config |
Struct{} см. ниже |
Информация о конфиге |
devices |
[]Struct{} см. ниже |
Информация о девайсах |
gid |
int |
GRID ID |
guid |
int |
ID ресурса |
nat_id |
int |
ID NAT |
lock_status |
string |
Статус доступа виртуальной сети |
milestones |
int |
Milestones |
owner_id |
int |
ID владельца |
owner_type |
string |
Тип владельца |
pure_virtual |
bool |
Флаг, показывающий является ли ресурс чисто виртуальным |
status |
string |
Статус |
tech_status |
string |
Технический статус |
type |
string |
Тип ресурса |
Описание структуры nat config
Параметр |
Тип |
Описание |
net_mask |
int |
Маска сети |
network |
string |
Сеть |
rules |
[]Struct{} см. ниже |
Правила NAT |
Описание структуры rules
Параметр |
Тип |
Описание |
rule_id |
int |
ID правила |
local_ip |
string |
Локальный IP адрес |
local_port |
int |
Локальный порт |
protocol |
string |
Протокол |
public_port_end |
int |
Конец диапазона портов |
public_port_start |
int |
Начало диапазона портов |
vm_id |
int |
ID виртуальной машины |
vm_name |
string |
Имя виртуальной машины |
Пример использования
Пример вызова Resource функции decort_vins:
resource "decort_vins" "my_vins" {
#обязательный параметр
#имя создаваемого ресурса
#тип - строка
name = "Test_name"
#опциональный параметр
#id ресурсной группы для создаения ресруса
#тип - число
rg_id = 10101
#опциональный параметр
#id аккаунта для создаения ресруса
#тип - число
account_id = 2023
#опциональный параметр
#id внешней сети для подключения к ней ресруса
#тип - число
ext_net_id = 2222
#опциональный параметр
#ip внешней сети для подключения к нему ресруса
#тип - строка
ext_ip_addr = "1.1.1.1"
#опциональный параметр
#private network IP CIDR
#тип - строка
ipcidr = "192.168.0.1"
#опциональный параметр
#количество зарезервированных адресов на момент создания
#тип - число
#значение по умолчанию 32
pre_reservations_num = 2
#опциональный параметр
#grid (platform) ID
#тип - число
gid = 2002
#опциональный параметр
#Description
#тип - строка
desc = "Description"
#опциональный параметр
#ручное подключение и отключение ресурса
#тип - булев тип
#enabled = true
#опциональный параметр
#удаление навсегда
#тип - булев тип
permanently = true
#опциональный параметр
#удаляет за собой все зависимые ресурсы
#тип - булев тип
force = true
#опциональный параметр
#блок для резервирования ip
#тип - блок
ip {
#обязательный параметр
#тип подключения
#тип - строка
type = "DHCP"
#опциональный параметр
#ip который необходимо зарезервировать
#тип - строка
ip_addr = "192.168.5.5"
#опциональный параметр
#mac который необходимо зарезервировать
#тип - строка
mac_addr = "ff:ff:ff:ff:ff:ff"
}
#опциональный параметр
#блок для добавления natRule
#тип - блок
nat_rule {
#опциональный параметр
#ip внутренний
#тип - строка
int_ip = "192.168.0.28"
#опциональный параметр
#внутренний порт
#тип - число
int_port = 80
#опциональный параметр
#начало диапазона внешних портов
#тип - число
ext_port_start = 8001
#опциональный параметр
#конец диапазона внешних портов
#тип - число
ext_port_end = 8001
#опциональный параметр
#протокол natRule
#тип - строка
proto = "tcp"
}
#опциональный параметр
#восстановление ресурса
#тип - булев тип
restore = true
#опциональный параметр
#перезапуск vnfDev
##тип - булев тип
vnfdev_restart = true
#опциональный параметр
#редеплой vnfDev
#тип - булев тип
vnfdev_redeploy = true
}
После успешного завершения такого вызова decort_vins в переменной decort_vins.my_vins
будут сохранены возвращаемые значения. В частности, для получения идентификатора ViNS следует использовать конструкцию decort_vins.my_vins.id