выполнения сложных или специфических настроек ОС гостевой ВМ могут быть использованы пользовательские скрипты, позволяющие автоматизировать процессы.
Запуск скриптов через
Для ВМ на ОС 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
Данный вариант скрипта проверяет наличие файла-флага. В случае его обнаружения, скрипт прекращает работу. В противном случае, скрипт выполняется до конца и создает файл-флаг.
Такой вариант скриптов позволяет использовать дополнительные возможности контекстуализации и автоматического развертывания ВМ.