_Resource_ функция **dynamix_k8s_wg** служит для управления worker groups (рабочики группами, wg) кластера. ### Работа с cloud_init Доступно в версии провайдера 4.4.1 и выше. Cloud Init позволяет запустить ноды worker группы с предустановленными настройками. Подробнее про настройку cloud_init можно прочесть по [ссылке](https://cloudinit.readthedocs.io/en/latest/reference/examples.html). **Пароли, указанные в cloud_init не сохраняются на платформе и не отображаются в API!** Для использования cloud_init конфигурации, следует: 1. Создать файл с расширением `.tftpl` в рабочей директории. 2. Описать в созданном файле конфигурацию cloud_init в формате YAML: #### initconfig.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 runcmd: - echo 12345 > /home/user/test ``` 3. Указать путь до файла `initconfig.tftpl` в качестве значения параметра `cloud_init` в ресурсе `dynamix_k8s_wg`: ```terraform resource "dynamix_k8s_wg" "wg1" { # ... cloud_init = file("initconfig.tftpl") # ... } ``` 4. Выполнить `terraform apply` ## Импортирование ресурса Так как ресурс k8s_wg является подресурсом k8s, то для его импорта необходимо указать ID кластера, а так же само имя ресурса. Общая схема: ```terraform terraform import dynamix_k8s_wg. # ``` Пример: ``` terraform import dynamix_k8s_wg.wg 777#888 ``` ## Ограничение на наименование ресурса Ресурс не должен содержать в названии символ `#` ## Работа в параллельном режиме Рекомендуется создавать одновременно не более одного экземпляра ресурса. В случае необходимости создания нескольких ресурсов одновременно, необходимо запускать `terraform apply/plan` в режиме `-parallelism=1`. ## Аргументы _Resource_ функция **dynamix_k8s_wg** для создания worker group принимает следующие аргументы: | Аргумент | Тип | Обязательный | Описание | | --- | --- | --- | --- | | k8s_id | int | :heavy_check_mark: | ID экземпляра k8s | | name | string | :heavy_check_mark: | Наименование worker group | | num | int | :x: | Количество worker node для создания
по - умолчанию - 1 | | cpu | int | :x: | Количество cpu для 1 worker node
по - умолчанию - 1 | | ram | int | :x: | Количество RAM для одной worker node в Мбайтах,
по-умолчанию - 1024 | | disk | int | :x: | Размер загрузочного диска для worker node, в Гбайтах
по - умолчанию - 0
если установлен параметр 0, то размер диска будет равен размеру образа | | labels | []string | :x: | Список lables | | annotations | []string | :x: | Список annotations | | taints | []string | :x: | Список taints | | worker_sep_id | int | :x: | ID SEP'а для создания загрузочных дисков для группы worker node по умолчанию, если не указан, используется sep_id образа | | worker_sep_pool | string | :x: | Pool для использования, если установлен worker_sep_id, если не указан, выбиравется системой | | cloud_init | file | :x: | Используется на этапе создания нод worker группы.
Параметры для утилиты _cloud_init_, которая используется в платформе DYNAMIX для первичного конфигурирования нод worker группы | ## Возвращаемые значения В случае успешного выполнения _resource_ функция **dynamix_k8s_wg** возвращает в указанную при вызове переменную следующие значения: | Параметр | Тип | Описание | | --- | --- | --- | | wg_id | int | ID группы воркеров | | detailed_info | []Struct{} [см. ниже](#описание-структуры-detailed_info) | Детальная информация о группе воркеров | | labels | []string | Лейблы группы воркеров | | guid | int | ID ресурса | | annotations | []string | Аннотации группы воркеров | | taints | []string | Ограничения для группы воркеров | ### Описание структуры detailed_info | Параметр | Тип | Описание | | --- | --- | --- | | compute_id | int | ID компьюта, входящего в группу воркеров | | name | string | Имя компьюта | | status | string | Статус компьюта | | tech_status | string | Технический статус | | interfaces | []Struct{} [см. ниже](#описание-структуры-interfaces) | Информация о интерфейсах компьюта | | natable_vins_ip | string | IP виртуальной сети | | natable_vins_network | string | Сеть vins | ### Описание структуры interfaces | Параметр | Тип | Описание | | --- | --- | --- | | def_gw | string | Шлюз по умолчанию | | ip_address | string | IP адрес компьюта | ## Пример использования Пример вызова _resource_ функции **dynamix_k8s_wg**: ```terraform resource "dynamix_k8s_wg" "wg" { #id экземпляра k8s #обязательный параметр #тип - целое число k8s_id = 1234 #имя worker group #обязательный параметр #тип - строка name = "workers-2" #количество worker node для создания #опциональный параметр #тип - целое число #по - умолчанию - 1 num = 2 #количество cpu для 1 worker node #опциональный параметр #тип - целое число #по - умолчанию - 1 cpu = 1 #количество RAM для одной worker node в Мбайтах #опциональный параметр #тип - целое число #по-умолчанию - 1024 ram = 1024 #размер загрузочного диска для worker node, в Гбайтах #опциональный параметр #тип - целое число #по - умолчанию - 0 #если установлен параметр 0, то размер диска будет равен размеру образа disk = 10 #Перечень аргументов для cloud-init для виртуальных машин worker групп #опциональный параметр #тип - файл с форматом в виде yaml #используется при создании и обновлении ресурса cloud_init = file("initconfig.tftpl") } ``` После успешного завершения такого вызова **dynamix_k8s_wg** в переменной `dynamix_k8s_wg.wg` будут сохранены возвращаемые значения.В частности, для получения идентификатора k8s_wg следует использовать конструкцию `dynamix_k8s_wg.wg.id`