diff --git a/07.01.04-Resource-функция-decort_vins-управление-виртуальными-сетевыми-сегментами.md b/07.01.04-Resource-функция-decort_vins-управление-виртуальными-сетевыми-сегментами.md index 079c79f..ba2601a 100644 --- a/07.01.04-Resource-функция-decort_vins-управление-виртуальными-сетевыми-сегментами.md +++ b/07.01.04-Resource-функция-decort_vins-управление-виртуальными-сетевыми-сегментами.md @@ -6,31 +6,298 @@ _Resource_ функция **decort_vins** принимает следующие | Аргумент | Тип | Обязательный | Описание | | --- | --- | --- | --- | | name | string | :heavy_check_mark: | Имя виртуального сетевого сегмента (ViNS), по которому требуется получить информацию. Имя не может быть пустым.
ViNS идентифицируется по комбинации имени и идентификатора ресурсной группы (`rg_id`) или подписчика (`account_id`).
Обратите внимание, что имя ViNS является уникальным в рамках "account" и ресурсной группы. | -| account_id | int | :heavy_check_mark: | Данный параметр является обязательным независимо от того, создаётся ли ViNS на уровне подписчика или на уровне ресурсной группы.
Идентификатор подписчика ("account"), в котором должен находиться данный ViNS.
Обратите внимание, что попытка изменить `account_id` у существующего ресурса приведёт к его пересозданию. | -| ext_net_id | int | :heavy_check_mark: | Идентификатор внешней сети, в которую должен быть подключён ViNS. Если подключение во внешнюю сеть не требуется, то необходимо задать `ext_net_id = 0`.
Обратите внимание, что из всех ViNS, созданных на уровне одной и той же ресурсной группы, только один может иметь подключение к внешней сети. ViNS, созданные на уровне "account", не могут иметь подключений к внешним сетям. | -| description | string | :x: | Текстовое описание данного ViNS.
Данный параметр не является обязательным, значение по умолчанию - пустая строка. | -| ipcidr | string | :x: | IP CIDR, который требуется присвоить внутреннему сегменту данного ViNS.
Данный параметр не является обязательным и принимается во внимание только на стадии создания нового ViNS. Если он не задан, то платформа установит значение самостоятельно. | | rg_id | int | :x: | Идентификатор ресурсной группы, в которой должен находиться данный ViNS.
Если требуется создать ViNS на уровне подписчика ("account"), то необходимо указать `rg_id = 0`.
Обратите внимание, что попытка изменить `rg_id` у существующего ресурса приведёт к его пересозданию.| +| account_id | int | :x: | Данный параметр является обязательным независимо от того, создаётся ли ViNS на уровне подписчика или на уровне ресурсной группы.
Идентификатор подписчика ("account"), в котором должен находиться данный ViNS.
Обратите внимание, что попытка изменить `account_id` у существующего ресурса приведёт к его пересозданию. | +| 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 | +| enable | 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 | :x: | Внутренний IP, для NAT правила | +| int_port | int | :x: | Внутренний порт, для NAT правила | +| ext_port_start | int | :x: | Начало диапазона внешних портов, для NAT правила | +| ext_port_end | int | :x:| Конец диапазона внешних портов, для NAT правила | +| proto | string | :x: | Протокол для NAT. tcp или udp | Пользователь облачной платформы, от лица которого происходит обращение к данной функции, должен иметь доступ к указанной учётной записи ("account") и/или ресурсной группе. В противном случае возникнет ошибка доступа. -Пользователь облачной платформы задается на стадии инициализации Terraform провайдера DECORT (см. [подробности](https://github.com/rudecs/terraform-provider-decort/wiki/03.-%D0%9E%D0%B1%D0%B7%D0%BE%D1%80-%D0%BE%D0%B1%D0%BB%D0%B0%D1%87%D0%BD%D0%BE%D0%B9-%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D1%8B-DECORT.)). ## Возвращаемые значения В случае успешного выполнения _data source_ функция **decort_vins** возвращает в указанную при вызове переменную следующие значения: | Параметр | Тип | Описание | | --- | --- | --- | +| vnf_dev | []Struct{} [см. ниже](#Описание-структуры-vnf_dev)| VNFDEV | +| \_ckey | string | CKey | | account_id | int | Уникальный идентификатор подписчика-владельца ViNS. | | account_name | string | Имя подписчика ("account"), которому принадлежит ViNS. | -| description | string | Текстовое описание ViNS. | -| ext_ip_addr | string | IP адрес подключения ViNS к внешней сети. Если ViNS не подключен к внешней сети, то данный параметр содержит пустую строку.
Обратите внимание, что из всех ViNS, созданных на уровне одной и той же ресурсной группы, только один может иметь подключение к внешней сети. ViNS, созданные на уровне "account", не могут иметь подключений к внешним сетям. | -| ext_net_id | int | Идентификатор внешней сети, к которой подключен данный ViNS. Признаком подключения ViNS ко внешней сети является ненулевое значение этого параметра.
Обратите внимание, что из всех ViNS, созданных на уровне одной и той же ресурсной группы, только один может иметь подключение к внешней сети. ViNS, созданные на уровне "account", не могут иметь подключений к внешним сетям. | -| id | int | Идентификатор ViNS. | -| ipcidr | string | IP CIDR, присвоенный внутреннему сегменту данного 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 | + +### Описание структуры 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 | Список виртуальных сетей | + +### Описание структуры 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 + +| Параметр | Тип | Описание | +| --- | --- | --- | +| 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) | 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 | []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 + +| Параметр | Тип | Описание | +| --- | --- | --- | +| 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)| Первичная информация | + +### Описание структуры 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_net_id | int | ID внешней сети | +| ext_net_ip | string | IP внешней сети | +| 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 | Имя виртуальной машины | ## Пример использования @@ -38,15 +305,134 @@ _Resource_ функция **decort_vins** принимает следующие ```terraform resource "decort_vins" "my_vins" { - name = "Vins01" # this is the name of the ViNS to create - rg_id = 500 # this is the ID of the resource group, where ViNS is created - account_id = 100 # this is the ID of the account, where the resource group is located and ViNS is created - ext_net_id = 0 # no connection to external network for this 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" + + #опциональный параметр + #ручное подключение и отключение ресурса + #тип - булев тип + enable = 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 } -# Once the above directive completes, ViNS ID will be accessible as -# decort_vins.my_vins.id ``` -Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий [раздел](https://github.com/rudecs/terraform-provider-decort/wiki/05.-%D0%98%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-Terraform-%D0%BF%D1%80%D0%BE%D0%B2%D0%B0%D0%B9%D0%B4%D0%B5%D1%80%D0%B0-DECORT.) и [пример](https://github.com/rudecs/terraform-provider-decort/wiki/02.-%D0%9A%D0%BE%D1%80%D0%BE%D1%87%D0%B5,-%D0%A1%D0%BA%D0%BB%D0%B8%D1%84%D0%BE%D1%81%D0%BE%D1%84%D1%81%D0%BA%D0%B8%D0%B9!)). -После успешного завершения такого вызова **decort_vins** в переменной `data.decort_vins.my_vins` будут сохранены возвращаемые значения. В частности, для получения идентификатора ViNS следует использовать конструкцию `data.decort_vins.my_vins.id` \ No newline at end of file +После успешного завершения такого вызова **decort_vins** в переменной `data.decort_vins.my_vins` будут сохранены возвращаемые значения. В частности, для получения идентификатора ViNS следует использовать конструкцию `data.decort_vins.my_vins.id`