This commit is contained in:
BASIS
2025-11-12 18:07:08 +03:00
committed by Ян Палис
commit 90dd7d4492
7776 changed files with 871610 additions and 0 deletions

View File

@@ -0,0 +1,574 @@
Функция доступна в версии провайдера 4.5.1 и выше.
_Resource_ функция **decort_cb_vins** служит для управления виртуальными сетевыми сегментами (Virtual Network Segment) на платформе DECORT.
## Аргументы
_Resource_ функция **decort_cb_vins** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| name | string | :heavy_check_mark: | Имя виртуального сетевого сегмента (ViNS), по которому требуется получить информацию. Имя не может быть пустым.<br/>ViNS идентифицируется по комбинации имени и идентификатора ресурсной группы (`rg_id`) или аккаунта (`account_id`).<br>Обратите внимание, что имя ViNS является уникальным в рамках "account" и ресурсной группы. |
| account_id | int | :heavy_check_mark: | ID аккаунта, в котором будет создан vins. Для создания vins должен быть указан или account_id, или rg_id. |
| rg_id | int | :heavy_check_mark: | Идентификатор ресурсной группы, в которой будет создан vins. Для создания vins должен быть указан или account_id, или rg_id. |
| dns | []string | :x: | Список IP адресов DNS |
| ext_net_id | int | :x: | Идентификатор внешней сети, в которую должен быть подключён ViNS. ViNS, созданные на уровне "account", не могут иметь подключений к внешним сетям.<br/>-1 не подключаться к extnet;<br/>0 автоматический выбор;<br/>1+ extnet ID.<br/>Значение по умолчанию -1. |
| ext_ip | string | :x: | IP внешней сети, относится только к extNetId >= 0 |
| ipcidr | string | :x: | IP CIDR, который требуется присвоить внутреннему сегменту данного ViNS. <br/>Данный параметр не является обязательным и принимается во внимание только на стадии создания нового ViNS. Если он не задан, то платформа установит значение самостоятельно. |
| pre_reservations_num | int | :x: | Количество предварительно созданных резерваций. |
| gid | int |:x:| ID кластера |
| description | string | :x: | Текстовое описание vins. |
| routes | []Struct [см. ниже](#описание-структуры-routes) | :x: | Список статических маршрутов. |
| default_qos | Struct [см. ниже](#описание-структуры-default_qos) | :x: | Обновить значения QoS по умолчанию.|
| enable | bool | :x: | Флаг включения внутренней сети |
| permanently | bool | :x: | Флаг для удаления ресурса vins без возможности восстановления. |
| force | bool | :x: | Флаг для принудительного удаления ресурса vins. |
| ip | []Struct [см. ниже](#описание-структуры-ip) | :x: | Создать/удалить резервирование DHCP на внутренней сети. |
| nat_rule | []Struct [см. ниже](#описание-структуры-nat_rule) | :x: | Добавить/удалить правило NAT (переадресации портов) для внутренней сети. Правила NAT можно указать только для зарезервированных IP. Если создается resourse_decort_cb_vins и resourse, который будет использовать данный vins, то поле nat_rule необходимо указать только после подключения данной сети к resourse и резервирования ip адреса |
| vnfdev_start | bool | :x: | Флаг запуска основного виртуального маршрутизатора внутренней сети. |
| vnfdev_restart | bool | :x: | Флаг перезагрузки основного виртуального маршрутизатора внутренней сети. |
| vnfdev_reset | bool | :x: | Флаг сброса основного виртуального маршрутизатора внутренней сети. |
| vnfdev_redeploy | bool | :x: | Флаг повторного разворачивания основного виртуального маршрутизатора внутренней сети. |
### Описание структуры routes
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| destination | string | :heavy_check_mark: | IP-адрес сети назначения |
| gateway | string | :heavy_check_mark: | Шлюз по умолчанию. IP-адрес из пула свободных IP-адресов внутренней сети. |
| netmask | string | :heavy_check_mark: | Маска сети назначения в формате 255.255.255.255 |
### Описание структуры default_qos
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| e_rate | int | :x: | Скорость исходящего трафика |
| in_burst | int | :x: | Размер буфера входящего трафика |
| in_rate | int | :x: | Скорость входящего трафика |
### Описание структуры ip
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| type | string | :heavy_check_mark: | Тип резервирования |
| ip_addr | string | :x: | Используемый IP-адрес. Для типа "EXCLUDED" требуется непустая строка. Игнорируется для типов "DHCP" и "VIP". |
| mac_addr | string | :x: | MAC-адрес для связи с резервированием IP-адресов. Игнорируется для типа "EXCLUDE", непустая строка требуется для "DHCP" и "VIP" |
| compute_id | int | :x: | ID виртуальной машины, связанной с этим резервированием типа "DHCP". Игнорируется для других типов. |
### Описание структуры nat_rule
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| int_ip | string | :heavy_check_mark: | Внутренний IP, для NAT правила |
| int_port | int | :x: | Внутренний порт, для NAT правила |
| ext_port_start | int | :heavy_check_mark: | Начало диапазона внешних портов, для NAT правила |
| ext_port_end | int | :x: | Конец диапазона внешних портов, для NAT правила |
| proto | string | :x: | Протокол для NAT. tcp или udp. Значение по умолчанию tcp. |
Пользователь облачной платформы, от лица которого происходит обращение к данной функции, должен иметь доступ к указанной учётной записи ("account") и/или ресурсной группе. В противном случае возникнет ошибка доступа.
Пользователь облачной платформы задается на стадии инициализации Terraform провайдера DECORT (см. [подробности](https://repository.basistech.ru/BASIS/wiki-terraform-provider-decort/src/branch/main/4.9.1/04.02-Инициализация-Terraform-провайдера-DECORT.md)).
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **decort_cb_vins** возвращает в указанную при вызове переменную следующие значения:
| Параметр | Тип | Описание |
| --- | --- | --- |
| vins_id | int | id vins |
| vnf_dev | []Struct [см. ниже](#описание-структуры-vnf_dev) | Виртуальный маршрутизатор внутренней сети |
| account_id | int | ID аккаунта ("account"), которому принадлежит ViNS. |
| account_name | string | Имя аккаунта ("account"), которому принадлежит ViNS. |
| created_by | string | Аккаунт, создавший vins |
| created_time | int | Время создания vins |
| default_gw | string | Шлюз по умолчанию |
| default_qos | Struct [см. ниже](#описание-структуры-default_qos) | QOS по умолчанию |
| deleted_by | string | Пользователь, удаливший vins |
| deleted_time | int | Время удаления vins |
| description | string | Текстовое описание ViNS. |
| gid | int | GRID ID |
| guid | int | ID ресурса |
| lock_status | string | Статус доступности |
| manager_id | int | Manager id |
| manager_type | string | Type of manager |
| milestones | int | Вехи |
| name | string | Имя ViNS. |
| netmask | int | Маска сети |
| network | string | Информация о сети |
| 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 внутренней сети для разработки |
| status | string | Статус vins |
| updated_by | string | Кем был обновлен vins |
| updated_time | int | Время последнего обновления vins |
| user_managed | bool | Флаг, управляется ли пользователем |
| vnfs | []Struct [см. ниже](#описание-структуры-vnfs) | Список VNFs |
| vxlan_id | int | Идентификатор vxlan |
| computes | []Struct [см. ниже](#описание-структуры-computes) | Информация о компьютах (виртуальных машинах) |
### Описание структуры computes
| Параметр | Тип | Описание |
| --- | --- | --- |
| id | int | Идентификатор компьюта |
| name | string | Имя компьюта |
### Описание структуры vnf_dev
| Параметр | Тип | Описание |
| --- | --- | --- |
| ckey | string | CKey |
| meta | []string | Мета информация |
| account_id | int | ID учетной записи |
| capabilities | []string | Возможности vnf_dev |
| config | []Struct [см. ниже](#описание-структуры-vnf_dev_config) | Конфигурация |
| config_saved | bool | Флаг, отвечающий за то сохранен ли конфиг |
| custom_precfg | bool | Флаг, отвечающий за то, есть ли кастомный пре-конфиг |
| description | string | Описание |
| gid | int | GRID ID |
| guid | int | ID ресурса |
| id | int | ID виртуального маршрутизатора внутренней сети |
| interfaces | []Struct [см. ниже](#описание-структуры-interfaces) | Список интерфейсов подключений |
| lock_status | string | Статус доступности |
| milestones | int | Вехи |
| name | string | Название виртуального маршрутизатора внутренней сети |
| status | string | Статус виртуального маршрутизатора внутренней сети |
| tech_status | string | Технический статус |
| type | string | Тип виртуального маршрутизатора внутренней сети |
| vnc_password | string | vnc пароль |
| vins | []int | Список виртуальных сетей |
### Описание структуры vnf_dev_config
| Параметр | Тип | Описание |
| --- | --- | --- |
| mgmt | []Struct [см. ниже](#описание-структуры-mgmt) | Config Mgmt |
| resources | []Struct [см. ниже](#описание-структуры-resources) | Ресурсы |
### Описание структуры mgmt
| Параметр | Тип | Описание |
| --- | --- | --- |
| ip_addr | string | ip-адрес |
| password | string | Пароль |
| ssh_key | string | Публичный SSH ключ |
| user | string | Имя пользователя |
### Описание структуры resources
| Параметр | Тип | Описание |
| --- | --- | --- |
| cpu | int | Количество CPU |
| ram | int | Количество RAM |
| stack_id | int | id стэка |
| uuid | string | UUID ресурса |
### Описание структуры interfaces
| Параметр | Тип | Описание |
| --- | --- | --- |
| conn_id | int | ID подключения |
| conn_type | string | Тип соединения |
| def_gw | string | Шлюз по умолчанию |
| enabled | bool | Флаг доступности |
| flipgroup_id | int | ID группы с плавающим ip-адресом |
| guid | string | ID ресурса |
| ip_address | string | IP адрес |
| listen_ssh | bool | открыт ли ssh connect |
| mac | string | MAC адрес интерфейса |
| mtu | string | Максимальный объём данных, который может быть передан за одну итерацию |
| name | string | Название интерфейса |
| net_id | int | ID сети |
| net_mask | int | Маска подсети |
| net_type | string | Тип сети |
| node_id | int | ID узла |
| pci_slot | int | id pci слота |
| bus_number | int | Номер шины |
| qos | []Struct [см. ниже](#описание-структуры-qos) | QOS |
| target | string | Цель сети |
| type | string | Тип интерфейса |
| vnfs | []int | Список VNFs |
| libvirt_settings | []Struct{}[см. ниже](#описание-структуры-libvirt_settings) | Параметры libvirt virtio интерфейса |
### Описание структуры libvirt_settings
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | string | GUID |
| txmode | string | TX mode |
| ioeventfd | string | IO event |
| event_idx | string | Event ID |
| queues | int | Количество очередей |
| rx_queue_size | int | Длина очереди RX |
| tx_queue_size | int | Длина очереди TX |
### Описание структуры qos
| Параметр | Тип | Описание |
| --- | --- | --- |
| e_rate | int | Egress Rate |
| guid | string | ID ресурса |
| in_brust | int | In brust |
| in_rate | int | In rate |
### Описание структуры default_qos
| Параметр | Тип | Описание |
| --- | --- | --- |
| e_rate | int | Egress Rate |
| guid | string | ID ресурса |
| in_brust | int | In brust |
| in_rate | int | In rate |
### Описание структуры vnfs
| Параметр | Тип | Описание |
| --- | --- | --- |
| dhcp | []Struct [см. ниже](#описание-структуры-dhcp) | Информация о DHCP |
| gw | []Struct [см. ниже](#описание-структуры-gw) | Информация о шлюзе |
| nat | []Struct [см. ниже](#описание-структуры-nat) | NAT |
### Описание структуры nat
| Параметр | Тип | Описание |
| --- | --- | --- |
| ckey | string | CKey |
| meta | []string | Мета информация |
| account_id | int | Уникальный идентификатор аккаунта-владельца ViNS. |
| created_time | int | Время создания |
| config | Struct{} [см. ниже](#описание-структуры-nat_config) | Информация о конфиге |
| devices | []Struct{} [см. ниже](#описание-структуры-devices) | Информация о девайсах |
| gid | int | GRID ID |
| guid | int | ID ресурса |
| 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 | Тип ресурса |
| routes | []Struct{} [см. ниже](#описание-структуры-routes) | Список статических маршрутов |
### Описание структуры nat_config
| Параметр | Тип | Описание |
| --- | --- | --- |
| net_mask | int | Маска сети |
| network | string | Сеть |
| rules | []Struct{} [см. ниже](#описание-структуры-rules) | Правила 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 | Имя виртуальной машины |
### Описание структуры gw
| Параметр | Тип | Описание |
| --- | --- | --- |
| ckey | string | CKey |
| meta | []string | Мета информация о шлюзе |
| account_id | int | Уникальный идентификатор владельца |
| config | Struct{} [см. ниже](#писание-структуры-gw_config) | Информация о конфиге |
| created_time | int | Время создания |
| devices | []Struct{} [см. ниже](#описание-структуры-devices) | Информация о девайсах |
| gid | int | Grid ID |
| guid | int | ID ресурса |
| id | int | ID gw |
| lock_status | string | Статус доступа gw |
| milestones | int | Вехи |
| owner_id | int | ID владельца |
| owner_type | string | Тип владельца |
| pure_virtual | bool | Флаг, показывающий является ли ресурс чисто виртуальным |
| routes | []Struct{} [см. ниже](#описание-структуры-routes) | Список статических маршрутов |
| status | string | Статус gw |
| tech_status | string | Технический статус gw |
| type | string | Тип gw |
### Описание структуры gw_config
| Параметр | Тип | Описание |
| --- | --- | --- |
| default_gw | string | Шлюз по умолчанию |
| ext_net_id | int | ID внешней сети |
| ext_net_ip | string | IP внешней сети |
| ext_netmask | int | Маска внешней сети |
| qos | Struct{} [см. ниже](#описание-структуры-qos) | QOS |
### Описание структуры dhcp
| Параметр | Тип | Описание |
| --- | --- | --- |
| ckey | string | CKey |
| meta | []string | Мета информация о dhcp |
| account_id | int | id аккаунта |
| config | []Struct [см. ниже](#описание-структуры-dhcp_config) | Конфигурация dhcp |
| created_time | int | Время создания |
| devices | []Struct{} [см. ниже](#описание-структуры-devices) | Информация о девайсах |
| gid | int | Grid ID |
| guid | int | ID ресурса |
| id | int | ID dhcp |
| lock_status | string | Статус доступа dhcp |
| milestones | int | Вехи |
| owner_id | int | ID владельца |
| owner_type | string | Тип владельца |
| pure_virtual | bool | Флаг, показывающий является ли ресурс чисто виртуальным |
| routes | []Struct{} [см. ниже](#описание-структуры-routes) | Список статических маршрутов |
| status | string | Статус dhcp |
| tech_status | string | Технический статус dhcp |
| type | string | Тип dhcp |
### Описание структуры routes
| Параметр | Тип | Описание |
| --- | --- | --- |
| compute_ids | []int | Список ID compute, которым предоствавлен доступ |
| route_id | int | ID статического маршрута |
| guid | int | ID ресурса |
| destination | string | IP целевой сети |
| netmask | int | Маска сети |
| gateway | string | IP шлюза |
### Описание структуры devices
| Параметр | Тип | Описание |
| --- | --- | --- |
| primary | Struct{} [см. ниже](#описание-структуры-primary) | Первичная информация |
### Описание структуры primary
| Параметр | Тип | Описание |
| --- | --- | --- |
| dev_id | int | ID dev |
| iface01 | string | Интерфейс 1 |
| iface02 | string | Интерфейс 2 |
### Описание структуры dhcp_config
| Параметр | Тип | Описание |
| --- | --- | --- |
| default_gw | string | Шлюз по умолчанию |
| dns | []string | Список dns |
| ip_end | string | Конец диапазона IP адресов |
| ip_start | string | Старт диапазона IP адресов |
| lease | int | Срок |
| net_mask | int | Маска подсети |
| network | string | Информация о сети |
| reservations | []Struct [см. ниже](#описание-структуры-reservations) | Информация о резервациях |
### Описание структуры reservations
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккунта |
| ip | string | IP адрес |
| mac | string | MAC адрес |
| type | string | Тип |
| vm_id | int | ID виртуальной машины |
## Пример использования
Пример вызова _data source_ функции **decort_cb_vins**:
```terraform
resource "decort_cb_vins" "vins" {
#обязательный параметр
#имя создаваемого ресурса
#тип - строка
#используется при создании
name = "test_name"
#id аккаунта для создания ресурса
#опциональный параметр
#внимание, для создания ресурса обязательно должен быть указан или rg_id, или account_id
#тип - целое число
#используется при создании
account_id = 2023
#id ресурсной группы для создаения ресурса
#опциональный параметр
#внимание, для создания ресурса обязательно должен быть указан или rg_id, или account_id
#тип - целое число
#используется при создании
rg_id = 10101
#id внешней сети для подключения к ней ресурса
#опциональный параметр
#тип - целое число
#используется при создании и обновлении
#ext_net_id = 2222
#ip внешней сети для подключения к нему ресурса
#опциональный параметр
#тип - строка
#используется при создании и обновлении
#ext_ip = "1.1.1.1"
#приватная сеть IP CIDR
#опциональный параметр
#тип - строка
#используется при создании
#ipcidr = "192.168.0.1"
#количество зарезервированных адресов на момент создания
#опциональный параметр
#тип - целое число
#используется при создании
#pre_reservations_num = 2
#grid (platform) ID
#опциональный параметр
#тип - целое число
#используется при создании
#gid = 2002
#описание
#опциональный параметр
#тип - строка
#используется при создании
#description = "Description"
#блок для указания списка routes
#опциональный параметр
#тип - список routes
#используется при создании
#routes = [{
#ip целевой сети
#опциональный параметр
#тип - строка
#destination = "DHCP"
#сетевая маска в формате 255.255.255.255
#опциональный параметр
#тип - строка
#netmask = "192.168.5.5"
#шлюз по умолчанию
#опциональный параметр
#тип - строка
#gateway = "192.168.5.5"
#}]
#default qos
#опциональный параметр
#блок для указания default_qos
#тип - список qos
#используется при обновлении
#default_qos = {
#внутренний трафик, Кбит
#опциональный параметр
#тип - целое число
#in_rate = 1
#burst внутреннего трафика, Кбит
#опциональный параметр
#тип - целое число
#in_burst = 1
#rate внешнего трафика, Кбит
#опциональный параметр
#тип - целое число
#e_rate = 1
#}
#ручное подключение и отключение ресурса
#опциональный параметр
#тип - булев
#используется при создании и обновлении
#enable = true
#флаг для удаления VINS, без возможности восстановления
#опциональный параметр
#тип - булев
#используется при удалении
#permanently = true
#удаляет за собой все зависимые ресурсы
#опциональный параметр
#тип - булев
#используется при удалении
#force = true
#блок для резервирования ip
#опциональный параметр
#тип - список параметров ip
#используется при создании и обновлении
#ip {
#тип подключения
#обязательный параметр
#тип - строка
#type = "DHCP"
#ip который необходимо зарезервировать
#опциональный параметр
#тип - строка
#ip_addr = "192.168.5.5"
#mac который необходимо зарезервировать
#опциональный параметр
#тип - строка
#mac = "ff:ff:ff:ff:ff:ff"
#compute_id, ассоциируемый с типом DHCP
#опциональный параметр
#тип - целое число
#compute_id = 1234
#}
#блок для добавления natRule
#опциональный параметр
#тип - список параметров natRule
#используется при создании и обновлении
#nat_rule {
#ip внутренний
#обязательный параметр
#тип - строка
#int_ip = "192.168.0.28"
#внутренний порт
#опциональный параметр
#тип - целое число
#int_port = 80
#начало диапазона внешних портов
#обязательный параметр
#тип - целое число
#ext_port_start = 8001
#конец диапазона внешних портов
#опциональный параметр
#тип - целое число
#ext_port_end = 8001
#протокол natRule: разрешенные значения "tcp", "udp"
#опциональный параметр
#тип - строка
#proto = "tcp"
#}
#vnf dev start, stop
#опциональный параметр
#true: старт vnfDev; false: стоп vnfDev
#тип - булев
#используется при обновлении
#vnfdev_start = true
#перезапуск vnfDev
#опциональный параметр
#тип - булев
#используется при обновлении
#vnfdev_restart = true
#сброс vnfDev
#опциональный параметр
#тип - булев
#используется при обновлении
#vnfdev_reset = true
#редеплой vnfDev
#опциональный параметр
#тип - булев
#используется при обновлении
#vnfdev_redeploy = true
#список dns
#опциональный параметр
#если при создании указать пустой список, то ресурс создается с полем vnfs.dhcp.config.dns, имеющим значение по умолчанию
#если при обновлении указать пустой список, то ресурс обновит в модели поле vnfs.dhcp.config.dns с текущего значения на пустой список
#тип - список строк
#используется при создании и обновлении
#dns = ["1.1.1.1", "2.2.2.2"]
}
# Once the above directive completes, ViNS ID will be accessible as
# decort_cb_vins.my_vins.id
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий [раздел](https://repository.basistech.ru/BASIS/wiki-terraform-provider-decort/src/branch/main/4.9.1/04.02-Инициализация-Terraform-провайдера-DECORT.md) и [пример](https://repository.basistech.ru/BASIS/wiki-terraform-provider-decort/src/branch/main/4.9.1/02.-Пример-работы.md)).
После успешного завершения такого вызова **decort_cb_vins** в переменной `data.decort_cb_vins.vins` будут сохранены возвращаемые значения. В частности, для получения идентификатора ViNS следует использовать конструкцию `data.decort_cb_vins.vins.id`