|
|
_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 сервиса, на базе которого будет создана группа<br/>Используется при создании |
|
|
|
| compgroup_name | string | :heavy_check_mark: | Название вычислительной группы<br/>Используется при создании и редактировании |
|
|
|
| comp_count | int | :heavy_check_mark: | Кол-во мощностей в группе<br/>Используется при создании и редактировании<br/>При редактировании используется вместе с полем mode |
|
|
|
| cpu | int | :heavy_check_mark: | Кол-во используемых ядер в каждой мощности<br/>Используется при создании и редактировании |
|
|
|
| ram | int | :heavy_check_mark: | Размер RAM, МБ, каждой мощности<br/>Используется при создании и редактировании |
|
|
|
| disk | int | :heavy_check_mark: | Размер диска, ГБ, каждой мощности<br/>Используется при создании и редактировании |
|
|
|
| image_id | int | :heavy_check_mark: | ID образа каждой мощности<br/>Используется при создании |
|
|
|
| driver | string | :heavy_check_mark: | Драйвер<br/>Используется при создании |
|
|
|
| sep_id | int | :x: | ID storage endpoint provider |
|
|
|
| sep_pool | string | :x: | Название SEP pool'а |
|
|
|
| cloud_init | string | :x: | Используется на этапе создания вм.<br/>Параметры для утилиты _cloud_init_, которая используется в платформе DYNAMIX для первичного конфигурирования виртуальной машины после её создания.
|
|
|
| role | string | :x: | Роль(тег) группы<br/>Используется при создании и редактировании |
|
|
|
| timeout_start | int | :x: | Таймаут начала работы групп<br/>Используется при создании |
|
|
|
| vinses | []int | :x: | Список ID виртуальных сетей<br/>Используется либо vinses, либо extnets<br/>Используется при создании и редактировании |
|
|
|
| extnets | []int | :x: | Список ID внешних сетей<br/>Используется либо vinses, либо extnets<br/>Используется при создании и редактировании |
|
|
|
| start | bool | :x: | Флаг запуска групп<br/>Используется при редактировании<br/>По-умолчанию: false |
|
|
|
| force_stop | bool | :x: | Флаг принудительной остановки групп<br/>Используется при редактировании<br/>Используется вместе с флагом start |
|
|
|
| mode | string | :x: | Режим изменения числа групп<br/>Используется при редактировании<br/>Возможные значения: RELATIVE и ABSOLUTE |
|
|
|
| force_update | bool | :x: | Флаг принудительного обновления мощностей<br/>Используется при редактировании<br/>Используется при изменении полей: ram, disk, compgroup_name, cpu, role |
|
|
|
| remove_computes | []int | :x: | Список id вычислительных мощностей для удаления<br/>Используется при редактировании |
|
|
|
| parents | []int | :x: | Список ID групп-родителей<br/>Используется при редактировании |
|
|
|
| compgroup_id | id | :x: | ID вычислительной группы<br/>Поле является **обязательным** при редактировании группы<br/>Так же применяется для формирования .tfstate - файла, при наличии группы в платформе |
|
|
|
|
|
|
## Возвращаемые значения
|
|
|
В случае успешного выполнения _data source_ функция **dynamix_bservice_group** возвращает в указанную при вызове переменную элемент, который состоит из следующих параметров:
|
|
|
|
|
|
| Параметр | Тип | Описание |
|
|
|
| --- | --- | --- |
|
|
|
| account_id | int | ID аккаунта |
|
|
|
| account_name | string | Название аккаунта |
|
|
|
| computes | []Struct{<br/>id int<br/>ip_addresses []string<br/>name string<br/>os_users []Struct{<br/>login string<br/>password string<br/>} <br/>} | Вычислительные мощности<br/>ID вычислительной мощности<br/>Список IP-адресов<br/>Название вычислительной мощности<br/>Пользователи системы<br/>Логин пользователя<br/>Пароль пользователя<br/> <br/> <br/> |
|
|
|
| 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` будут сохранены возвращаемые значения.
|