Функция доступна в провайдере версии 4.5.1 и выше.

_Resource_ функция **decort_cb_k8s_wg** служит для управления worker groups (рабочики группами, wg) кластера.

## Аргументы
_Resource_ функция **decort_cb_k8s_wg** для создания worker group принимает следующие аргументы:

| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| k8s_id | int | :heavy_check_mark: | ID экземпляра k8s |
| name | string | :heavy_check_mark: | Наименование worker group |
| storage_policy_id | int | :heavy_check_mark: | ID политики хранения |
| num | int | :x: | Количество worker node для создания |
| cpu | int | :x: | Количество cpu для 1 worker node<br/>по - умолчанию - 1 |
| ram | int | :x: | Количество RAM для одной worker node в Мбайтах, <br/>по умолчанию - 1024 |
| disk | int | :x: | Размер загрузочного диска для worker node, в Гбайтах<br/>по - умолчанию - 0<br/>если установлен параметр 0, то размер диска будет равен размеру образа |
| cloud_init | string | :x: | Предустановленные настройки группы воркеров кластера Kubernetes (k8s) |
| labels | []string | :x: | Лейблы группы воркеров в формате: ["label1=value1", "label2=value2"] |
| annotations | []string | :x: | Аннотации группы workers в формате: ["key1=value1", "key2=value2"] |
| taints | []string | :x: | Список строк с taints для worker группы, в формате: ["key1=value1:NoSchedule", "key2=value2:NoExecute"] |
| worker_sep_id | int | :x: | ID СХД для создания загрузочных дисков для Worker-групп по умолчанию. Использует sepId образа, если не указан. Значение по умолчанию 0. |
| worker_sep_pool | string | :x: | Пул для хранения Workers. Если не заполнить, будет выбран системой. |

## Возвращаемые значения

В случае успешного выполнения _resource_ функция **decort_cb_k8s_wg** возвращает в указанную при вызове переменную следующие значения:

| Параметр | Тип | Описание |
| --- | --- | --- |
| wg_id | int | ID группы воркеров кластера |
| detailed_info | []Struct{} [см. ниже](#описание-структуры-списка-detailed_info) | Детальная информация о группе |
| k8s_id | int | ID экземпляра k8s |
| name | string | Наименование worker group |
| num | int | Количество worker node для создания |
| cpu | int | Количество cpu для 1 worker node |
| ram | int | Количество RAM для одной worker node в Мбайтах |
| disk | int | Размер загрузочного диска для worker node, в Гбайтах |
| labels | []string | Лейблы ресурса |
| guid | int | ID ресурса |
| annotations | []string | Аннотации ресурса |
| taints | []string | ограничители группы workers |
| storage_policy_id | int | ID политики хранения |

### Описание структуры списка detailed_info

| Параметр | Тип | Описание |
| --- | --- | --- |
| compute_id | int | ID компьюта в составе группы |
| name | string | Имя компьюта в составе группы |
| status | string | Статус компьюта в составе группы |
| tech_status | string | Технический статус компьюта в составе группы |
| interfaces | []Struct{} [см. ниже](#описание-структуры-списка-interfaces) | Список интерфейсов группы |

### Описание структуры списка interfaces

| Параметр | Тип | Описание |
| --- | --- | --- |
| def_gw | string | Шлюз по умолчанию |
| ip_address | string | IP интерфейса |

## Пример использования
Пример вызова _resource_ функции **decort_cb_k8s_wg**:
```terraform
resource "decort_cb_k8s_wg" "wg" {
  #id экземпляра k8s
  #обязательный параметр
  #это значение должно быть и результат вызова decort_cb_k8s.cluster.k8s_id
  #тип - целое число
  #используется при создании
  k8s_id = 1234

  #имя worker group
  #обязательный параметр
  #тип - строка
  #используется при создании
  name = "workers-2"

  #id политики хранения
  #обязательный параметр
  #тип - целое число
  #используется при создании
  storage_policy_id = 111 

  #количество worker node для создания
  #опциональный параметр
  #тип - целое число
  #по умолчанию - 1
  #используется при создании и обновлении
  #num = 2

  #количество cpu для 1 worker node
  #опциональный параметр
  #тип - целое число
  #по умолчанию - 1
  #используется при создании
  #cpu = 1

  #количество RAM для одной worker node в МБ
  #опциональный параметр
  #тип - целое число
  #по умолчанию - 1024
  #используется при создании
  #ram = 1024

  #размер загрузочного диска для worker node, в ГБ
  #опциональный параметр
  #по умолчанию - 0
  #если установлен параметр 0, то размер диска будет равен размеру образа
  #тип - целое число
  #используется при создании
  #disk = 10

  #список строк с labels для worker группы, в формате: ["label1=value1", "label2=value2"]
  #опциональный параметр
  #тип - массив строк
  #используется при создании
  #labels = ["label1=value1", "label2=value2"]

  #список строк с annotations для worker группы, в формате: ["key1=value1", "key2=value2"]
  #опциональный параметр
  #тип - массив строк
  #используется при создании
  #annotations = ["key1=value1", "key2=value2"]

  #список строк с taints для worker группы, в формате: ["key1=value1:NoSchedule", "key2=value2:NoExecute"]
  #опциональный параметр
  #тип - массив строк
  #используется при создании
  #taints = ["key1=value1", "key2=value2"]

  #id СХД для создания загрузочных дисков для Worker-групп по умолчанию. Использует sepId образа, если не указан.
  #опциональный параметр
  #тип - целое число
  #используется при создании
  #worker_sep_id = 1

  #пул для хранения Workers. Если не заполнить, будет выбран системой
  #опциональный параметр
  #тип - целое число
  #используется при создании
  #worker_sep_pool = "worker_pool"

  #перечень аргументов для cloud-init для виртуальных машин worker групп
  #опциональный параметр
  #тип - файл в формате YAML
  #используется при создании и обновлении
  #cloud_init = file("initconfig.tftpl")

  #тип эмулируемой системы
  #опциональный параметр
  #тип - строка
  #возможные значения: "i440fx", "Q35"
  #по умолчанию - Q35
  #используется при создании
  #chipset = "Q35"

}
```

Пример содержимого файла _initconfig.tftpl_:
```tftpl
---
users:
- groups: users, wheel
  name: user
  plain_text_passwd: examplePassword
  primary_group: user
  ssh_authorized_keys:
  - ssh-rsa EXAMPLE%id_rsa.pub
  sudo: ALL=(ALL) NOPASSWD:ALL
```

Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий [раздел](https://repository.basistech.ru/BASIS/wiki-terraform-provider-decort/src/branch/main/4.11.0/04.02-Инициализация-Terraform-провайдера-DECORT.md)). 
