_Resource_ функция **dynamix_k8s_wg** служит для управления worker groups (рабочики группами, wg) кластера. ### Работа с cloud_init 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 | | chipset | string | :x: | Тип эмулируемой системы для добавляемых vm worker группы | | 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: | Параметры для утилиты _cloud_init_, которая используется на платформе DYNAMIX для первичного конфигурирования нод worker группы | ## Возвращаемые значения В случае успешного выполнения _resource_ функция **dynamix_k8s_wg** возвращает в указанную при вызове переменную следующие значения: | Параметр | Тип | Описание | | --- | --- | --- | | annotations | []string | Аннотации группы воркеров | | chipset | string | Тип эмулируемой системы для добавляемых vm worker группы | | cloud_init | file | Параметры для утилиты _cloud_init_, которая используется на платформе DYNAMIX для первичного конфигурирования нод worker группы | | cpu | int | Количество cpu для 1 worker node
по - умолчанию - 1 | | detailed_info | []Struct{} [см. ниже](#описание-структуры-detailed_info) | Детальная информация о группе воркеров | | disk | int | Размер загрузочного диска для worker node, в Гб | | guid | int | ID платформы | | id | string | ID ресурса | | k8s_id | int | ID экземпляра k8s | | labels | []string | Лейблы группы воркеров | | name | string | Наименование worker group | | num | int | Количество worker node для создания | | ram | int | Количество RAM для одной worker node в Мбайтах,
по-умолчанию - 1024 | | taints | []string | Ограничения для группы воркеров | | wg_id | int | ID группы воркеров | | worker_sep_id | int | ID SEP'а для создания загрузочных дисков для группы worker node | | worker_sep_pool | string | Pool для использования | ### Описание структуры 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 #тип эмулируемой системы #опциональный параметр #тип - строка #используется при создании #chipset = "i440fx" #количество 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") } ``` После успешного завершения такого вызова **dynamix_k8s_wg** в переменной `dynamix_k8s_wg.wg` будут сохранены возвращаемые значения.В частности, для получения идентификатора k8s_wg следует использовать конструкцию `dynamix_k8s_wg.wg.id`