_Resource_ функция **dynamix_vins** служит для управления виртуальными сетевыми сегментами (Virtual Network Segment) в платформе DYNAMIX. ## Аргументы _Resource_ функция **dynamix_vins** принимает следующие аргументы: | Аргумент | Тип | Обязательный | Описание | | --- | --- | --- | --- | | name | string | :heavy_check_mark: | Имя виртуального сетевого сегмента (ViNS), по которому требуется получить информацию. Имя не может быть пустым.
ViNS идентифицируется по комбинации имени и идентификатора ресурсной группы (`rg_id`) или подписчика (`account_id`).
Обратите внимание, что имя ViNS является уникальным в рамках "account" и ресурсной группы. | | rg_id | int | :x: | Идентификатор ресурсной группы, в которой должен находиться данный ViNS.
Если требуется создать ViNS на уровне подписчика ("account"), то необходимо указать `rg_id = 0`.
Обратите внимание, что попытка изменить `rg_id` у существующего ресурса приведёт к его пересозданию. | | account_id | int | :x: | Данный параметр является обязательным независимо от того, создаётся ли ViNS на уровне подписчика или на уровне ресурсной группы.
Идентификатор подписчика ("account"), в котором должен находиться данный ViNS.
Обратите внимание, что попытка изменить `account_id` у существующего ресурса приведёт к его пересозданию. | | dns | []string | :x: | Список IP адресов DNS | | ext_net_id | int | :x: | Идентификатор внешней сети, в которую должен быть подключён ViNS. Если подключение во внешнюю сеть не требуется, то необходимо задать `ext_net_id = 0`.
Обратите внимание, что из всех ViNS, созданных на уровне одной и той же ресурсной группы, только один может иметь подключение к внешней сети. ViNS, созданные на уровне "account", не могут иметь подключений к внешним сетям. | | ext_ip_addr | string | :x: | IP внешней сети | | ipcidr | string | :x: | IP CIDR, который требуется присвоить внутреннему сегменту данного ViNS.
Данный параметр не является обязательным и принимается во внимание только на стадии создания нового ViNS. Если он не задан, то платформа установит значение самостоятельно. | | pre_reservations_num | int | :x: | Кол-во IP адресов, которое будет зарезервировано при создании | | gid | int | :x: | GRID ID | | enabled | bool | :x: | Флаг, отвечающий за возможность переводить ресурс в состояния enable и disable | | permanently | bool | :x: | Безвозвратное удаление диска. Используется при удалении | | force | bool | :x: | Удаление ресурса, в случае если он к чему-то присоединен произойдет отсоединение его от других ресурсов и удаление | | ip | Struct{} [см. ниже](#описание-структуры-ip) | :x: | Структура для резервирования IP адресов | | nat_rule | Struct{} [см. ниже](#описание-структуры-nat_rule) | :x: | Структура для того, чтобы задавать правила NAT | | desc | string | :x: | Текстовое описание данного ViNS.
Данный параметр не является обязательным, значение по умолчанию - пустая строка. | | restore | bool | :x: | Флаг, для восстановления ресурса | | vnfdev_restart | bool | :x: | Флаг, для рестарта VNF | | vnfdev_redeploy | bool | :x: | Флаг, для редеплоя VNF | ### Описание структуры ip | Аргумент | Тип | Обязательный | Описание | | --- | --- | --- | --- | | type | string | :heavy_check_mark: | Тип резервирования IP адреса | | ip_addr | string | :x: | IP адрес, который надо зарезервировать | | mac_addr | string | :x: | MAC адрес, который надо зарезервировать | | compute_id | int | :x: | ID компьюта, который надо зарезервировать | ### Описание структуры 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 | Пользователь облачной платформы, от лица которого происходит обращение к данной функции, должен иметь доступ к указанной учётной записи ("account") и/или ресурсной группе. В противном случае возникнет ошибка доступа. ## Возвращаемые значения В случае успешного выполнения _Resource_ функция **dynamix_vins** возвращает в указанную при вызове переменную следующие значения: | Параметр | Тип | Описание | | --- | --- | --- | | vnf_dev | []Struct{} [см. ниже](#описание-структуры-vnf_dev) | VNFDEV | | \_ckey | string | CKey | | account_id | int | Уникальный идентификатор подписчика-владельца ViNS. | | account_name | string | Имя подписчика ("account"), которому принадлежит ViNS. | | computes | []Struct{} [см. ниже](#описание-структуры-computes) | Информация о компьютах | | default_gw | string | Шлюз по умолчанию | | default_qos | []Struct{} [см. ниже](#описание-структуры-qos) | 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) | VNFS | | vxlan_id | int | ID vxlan | | routes | []Struct{} [см. ниже](#описание-структуры-routes) | Список статических маршрутов | ### Описание структуры 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{} [см. ниже](#описание-структуры-config) | Конфиг 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{} [см. ниже](#описание-структуры-interfaces) | Информация о интерфейсах | | lock_status | string | Статус доступа vnf_dev | | milestones | int | Этапы | | vnf_name | string | Имя VNF | | status | string | Статус | | tech_status | string | Технический статус | | type | string | Тип vnf | | vins | []int | Список виртуальных сетей | | vnc_password | string | VNC пароль | ### Описание структуры config | Параметр | Тип | Описание | | --- | --- | --- | | mgmt | Struct{} [см. ниже](#описание-структуры-mgmt) | Config Mgmt | | resources | []Struct{} [см. ниже](#описание-структуры-resources) | 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 | Параметр | Тип | Описание | | --- | --- | --- | | bus_number | int | Номер шины | | conn_id | int | ID коннекта | | conn_type | string | Тип коннекта | | def_gw | string | Шлюз по умолчанию | | flipgroup_id | int | ID flipgroup | | guid | string | ID ресурса | | ip_address | string | IP адрес интерфейса | | libvirt_settings | []Struct{}[см. ниже](#описание-структуры-libvirt_settings) | Параметры libvirt virtio интерфейса | | listen_ssh | bool | Флаг, говорящий о том, слушается ли ssh | | mac | string | MAC адрес интерфейса | | mtu | int | Максимальный размер пакета, который может быть передан по сети без фрагментации | | name | string | Имя интерфейса | | net_id | int | ID сети | | net_mask | int | Маска | | net_type | string | Тип сети | | pci_slot | int | Слот pci | | qos | Struct{} [см. ниже](#описание-структуры-qos) | QOS | | target | string | Таргет интерфейса | | type | string | Тип интерфейса | | vnfs | []int | Список ID vnf | ### Описание структуры 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 | ### Описание структуры 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 | []Struct{} [см. ниже](#описание-структуры-dhcp) | информаиця о DHCP | | gw | []Struct{} [см. ниже](#описание-структуры-gw) | GW | | nat | []Struct{} [см. ниже](#описание-структуры-nat) | NAT | ### Описание структуры dhcp | Параметр | Тип | Описание | | --- | --- | --- | | \_ckey | string | CKey | | account_id | int | Уникальный идентификатор подписчика-владельца ViNS. | | config | Struct{} [см. ниже](#описание-структуры-dhcp-config) | Информация о DHCP конфиге | | created_time | int | Время создания | | devices | []Struct{} [см. ниже](#описание-структуры-devices) | Информация о девайсах | | 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) | Информация о резервациях | ### Описание структуры reservations | Параметр | Тип | Описание | | --- | --- | --- | | account_id | int | Тип ID аккаунта | | ip | string | IP адрес | | mac | string | MAC адрес | | type | string | Тип | | vm_id | int | ID виртуальной машины | ### Описание структуры devices | Параметр | Тип | Описание | | --- | --- | --- | | primary | Struct{} [см. ниже](#описание-структуры-primary) | Первичная информация | ### Описание структуры primary | Параметр | Тип | Описание | | --- | --- | --- | | dev_id | int | ID dev | | iface01 | string | Интерфейс 1 | | iface02 | string | Интерфейс 2 | ### Описание структуры gw | Параметр | Тип | Описание | | --- | --- | --- | | \_ckey | string | CKey | | account_id | int | Уникальный идентификатор подписчика-владельца ViNS. | | config | Struct{} [см. ниже](#описание-структуры-gw-config) | Информация о конфиге | | created_time | int | Время создания | | devices | []Struct{} [см. ниже](#описание-структуры-devices) | Информация о девайсах | | 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_netmask | int | Маска внешней сети | | qos | Struct{} [см. ниже](#описание-структуры-qos) | QOS | ### Описание структуры nat | Параметр | Тип | Описание | | --- | --- | --- | | \_ckey | string | CKey | | account_id | int | Уникальный идентификатор подписчика-владельца ViNS. | | created_time | int | Время создания | | config | Struct{} [см. ниже](#описание-структуры-nat-config) | Информация о конфиге | | devices | []Struct{} [см. ниже](#описание-структуры-devices) | Информация о девайсах | | 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{} [см. ниже](#описание-структуры-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 | Имя виртуальной машины | ## Пример использования Пример вызова _Resource_ функции **dynamix_vins**: ```terraform resource "dynamix_vins" "vins" { #имя создаваемого ресурса #обязательный параметр #тип - строка name = "Test_name" #id ресурсной группы для создания ресурса #опциональный параметр #тип - целое число rg_id = 10101 #id аккаунта для создания ресурса #опциональный параметр #тип - целое число account_id = 2023 #блок правил extnet #опциональный параметр #тип - блок extnet ext_net = { #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 #описание #опциональный параметр #тип - строка desc = "Description" #ручное подключение и отключение ресурса #опциональный параметр #тип - булев enable = true #удаление навсегда #опциональный параметр #по умолчанию - true #тип - булев permanently = true #удаляет за собой все зависимые ресурсы #опциональный параметр #по умолчанию - true #тип - булев force = true #список для резервирования ip #опциональный параметр #тип - массив объектов ip ip = [{ #тип подключения #обязательный параметр #тип - строка type = "DHCP" #ip который необходимо зарезервировать #опциональный параметр #тип - строка ip_addr = "192.168.5.5" #mac который необходимо зарезервировать #опциональный параметр #тип - строка mac_addr = "ff:ff:ff:ff:ff:ff" }] #список для резервирования ip #опциональный параметр #тип - массив объектов правил nat nat_rule = [{ #ip внутренний #опциональный параметр #тип - строка int_ip = "192.168.0.28" #внутренний порт #опциональный параметр #тип - целое число int_port = 80 #начало диапазона внешних портов #опциональный параметр #тип - целое число ext_port_start = 8001 #конец диапазона внешних портов #опциональный параметр #тип - целое число ext_port_end = 8001 #протокол natRule #опциональный параметр #тип - строка proto = "tcp" }] #восстановление ресурса #опциональный параметр #по умолчанию - true #тип - булев restore = true #перезапуск vnfDev #опциональный параметр #тип - булев vnfdev_restart = true #редеплой vnfDev #опциональный параметр #тип - булев vnfdev_redeploy = true #список dns #опциональный параметр #применяется при создании и редактировании ресурса #если при создании указать пустой список, то ресурс создается с полем vnfs.dhcp.config.dns, имеющим значение по умолчанию #если при обновлении указать пустой список, то ресурс обновит в модели поле vnfs.dhcp.config.dns с текущего значения на пустой список #тип - список строк #dns = ["1.1.1.1", "2.2.2.2"] } ``` После успешного завершения такого вызова **dynamix_vins** в переменной `dynamix_vins.vins` будут сохранены возвращаемые значения. В частности, для получения идентификатора ViNS следует использовать конструкцию `dynamix_vins.vins.id`