Как автоматизировать: куча ВМ, где нужно запускать скрипт со своими параметрами

Поддержка
  • Стоит задача:

    • есть достаточно много виртуальных машин с windows на proxmox
    • из-за того, что их много, а ресурсов сервера мало - они запускаются по требованию пользователя и затем уходят в суспенд через некоторое время- т.е. постоянно не работают
    • на этих ВМ могу запускать консольные приложения через ssh
    • нужно на каждой из них запускать скрипт 2 раза в сутки
    • запуск скрипта на каждой ВМ должен быть со своими логинами-паролями
    • с логинами и паролями ошибиться нельзя - тут нужен какой-то железный механизм, чтобы скрипт и автоматом и вручную запускался с верными лог и паролем. Допустить хотя бы одну ошибку - нельзя.
    • результаты работы скриптов(успех/неудача/шаг на котором произошла ошибка) нужно куда-то писать, чтобы пользователь раз в день мог смотреть, на каких ВМ выполнилось, на каких нет и принимал ручные действия

    Сейчас варианты реализации видится примерно такими:
    Вариант 1

    • есть система-оркестратор, которая 2 раза в день будет стартовать процесс:
      • проходится по списку ВМ, если ВМ не запущена или в суспенде - запускает
      • подключается по ssh и выполняет скрипт, параметры скрипта хранятся на ВМ
      • скрипт сам отдает результаты на http-сервис системы оркестратора
      • система оркестратор по завершению шлет пользователю отчет с ошибками
      • пользователь принимает меры
        Вариант 2:
        то же самое, но все управляется через http-сервис системы оркестратора, оттуда же скрипт получает лог/пароль и туда же пишет результат

    Вопросы:

    1. Предложите свой вариант решения поставленной задачи, если видите способ оптимальнее
    2. Как системе оркестратору запустить скрипт на ВМ из варианта 2 через http-запрос?
    3. Учитывая, что ошибиться в лог/пароле нельзя даже один раз, то хочется все таки хранить его где-то в файле внутри проекта, мб даже в самом проекте. Нужно сделать так, чтобы и при автоматическом запуске и при запуске на отладку вручную из BAS брался только верный логин/пароль из одного места.
      Хочется уйти от настройки ресурсов в BAS через интерфейс
    4. Допустим я выбрал вариант 2. Как внутри скрипта установить переменные или ресурсы в считанные мною от системы оркестратора? Нужен пример кода, так как блоками, я так понял не получится.
    5. Допустим я выбрал вариант 2. Как мне хранить в скрипте название ВМ, чтобы по этому названию получить логин/пароль от системы оркестратора? Вариант компилировать каждый скрипт - не вариант. Вариант править actual.xml тоже мне кажется опасным, потому что можно запутаться в проектах и запустить не с тем логином/паролем
    6. Как правильно обрабатывать ошибки, чтобы можно их было отправить в систему оркестратор? Нужна инфа успех/неудача/шаг на котором произошла ошибка
    7. Нормально ли эти варианты отработают через RemoteExecuteScriptSilent.exe?

    Сорян за длинный вопрос.

    PS: Прочитал форум, знаю, что параметры в скрипт кроме как редактированием actual.xml не передать...

  • @a-perminov У БАС есть библиотеки для запуска скриптов из nodejs/python/c# наверное проще посредством них сделать какие-то апи интерфейсы для вашей задачи

  • @a-perminov

    Прочитал твой топик поверхностно, лично я всегда пользуюсь для настройки серверов:

    • Для управления состояниями виртуальных машин - https://www.terraform.io/
    • Для настройки VM и запуска скриптов https://www.ansible.com/
    • Для запуска Windows приложений(жмакать на кнопки в самой программе для ее настройки) выбор тоже есть. Сам я писал кастомные скрипты для этого. Пример тут

    Вышеописанные инструменты дадут из коробки многое из того, что описано в топике.

    Можно пробовать посмотреть на https://www.uipath.com/product/automation-suite или подобное, сам не пользовался.

    P.S.
    Могу поделиться опытом, бесплатно. Кодить я не буду за тебя, но рассказать как делал бы я - без проблем. Добавил репутации, чтобы можно было писать в личку.
    Пиши в личку с tg.