Self Service виртуальных машин; Изменение виртуальной машины с портала

Продолжаю цикл статей про самообслуживание пользователей. Перед прочтением этой статьи рекомендую ознакомиться с “подготовительными процедурами”.

1. Создание виртуальной машины;

  1. Изменение виртуальной машины;

  2. Удаление виртуальной машины;

4. Создание сервиса из шаблона сервиса.

Итак, я предполагаю что у Вас есть SCSM, Orchestrator, SCOM и VMM, которые настроены, интегрированы и работают.

Если Вы еще не знакомы с Orchestrator, подробнее процесс создания runbook’а, аналогичного данному, описан в другой статье.

Со стороны SCSM Вам нужен только Request Offering опубликованный на портале, создание его аналогично созданию других Request Offering’ов для связки SCSM и Orchestrator, поэтому его я описывать не буду. Перечислю только информацию, которую Вам нужно передать в Orchestrator. Виртуальную машину, подтверждение на возможность немедленной перезагрузки и, по желанию, количество процессоров, количество оперативной памяти, VLAN ID, Сколько ГБ места добавить на жесткий диск (или что угодно что придумает Ваша фантазия).

Со стороны Orchestrator Вам нужен Runbook (удивительно), который выглядит приблизительно вот так

pc-modifyvm-00

Создаем Runbook

1. Initialize Data

Создайте шаг и создайте переменные как на картинке. 😉

pc-modifyvm-01

Обращаю внимание, если Вы хотите чтобы виртуальная машина перезагружалась только после подтверждения (в моем случае, на портале создан запрос на который пользователь может ответить “Да” или “Нет”) Вам необходимо настроить “Link” от шага “Initialize Data” до шага “Get SR”, где переменная “Shall We Restart VM” ровняется “Да”.

В моем runbook’е, при выборе “Нет” запрос передается в другой runbook, который ждет следующего окна обслуживания и только тогда перегружает виртуальную машину. Это костыль. Правильнее сделать запись с VM ID в базу данных и runbook, который будет запускаться по рассписанию и из базы данных брать данные о виртуальных машинах и изменениях, которые необходимо к ним применить.

pc-modifyvm-02

2. Get SR

Этот шаг и далее, до шагов VMM, из SCSM integration pack.

Action: Get Object

Connector: SCSM Connector

Class: Service Request

Filter: “SC Object GUID” equals {SR GUID from “Initialize Data”}

3. Get Relationship SR to VM

Action: Get Relationsship

Connector: SCSM Connector

Object Class: Service Request

Object GUID: {SC Object GUID from “Get SR”}

Related Class: Virtual Machine

4. Get Object - VM

Action: Get Object

Connector: SCSM Connector

Class: Virtual Machine

Filter: “SC Object GUID” equals {Related object GUID from “Get Relationship SR to VM”}

5. Get Relationship - Affected User

Action: Get Relationsship

Connector: SCSM Connector

Object Class: Service Request

Object GUID: {SC Object GUID from “Get SR”}

Related Class: Active Directory User

6. Get Object - Affected User

Action: Get Object

Connector: SCSM Connector

Class: Service Templates

Filter: “SC Object GUID” equals {Related object GUID from “Get Relationship - Affected User”}

7. Get VM

Далее идут шаги VMM

Action: Get VM

Connector: VMM Connector

Filter: VM Name equals {Display Name from “Get Object - VM”}

Filter: Owner equals domain{User Name from “Get Object - Affected User”}

8. Stop VM

Action: Stop VM

Connector: VMM Connector

Filter: VM ID equals {VM ID from “Get VM”}

9. Update VM

Action: Update VM

Connector: VMM Connector

Filter: VM ID equals {VM ID from “Get VM”}

CPU Count: {Processor from “Initialize Data”}

Memory(MB): {RAM from “Initialize Data”}

Внимание, если у виртуальной машины стоит динамическая память, а runbook изменит значение Memory на значение больше чем максимальная память VM перейдет в состояние Failed. Кажется это “By Design”, шаг Update VM не умеет работать с динамической памятью. Workaround - PowerShell.

10. Get Disk

Action: Get Disk

Connector: VMM Connector

Filter: VM ID equals {VM ID from “Get VM”}

11. Update Disk

Action: Update Disk

Connector: VMM Connector

Filter: VM ID equals {Virtual Disk Drive ID from “Get Disk”}

Additional Size: {HDD from “Initialize Data”}

По аналогии Вы можете создать и шаги для изменения свойств адаптера.

Данные шаги не последовательны по причине того, что если шаг “Get Disk” или “Get Network Adapter” вернет 2 значения (или более), все следующие шаги будут повторятся несколько раз (по числу возвращенных объектов).

После этого можно передавать VM ID в Runbook “Launch VM”. Шаг “Launch VM” соответствует уже настроенному шагу “Launch VM” (тут).

Модификация Runbook’а “Launch VM”

Если Вы не читали мы уже создали этот runbook. Пришло время добавить в него шаги для сценария изменения VM.

module-runbooks-00

Содайте линк к событию “Delay 120”, а в линке задайте условие Reserved from Initialize Data does not equals “NewVM”

pc-modifyvm-03

2. Delay 120

Action: Run .Net Script

Type: PowerShell

Script: Sleep 120

Ждем пока VMM произведет изменения с дисками и сетевыми адаптерами виртуальной машины.

3. Start VM

Action: Start VM

Connector: VMM Connector

Filter: {VM ID from “Get VM”}

Written on July 16, 2014