_Resource_ функция **dynamix_bservice_group** служит для управления группой базового (basic service). Базовый сервис служит шаблоном для создания вычислительных мощностей (computes) по заданным правилам. Все вычислительные мощности объединяются в вычислительные группы, с помощью которых мощностями можно управлять. ### Работа с cloud_init Cloud Init позволяет запустить ВМ с предустановленными настройками пользователя, группами и доступами. Подробнее про настройку 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 ``` 3. Указать путь до файла `initconfig.tftpl` в качестве значения параметра `cloud_init` в ресурсе `dynamix_bservice`: ```terraform resource "dynamix_bservice" "service1" { # ... cloud_init = file("initconfig.tftpl") # ... } ``` 4. Выполнить `terraform apply` **Конфигурация cloud_init применяется только при создании компьюта, во всех остальных случаях - игнорируется** ## Аргументы После создания ресурса, необходимо **обязательно** в файле .tf, в котором описана группа, заполнить поле compgroup_id, чтобы продолжить работу с группами. _Resource_ функция **dynamix_bservice_group** принимает следующие аргументы: | Аргумент | Тип | Обязательный | Описание | | --- | --- | :---: | --- | | service_id | int | :heavy_check_mark: | ID сервиса, на базе которого будет создана группа
Используется при создании | | compgroup_name | string | :heavy_check_mark: | Название вычислительной группы
Используется при создании и редактировании | | comp_count | int | :heavy_check_mark: | Кол-во мощностей в группе
Используется при создании и редактировании
При редактировании используется вместе с полем mode | | cpu | int | :heavy_check_mark: | Кол-во используемых ядер в каждой мощности
Используется при создании и редактировании | | ram | int | :heavy_check_mark: | Размер RAM, МБ, каждой мощности
Используется при создании и редактировании | | disk | int | :heavy_check_mark: | Размер диска, ГБ, каждой мощности
Используется при создании и редактировании | | image_id | int | :heavy_check_mark: | ID образа каждой мощности
Используется при создании | | driver | string | :heavy_check_mark: | Драйвер
Используется при создании | | sep_id | int | :x: | ID storage endpoint provider | | sep_pool | string | :x: | Название SEP pool'а | | cloud_init | string | :x: | Используется на этапе создания вм.
Параметры для утилиты _cloud_init_, которая используется в платформе DYNAMIX для первичного конфигурирования виртуальной машины после её создания. | role | string | :x: | Роль(тег) группы
Используется при создании и редактировании | | timeout_start | int | :x: | Таймаут начала работы групп
Используется при создании | | vinses | []int | :x: | Список ID виртуальных сетей
Используется либо vinses, либо extnets
Используется при создании и редактировании | | extnets | []int | :x: | Список ID внешних сетей
Используется либо vinses, либо extnets
Используется при создании и редактировании | | start | bool | :x: | Флаг запуска групп
Используется при редактировании
По-умолчанию: false | | force_stop | bool | :x: | Флаг принудительной остановки групп
Используется при редактировании
Используется вместе с флагом start | | mode | string | :x: | Режим изменения числа групп
Используется при редактировании
Возможные значения: RELATIVE и ABSOLUTE | | force_update | bool | :x: | Флаг принудительного обновления мощностей
Используется при редактировании
Используется при изменении полей: ram, disk, compgroup_name, cpu, role | | remove_computes | []int | :x: | Список id вычислительных мощностей для удаления
Используется при редактировании | | parents | []int | :x: | Список ID групп-родителей
Используется при редактировании | | compgroup_id | id | :x: | ID вычислительной группы
Поле является **обязательным** при редактировании группы
Так же применяется для формирования .tfstate - файла, при наличии группы в платформе | ## Возвращаемые значения В случае успешного выполнения _data source_ функция **dynamix_bservice_group** возвращает в указанную при вызове переменную элемент, который состоит из следующих параметров: | Параметр | Тип | Описание | | --- | --- | --- | | account_id | int | ID аккаунта | | account_name | string | Название аккаунта | | computes | []Struct{
id int
ip_addresses []string
name string
os_users []Struct{
login string
password string
}
} | Вычислительные мощности
ID вычислительной мощности
Список IP-адресов
Название вычислительной мощности
Пользователи системы
Логин пользователя
Пароль пользователя
 
 
| | compgroup_id | int | ID вычислительной группы | | compgroup_name | string | Название вычислительной группы | | consistency | bool | Флаг, последовательность | | cpu | int | Кол-во ядер | | created_by | string | Кем создан сервис | | created_time | int | Время создания сервиса | | deleted_by | string | Кем удален сервис | | deleted_time | int | Время удаления сервиса | | disk | int | Кол-во используемого места на дисках, ГБ | | driver | string | Используемый драйвер | | extnets | []int | Список ID внешних сетей | | gid | int | Grid id | | guid | int | Внутренний ID группы | | image_id | int | ID образа, который используется в вычислительной группе | | milestones | int | Вехи | | service_id | int | ID сервиса | | parents | []int | Список родительских групп | | ram | int | Кол-во RAM, МБ | | rg_id | int | ID ресурсной группы | | rg_name | string | Название ресурсной группы | | role | string | Роль(тег) группы | | sep_id | int | ID sep | | seq_no | int | Номер последовательности | | status | string | Статус сервиса | | tech_status | string | Технический статус сервиса | | timeout_start | int | Таймаут перед стартом | | updated_by | string | Кем сервис был обновлен | | updated_time | int | Время последнего обновления | | vinses | []int | Список ID виртуальных сетей | ## Пример использования Пример вызова _resource_ функции **dynamix_bservice**: ```terraform resource "dynamix_bservice_group" "bsg" { #id basic service #обязательный параметр #тип - целое число service_id = 444444 #название группы #обязательный параметр #тип - строка compgroup_name = "tf_group_rename" #id группы #необязательный параметр #тип - целое число #применяется при редактировании группы, либо при создании .tfstate - файла, если группа имеется в плафторме compgroup_id = 33333 #кол-во вычислительных ресурсов #обязательный параметр #тип - целое число #используется так же для редактирования группы comp_count = 1 #кол-во ядер на выч. ресурс #обязательный параметр #тип - целое число #используется так же для редактирования группы cpu = 2 #кол-во оперативной памяти на выч. ресурс, в МБ #обязательный параметр #тип - целое число #используется так же для редактирования группы ram = 256 #размер диска для выч. ресурса, в ГБ #обязательный параметр #тип - целое число #используется так же для редактирования группы disk = 11 #id образа диска #обязательный параметр #тип - целое число image_id = 2222 #драйвер #обязательный параметр #тип - строка driver = "kvm_x86" #id Storage endpoint provider #необязательный параметр #тип - целое число sep_id = 3 #Наименование SEPPool используется если установлен sepId, также может быть пустым #необязательный параметр #тип - строка sep_pool = "name" #тег группы #необязательный параметр #тип - строка #используется при создании и редактировании ресурса role = "tf_test_changed" #id сетей extnet #необязательный параметр #тип - массив целых чисел #должен быть использован vins или extnets extnets = [1111, 2222] #id сетей vinses #необязательный параметр #тип - массив целых чисел #должен быть использован vins или extnets vinses = [1111, 2222] #время таймуата перед стартом #необязательный параметр #тип - целое число #используется при создании ресурса timeout_start = 0 #Перечень аргументов для cloud-init создаваемым группам узлов Worker #необязательный параметр #тип - файл в формате YAML cloud_init = file("initconfig.tftpl") #id групп родителей #необязательный параметр #тип - массив целых чисел #используется при редактировании ресурса #parents = [2222] #принудительное обновление параметров выч. мощностей (ram,disk,cpu) и имени группы #необязательный параметр #тип - булев #используется при редактировании ресурса #по-умолчанию - false #force_update = true #старт/стоп вычислительных мощностей #необязательный параметр #тип - булев #используется при редактировании ресурса #по-умолчанию - false #start = false #принудительная остановка вычислительных мощностей #необязательный параметр #тип - булев #используется при редактировании и остановке группы #по-умолчанию - false #force_stop = false #удаление вычислительных мощностей #необязательный параметр #тип - массив целых чисел #используется при редактировании #remove_computes = [32287] #режим увеличения числа выч. мощностей #необязательный параметр #тип - строка #используется в связке с comp_count при редактировании группы #возможные варианты - RELATIVE и ABSOLUTE #по-умолчанию - "RELATIVE" #mode = "RELATIVE" } ``` Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.0/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)). После успешного завершения такого вызова **dynamix_bservice_group** в переменной `dynamix_bservice_group.bsg` будут сохранены возвращаемые значения.