You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
terraform-provider-dynamix/wiki/1.0.0/07.01.13-Resource_dynamix_b...

253 lines
15 KiB

7 months ago
_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/>&nbsp;<br/>&nbsp;<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.0.0/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_bservice_group** в переменной `dynamix_bservice_group.bsg` будут сохранены возвращаемые значения.