Create resource decort_sep page
450
07.12-Resource-функция-decort_sep-управление-sep..md
Normal file
450
07.12-Resource-функция-decort_sep-управление-sep..md
Normal file
@@ -0,0 +1,450 @@
|
|||||||
|
Функция доступна в провайдере версии 2.2 и выше.
|
||||||
|
|
||||||
|
**Внимание:** необходимы права администратора.
|
||||||
|
|
||||||
|
_Resource_ функция **decort_sep** служит для управления storage endpoint. Storage endpoint (sep) - точка доступа к хранилищу данных. Sep бывает четырех типов:
|
||||||
|
- des
|
||||||
|
- hitachi
|
||||||
|
- dorado
|
||||||
|
- tatlin
|
||||||
|
|
||||||
|
Каждый тип отличается возможной конфигурацией.
|
||||||
|
_Resource_ функция **decort_sep** позволяет создавать, редактировать, удалять sep. Кроме этого, с помощью этой функции можно добавлять, редактировать конфигурацию sep. Обо всех доступных полях конфигурации для каждого типа storage endpoint см. ниже.
|
||||||
|
|
||||||
|
## Аргументы
|
||||||
|
_Resource_ функция **decort_sep** принимает следующие аргументы:
|
||||||
|
|
||||||
|
| Аргумент | Тип | Обязательный | Описание |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| gid | int | :heavy_check_mark: | Grid id |
|
||||||
|
| name | string | :heavy_check_mark: | Наименование sep |
|
||||||
|
| type | string | :heavy_check_mark: | Тип sep.<br/>Возможные значения:<br/>des<br/>hitachi<br/>tatlin<br/>dorado |
|
||||||
|
| desc | string | :x: | Описание sep, используется при создании sep |
|
||||||
|
| config | json string | :x: | Конфигурация sep. Используется при создании и редактировании sep |
|
||||||
|
| enable | bool | :x: | Доступность sep, используется при создании и редактировании sep |
|
||||||
|
| consumed_by | []int | :x: | Используемые nodes, используется при создании и редактировании sep |
|
||||||
|
| provided_by | []int | :x: | Используемые provider nodes, используется при создании и редактировании sep |
|
||||||
|
| upd_capacity_limit | bool | :x: | Обновление предела емкости, используется при редактировании sep |
|
||||||
|
| decommission | bool | :x: | Отвязывание всех зависимостей от sep (отвязывание nodes)<br/>Используется вместе с параметром clear_physically |
|
||||||
|
| clear_physically | bool | :x: | Физическое очищение nodes |
|
||||||
|
| field_edit | Struct{<br/>field_name string<br/>field_value string<br/>field_type string<br/>} | :x: | Редактирование/добавление поля, используется при редактировании sep<br/> <br/>Наименование поля<br/> <br/>Значение поля<br/> <br/>Тип поля. Возможные значения: str, int, dict, list, bool<br/> <br/> |
|
||||||
|
| sep_id | int | :x: | Используется для формирования .tfstate, в случае его удаления и присутствия sep с указанным id в системе |
|
||||||
|
|
||||||
|
|
||||||
|
## Возвращаемые значения
|
||||||
|
В случае успешного выполнения _data source_ функция **decort_sep** возвращает в указанную при вызове переменную элемент, который состоит из следующих параметров:
|
||||||
|
|
||||||
|
| Параметр | Тип | Описание |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| sep_id | int | id storage endpoint |
|
||||||
|
| meta | []string | Мета информация о sep |
|
||||||
|
| consumed_by | []int | Список node id, использующих sep |
|
||||||
|
| desc | string | Описание sep |
|
||||||
|
| gid | int | Grid id, к которому привязан sep |
|
||||||
|
| guid | int | Внутренний id sep |
|
||||||
|
| milestones | int | Вехи |
|
||||||
|
| name | string | Наименование sep |
|
||||||
|
| obj_status | string | Статус sep |
|
||||||
|
| provided_by | []int | Список provider id, использующих sep |
|
||||||
|
| tech_status | string | Технический статус sep |
|
||||||
|
| type | string | Тип sep |
|
||||||
|
| config | json string | Конфигурация sep |
|
||||||
|
| upd_capacity_limit | bool | :x: | Обновление предела емкости, используется при редактировании sep |
|
||||||
|
| decommission | bool | :x: | Отвязывание всех зависимостей от sep (отвязывание nodes)<br/>Используется вместе с параметром clear_physically |
|
||||||
|
| clear_physically | bool | :x: | Физическое очищение nodes |
|
||||||
|
| enable | bool | :x: | Доступность sep, используется при создании и редактировании sep |
|
||||||
|
| field_edit | Struct{<br/>field_name string<br/>field_value string<br/>field_type string<br/>} | :x: | Редактирование/добавление поля, используется при редактировании sep<br/> <br/>Наименование поля<br/> <br/>Значение поля<br/> <br/>Тип поля. Возможные значения: str, int, dict, list, bool<br/> <br/> |
|
||||||
|
|
||||||
|
## Пример использования
|
||||||
|
Пример вызова _data source_ функции **decort_sep**:
|
||||||
|
```terraform
|
||||||
|
resource "decort_sep" "s" {
|
||||||
|
gid = 111
|
||||||
|
name = "test sep"
|
||||||
|
type = "des"
|
||||||
|
|
||||||
|
#desc = "description"
|
||||||
|
#config = file("./config.json")
|
||||||
|
|
||||||
|
#внимание, во избежание конфликтов не использовать с полем config
|
||||||
|
/*
|
||||||
|
field_edit {
|
||||||
|
field_name = "edgeuser_password"
|
||||||
|
field_value = "mosk"
|
||||||
|
field_type = "str"
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#enable = false
|
||||||
|
#consumed_by = [23,21]
|
||||||
|
#upd_capacity_limit = true
|
||||||
|
#provided_by = [16, 14, 15]
|
||||||
|
#decommission = true
|
||||||
|
#clear_physically = false
|
||||||
|
}
|
||||||
|
# once the above directive completes, sep will be accessible
|
||||||
|
# as decort_sep.s
|
||||||
|
|
||||||
|
# and config will be accessible
|
||||||
|
# as decort_sep.s.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** в переменной `decort_sep.s` будут сохранены возвращаемые значения.
|
||||||
|
|
||||||
|
Чтобы получить доступ к конфигурации и сохранить ее в файл .json, необходимо:
|
||||||
|
1. определить в .tf - файле дополнительный output с любым именем, в который запишется информация о конфигурации sep и обернуть ее в вызов функции jsondecode для декодирования информации.
|
||||||
|
```terraform
|
||||||
|
output "sep_config" {
|
||||||
|
value = jsondecode(decort_sep.s.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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user