Облачная платформаEvolution

cloudru_evolution_baremetal_attach_disk (Resource)


resource "cloudru_evolution_baremetal_attach_disk" "demo_attach" {
disk_ids = ["00000000-0000-0000-0000-000000000000"]
reserved_server_id = "00000000-0000-0000-0000-000000000000"
}

Schema

Required

  • disk_ids (Set of String) Список идентификаторов дисков, которые необходимо подключить..

  • reserved_server_id (String) Идентификатор арендованного сервера.

0) Как импортировать ресурс подключаемых дисков, чтобы получить информацию о дисках привязанных к серверу?

terraform import cloudru_evolution_baremetal_attach_disk.demo_attach <reserved_server_id>

Таким образом в state запишется информация по все дискам подключенным к серверу. И можно будет уже видеть какие диски подключены, отключать их и подключать другие диски.

1) Как подключить диск к серверу?

resource "cloudru_evolution_baremetal_attach_disk" "demo_attach" {
disk_ids = ["00000000-0000-0000-0000-000000000000"]
reserved_server_id = "00000000-0000-0000-0000-000000000000"
}

В конфигурации нужно указать идентификатор сервера и список дисков, которые нужно подключить.

Выполняем команду

terraform apply

После выполнения команды вы увидите в ui, что диски подключены, но, чтобы подключить диски на сервере, нужно перейти на сервер по ssh и выполнить скрипт подключения диска.

1.1) Получаем скрипт подключения диска

Для получения скрипта можно создать датасорс

data "cloudru_evolution_baremetal_form_attach_disk_script" "demo_attach_script" {
reserved_server_id = "00000000-0000-0000-0000-000000000000"
}
output "demo-attach_script" {
value = data.cloudru_evolution_baremetal_form_attach_disk_script.demo_attach_script.attach_script
}

Выполняем команду

terraform plan

В output видим сгенерированный скрипт. Прежде чем его получить рекомендую сначала зайти на сервер, так как скрипт живет недолго.

На сервере стартуем выполнение команды и после этого можно проверить появились ли новые диски:

lsblk -S

Подробнее в документации от команды baremetal: https://cloud.ru/docs/bare-metal-evolution/ug/topics/guides__ssh-connection?source-platform=Evolution

2) Как отключить диск от сервера

Сначала нужно получить скрипт отключения диска от сервера. Для этого можно создать датасорс для получения скрипта.

data "cloudru_evolution_baremetal_form_detach_disk_script" "demo_detach_script" {
reserved_server_id = "00000000-0000-0000-0000-000000000000"
disk_ids = ["00000000-0000-0000-0000-000000000000"]
}
output "demo-detach_script" {
value = data.cloudru_evolution_baremetal_form_detach_disk_script.demo_detach_script.detach_script
}

Также как и при подключении дисков копируем скрипт и заходим на сервер и выполняем скрипт. После этого можно выполнить команду, чтобы проверить

lsblk -S

Далее уже можно выполнить команду terraform apply, чтобы отключить определенные диски, либо terraform destroy, чтобы отключить все диски.

terraform destroy
# или в случае обновления
terraform apply

3) Отключение одного диска и подключение другого при операции обновления

Предположим, нам нужно отвязать один диск и подклбчить другой. Тогда нужно сделать следующие действия:

  1. Прежде чем выполнять terraform apply нужно получить detach-скрипт для отключения дисков

1.1 Также как и в примере выше используем датасорс для отключения диска для получения скрипта 1.2 Переходим по ssh на сервер и выполняем скрипт

  1. Выполняем terraform apply

1.1 Диски, которые должны отключиться отключаются, те которые должны быть подключены подключаются. 1.2 После того как операция выполнена нужно не забыть выполнить скрипт подключения на сервере. Соответственно используем датасорс для attach-script и выполняем его на сервере.