выполнения сложных или специфических настроек ОС гостевой ВМ могут быть использованы пользовательские скрипты, позволяющие автоматизировать процессы.
Запуск скриптов через
Для ВМ на ОС Windows используются скрипты PowerShell. В ОС Linux может быть использован любой скриптовый язык, если его интерпретатор установлен в базовом образе ОС, и задана соответствующая строка shebang.
Для shell-скриптов shebang не требуется.
ПК СВ поддерживает возможность запуска скриптов после развертывания ВМ, используя механизм контекстуализации. За запуск скриптов отвечают параметры: START_SCRIPT и INIT_SCRIPTS.
INIT_SCRIPTS — используется при запуске более одного скрипта или если имя скрипта не соответствует init.sh. При использовании init_scripts файлы скриптов загружаются в хранилище фронтальной машины и подключаются в настройках шаблона ВМ;
START_SCRIPT — поле контекстуализации, заполняемое при создании шаблона ВМ во вкладке . В отличие T_SCRIPTS, в данное поле вводится текст скрипта, который будет выполнятся при запуске ВМ.
Для хранения скриптов, содержащих конфиденциальную информацию, может быть использован параметр START_SCRIPT_BASE64. Этот параметр позволяет шифровать скрипты в кодировке base64. Расшифровка скрипта производится в момент записи временного файла при запуске ВМ.
Пример установки пакета ntpdate и настройки времени, с использованием bash-скрипта:
CONTEXT = [
START_SCRIPT = "#!/bin/bash
yum update
yum install -y ntpdate
ntpdate 0.pool.ntp.org"
]
CODE
Разовый запуск скрипта после развертывания ВМ
В основе механизма запуска скриптов через контекстуализацию лежит система init.d, что приводит к повторному выполнению всех скриптов при каждом запуске ВМ.
Для реализации разового запуска скрипта необходимо использовать механизмы контроля условия запуска. Одним из вариантов контроля является использование .
Пример скрипта с использованием файла-флага:
#/bin/bash
if [ ! -f /home/iurii/test.txt ]; then
date >> /home/iurii/test.txt
touch /home/iurii/test.txt
fi
CODE
Данный вариант скрипта проверяет наличие файла-флага. В случае его обнаружения, скрипт прекращает работу. В противном случае, скрипт выполняется до конца и создает файл-флаг.
Такой вариант скриптов позволяет использовать дополнительные возможности контекстуализации и автоматического развертывания ВМ.