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

Такой подход удобно использовать при предоставлении SaaS-услуг: администратор создаёт виртуальную машину (ВМ), на которой запускает нужный скрипт и по выполнению этого скрипта пользователь получает на email письмо с необходимыми параметрами. Таким образом, клиент получает готовый сервис, которым может сразу пользоваться: ему не нужно ничего самостоятельно устанавливать и запускать.

Настройка шаблонов писем


Шаблон письма — это HTML-код, который отправляется на email пользователя после запуска скрипта.

Шаблоны писем настраиваются при создании скрипта. Для этого:

  1. Перейдите в Скрипты Создать скрипт.
  2. Введите настройки и тело скрипта.
  3. В разделе Уведомление на E-mail нажмите Добавить и настройте шаблоны писем.
    По умолчанию доступна настройка шаблона письма на английском языке — Письмо для EN. Для создания шаблона письма на русском нажмите Добавить письмо для RU.
  4. Укажите Тему письма для каждого шаблона.
  5. Настройте свой шаблон в поле Контент.
    По умолчанию в этом поле указаны HTML-блоки, которые вы можете использовать для создания собственного шаблона. Эти блоки являются частью глобального шаблона, в котором определён дизайн письма — логотип VMmanager, шрифты, цвет текста и кнопок. В текущей реализации возможности редактировать глобальный шаблон нет.
  6. Кнопка Предпросмотр позволяет посмотреть внешний вид письма, которое получит пользователь.
  7. Для сохранения скрипта и шаблона письма нажмите Создать.

    Создание шаблона письма

При запуске скрипта, если для него настроены шаблоны писем, можно указать email, на который будет отправлено письмо. Для этого:

  1. Включите опцию Отправить письмо, которое привязано к скрипту.
  2. Выберите Язык шаблона письма.

  3. Укажите Email получателя. Если поле оставить пустым, то письмо будет отправлено владельцу виртуальной машины, на которой запускается скрипт. Вы можете указать несколько получателей через запятую.

    Отправка письма

    Обратите внимание!

    Указание email получателя доступно только администратору VMmanager. Обычный и продвинутый пользователи могут отправлять письмо только на собственный email.

При одновременном запуске нескольких скриптов на одной ВМ письмо можно будет отправить только по одному скрипту.

Параметры и переменные скриптов в шаблонах


Все параметры и переменные, которые используются в скрипте, могут также использоваться в шаблонах писем.

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

Чтобы передать параметры из скрипта в шаблон, используйте в скрипте следующие конструкции:

  • vm_export_variable <var_name> <var_value> — используется для передачи переменной в шаблон письма. Например, в скрипте генерируется пароль и его значение можно отправить в письме;

    <var_name> — имя переменной, как она будет указываться в письме. Например, password.

    <var_value> — значение переменной. Предпочтительно указывать в кавычках, чтобы синтаксис bash правильно определил указанную переменную. Значение переменной может задаваться или генерироваться внутри скрипта.

    Обратите внимание!

    Все переменные (из скрипта, глобальные/локальные, параметры), которые нужно добавить в шаблон письма, необходимо указать в теле шаблона в формате ($var_name).

  • vm_export_file <file_name> <file_path> — используется для передачи в шаблон письма файла, который генерируется внутри скрипта. Файл отправляется во вложении к письму и внутри шаблона письма указывать его не нужно;

    <file_name> — название файла, как оно будет указываться в письме.

    <file_path> — путь до файла.

  • vm_export_dir <dir_name> <dir_path> — используется для передачи в шаблон письма директории в формате архива .tar. Архив отправляется во вложении к письму и внутри шаблона письма указывать его не нужно.

    <dir_name> — название архива .tar.

    <dir_path> — путь до директории.

    Обратите внимание!

    Конструкция vm_export_dir не работает на виртуальных машинах с Windows, а также на ВМ, в которых не установлен tar.

По умолчанию максимальный размер прикрепляемого к письму файла/архива — 2 МБ. Для изменения этого значения, выполните следующий запрос:

Изменение размера прикрепляемого файла

curl -k -H 'x-xsrf-token: токен пользователя'  https://IP-Address/vm/v3/setting/max_export_file_size_mib -d '{"value":"Размер файла в Мбайтах"}'
CODE

Пример настройки шаблона письма

В качестве примера приведён скрипт, который создаёт и компилирует файл на языке C++:

Тело скрипта

dnf install -y gcc git gcc-c++

mkdir /root/example
cd /root/example
echo '#include <iostream>

int main() {
    std::cout << "Hello world!";
}' > ./example.cpp
g++ example.cpp -o /root/example/example
/root/example/example > /tmp/test.txt
output="$(cat /tmp/test.txt)"

vm_export_variable output "$output"
vm_export_file output.txt /tmp/test.txt

rm -rf /tmp/test.txt /root/example
CPP

Настройки скрипта


В письме выводится информация: IP-адрес виртуальной машины, на которой компилируется файл, версия сборки и вывод:

Контент шаблона письма

<h1 style="margin-bottom: 10px">Ваш файл скомпилирован</h1>
<div>
  <p><b>Скомпилировано на:</b> ($IP)</p>
  <p><b>Версия сборки:</b> ($build_ver)</p>
  <p><b>Вывод:</b> ($output)</p>
</div>
CPP

Для этого используется глобальная переменная $IP, параметр скрипта build_ver и переменная, заданная в скрипте output.

Настройка шаблона письма на русском языке


Пример полученного письма

Настройка уведомления через API


Чтобы настроить уведомление пользователя при переустановке ОС на ВМ, укажите в теле POST-запроса /host/{host_id}/reinstall для параметра send_email_mode значение:

  • saas_only — будет отправлено только письмо, привязанное к скрипту;

  • default — будет отправлено и письмо, привязанное к скрипту, и письмо о переустановке ОС.

Значение параметра send_email_mode не сохраняется, а работает в рамках одного запроса.

Письма будут отправлены на языке, указанном в настройках пользователя. 

Может быть полезно

Связанные статьи: