Create resource decort_sep_config page

stSolo
2022-05-04 20:48:15 +03:00
parent 252bb10197
commit 9c817fb662

@@ -0,0 +1,415 @@
Функция доступна в провайдере версии 2.2 и выше.
**Внимание:** необходимы права администратора.
_Resource_ функция **decort_sep_config** служит для управления конфигурацией storage endpoint. Storage endpoint (sep) - точка доступа к хранилищу данных. Sep бывает четырех типов:
- des
- hitachi
- dorado
- tatlin
Каждый тип отличается возможной конфигурацией.
_Resource_ функция **decort_sep_config** позволяет добавлять, редактировать конфигурацию sep. Обо всех доступных полях конфигурации для каждого типа storage endpoint см. ниже.
## Аргументы
_Resource_ функция **decort_sep_config** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| sep_id | int | :heavy_check_mark: | sep id |
| config | json string | :x: | Конфигурация sep. Не использовать вместе с field_edit |
| field_edit | Struct{<br/>field_name string<br/>field_value string<br/>field_type string<br/>} | :x: | Редактирование/добавление поля, используется при редактировании sep<br/>&nbsp;<br/>Наименование поля<br/>&nbsp;<br/>Значение поля<br/>&nbsp;<br/>Тип поля. Возможные значения: str, int, dict, list, bool<br/> &nbsp;<br/> Не использовать вместе с config |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **decort_sep** возвращает в указанную при вызове переменную элемент, который состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| sep_id | int | id storage |
| config | json string | Конфигурация sep |
| field_edit | Struct{<br/>field_name string<br/>field_value string<br/>field_type string<br/>} | Редактирование/добавление поля, используется при редактировании sep<br/>&nbsp;<br/>Наименование поля<br/>&nbsp;<br/>Значение поля<br/>&nbsp;<br/>Тип поля. Возможные значения: str, int, dict, list, bool<br/> &nbsp;<br/> &nbsp; |
## Пример использования
Пример вызова _resource_ функции **decort_sep_config**:
```terraform
resource "decort_sep_config" "sc" {
sep_id = 1111
#config = file("./config.json")
#внимание, во избежание конфликтов не использовать с полем config
/*
field_edit {
field_name = "edgeuser_password"
field_value = "mosk"
field_type = "str"
}
*/
}
# once the above directive completes, sep will be accessible
# as decort_sep_config.sc
# and config will be accessible
# as decort_sep_config.sc.config
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий [раздел](https://github.com/rudecs/terraform-provider-decort/wiki/05.-%D0%98%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-Terraform-%D0%BF%D1%80%D0%BE%D0%B2%D0%B0%D0%B9%D0%B4%D0%B5%D1%80%D0%B0-DECORT.)).
После успешного завершения такого вызова **decort_sep_config** в переменной `decort_sep_config.sc` будут сохранены возвращаемые значения.
Чтобы получить доступ к конфигурации и сохранить ее в файл .json, необходимо:
1. определить в .tf - файле дополнительный output с любым именем, в который запишется информация о конфигурации sep и обернуть ее в вызов функции jsondecode для декодирования информации.
```terraform
output "sep_config" {
value = jsondecode(decort_sep_config.sc.config)
}
```
2. Применить изменения в терраформе.
```bash
terraform apply
```
3. Сохранить данные из output в .json - файл.
```bash
terraform output -json sep_config >> config.json
```
В общем случае это будет выглядеть как указано ниже.
```bash
terraform output -json <output-name> >> <file-name>.json
```
## Примеры возможных конфигураций для разных типов sep
Поля в разных версиях decort могут отличаться.
Конфигурация перед отправкой проходит валидацию.
### des
| Поле | Тип | Описание |
| --- | --- | --- |
| API_IPs | []string | Список ip адресов для api |
| protocol | string | Протокол сообщения с sep |
| decs3o_app_secret | string | Секретный ключ decs3o |
| format | string | Формат передачи данных
| edgeuser_password | string | Пароль пользователя |
| edgeuser_name | string | Имя пользователя |
| decs3o_app_id | string | APP ID, полученный в decs3o |
| transport | string | Транспортный протокол |
```json
{
"API_IPs": [
"11.111.1.11",
"11.111.1.12",
"11.111.1.13",
"11.111.1.14"
],
"protocol": "des",
"decs3o_app_secret": "",
"format": "raw",
"edgeuser_password": "somepassword",
"housekeeping_settings": {
"disk_del_queue": {
"purgatory_id": 1
}
},
"edgeuser_name": "someusername",
"decs3o_app_id": "",
"ovs_settings": {},
"pools": [
{
"types": [
"D"
],
"referenceId": "somerefid",
"name": "poolname2",
"pagecache_ratio": 100,
"uris": [
{
"ip": "11.111.1.11",
"port": 11
},
{
"ip": "11.111.1.12",
"port": 11
},
{
"ip": "11.111.1.13",
"port": 11
},
{
"ip": "11.111.1.14",
"port": 11
}
]
},
{
"types": [
"D"
],
"referenceId": "somerefid2",
"name": "poolname1",
"pagecache_ratio": 100,
"uris": [
{
"ip": "11.111.1.11",
"port": 12
},
{
"ip": "11.111.1.12",
"port": 12
},
{
"ip": "11.111.1.13",
"port": 12
},
{
"ip": "11.111.1.14",
"port": 12
}
]
},
{
"types": [
"B"
],
"referenceId": "somerefid3",
"name": "myname",
"pagecache_ratio": 100,
"uris": [
{
"ip": "11.111.1.11",
"port": 13
},
{
"ip": "11.111.1.12",
"port": 13
},
{
"ip": "11.111.1.13",
"port": 13
},
{
"ip": "11.111.1.14",
"port": 13
}
]
}
],
"transport": "tcp"
}
```
### hitachi
| Поле | Тип | Описание |
| --- | --- | --- |
| API_URLs | []string | Список адресов для api |
| SN | string | Серийный номер |
| format | string | Формат передачи данных |
| disk_max_size | int | Максимальный размер диска |
| mgmt_password | string | Пароль пользователя |
| mgmt_user | string | Имя пользователя |
| model | string | Модель |
| name_prefix | string | Префикс в имени |
| protocol | string | Протокол сообщения |
| ssl_verify | bool | Проверка ssl |
```json
{
"API_URLs": [
"https://11.11.111.11:11",
"https://11.11.111.12:11"
],
"SN": 1111,
"disk_max_size": 111,
"format": "raw",
"hostGroupNumMax": 1,
"hostGroupNumMin": 1,
"hostGroupNumber": 1,
"housekeeping_settings": {
"disk_del_queue": {
"purge_attempts_threshold": 20
}
},
"mgmt_password": "pwd",
"mgmt_user": "username",
"model": "model",
"name_prefix": "my-prefix-",
"pools": [
{
"clone_technology": "snapshot",
"id": 1,
"maxLdevId": 1111,
"minLdevId": 111,
"name": "my-prefix-01",
"snapshot_pool_id": 1,
"snapshotable": true,
"types": [
"D",
"B",
"ANY"
],
"usage_limit": 999999999
},
{
"clone_technology": "snapshot",
"id": 2,
"maxLdevId": 1111,
"minLdevId": 111,
"name": "my-prefix-92-snap",
"snapshot_pool_id": 1,
"snapshotable": true,
"types": [],
"usage_limit": 111
}
],
"ports": [
"port-name-1",
"port-name-2"
],
"protocol": "scsi",
"ssl_verify": false
}
```
### dorado
| Поле | Тип | Описание |
| --- | --- | --- |
| API_URLs | []string | Список адресов для api |
| edgeuser_password | string | Пароль пользователя |
| edgeuser_name | string | Имя пользователя |
| format | string | Формат передачи данных |
| disk_max_size | int | Максимальный размер диска |
| mgmt_password | string | Пароль пользователя |
| mgmt_user | string | Имя пользователя |
| model | string | Модель |
| name_prefix | string | Префикс в имени |
| protocol | string | Протокол сообщения |
```json
{
"API_URLs": [
"https://111.11.111.111:11/"
],
"disk_max_size": 111,
"edgeuser_name": "username",
"edgeuser_password": "pwd",
"format": "raw",
"groups": {
"hostgroup": [
"hostname",
"1"
],
"lungroup": [
"hostname_lungroup",
"2"
],
"portgroup": [
"hostname_portgroup",
"3"
]
},
"hostGroupName": "hostname",
"housekeeping_settings": {
"disk_del_queue": {
"purge_attempts_threshold": 20
}
},
"mgmt_password": "pwd2",
"mgmt_user": "username2",
"model": "Dorado",
"name_prefix": "my-prefix-",
"pools": [
{
"name": "pool1",
"types": [
"D",
"B",
"ANY"
],
"usage_limit": 111111
}
],
"ports": [
{
"ip": "11.111.1.111",
"name": "port1"
},
{
"ip": "11.111.1.112",
"name": "port2"
},
{
"ip": "11.111.1.113",
"name": "myport3"
}
],
"protocol": "iscsi"
}
```
### tatlin
| Поле | Тип | Описание |
| --- | --- | --- |
| API_URLs | []string | Список адресов для api |
| edgeuser_password | string | Пароль пользователя |
| edgeuser_name | string | Имя пользователя |
| format | string | Формат передачи данных |
| disk_max_size | int | Максимальный размер диска |
| mgmt_password | string | Пароль пользователя |
| mgmt_user | string | Имя пользователя |
| model | string | Модель |
| name_prefix | string | Префикс в имени |
| protocol | string | Протокол сообщения |
```json
{
"API_URLs": [
"ssh://111.11.11.11:43"
],
"disk_max_size": 1111,
"edgeuser_name": "usrname",
"edgeuser_password": "pwd",
"format": "raw",
"hostGroupName": "mygroupname",
"housekeeping_settings": {
"disk_del_queue": {
"purge_attempts_threshold": 20
}
},
"mgmt_password": "pwd2",
"mgmt_user": "usrname",
"model": "Tatlin",
"name_prefix": "my-prefix-",
"pools": [
{
"name": "pool-name",
"types": [
"D",
"B"
],
"usage_limit": 11111
}
],
"ports": [
{
"ips": [
"111.11.111.113",
"111.11.111.114"
],
"iqn": "some_iqn_string",
"name": "myportname"
},
{
"ips": [
"111.11.111.113",
"111.11.111.114"
],
"iqn": "myiqnstring",
"name": "myportname"
}
],
"protocol": "iscsi",
"techDisk": {
"name": "mydiskname",
"pool": "pool-name",
"size": 1,
"wwid": "wwidstring"
}
}
```