Народ, пива тому кто подскажет наиболее элегантное решение.
Суть: с gitlab-runner тачки триггернуть powershell скрипт на виндовом сервере, который ресторит бд mssql
Также, скрипту необходимо передать переменные
Пробовал :
- powershell Invoke-command с линуха (проблема с аутентификацией)
- openssh в powershell (проблема с паролем. Требует пароль в интерактивном режиме)
- через заббикс агента триггернуть UserParam ( не подходит, тк ограничение timeout 30 секунд. Этого недостаточно для рестора бд)
Два основных варианта:
вариант1:
- раннер на винде
- на раннере и на управляемом хосте (хостах) powershell >= 5.0
- на раннере и на управляемом хосте (хостах) настроено WinRM, на раннере в "TrustedHost" добавить ip-адреса и(или) DNS-имена управляемых хостов
- в Powershell-скриптах юзаешь удалённые сессии (PsSession) с кредами (-Credential)
- виндовые креды (логин, пароль, ключ и т.п.) можно, например, прописать в "Security Variable" в гитлабе и прокидывать их как параметры в Powershell-скрипт прямо из .gitlab-ci.yml,
можно брать их из внешнего vault-хранилища, можно просто виндовыми средствами засекюрить в файлик и дёргать этот файлик
- таким макаром в винде через гитлаб-раннер можно сделать вообще практически всё, что можно сделать через пош
- сами пош-скрипты можно держать в отдельной репе, в репе с проектом или просто на раннере или ещё где
вариант2:
- раннер на линуксе (docker-executor)
- образ с ansible, в ансибл обязательно поставить тулзы для WinRM
- пишешь ансибл-плейбуку под свою задачу, если возможно win-модулями, где нет модулей просто командами Powershell
- управляемые хосты придётся настроить (включить WinRM и прочее, там есть готовый пошскрипт для ансибла)
- виндовые креды ы данном случае уже пихаешь в сам ансибл, опять же через встоенный vault, через внешний vault, через "Security Variables" гитлаба и т.п.
- ансибл точно также крутит Powershell через WinRM, можно и через SSH, но там в винде некоторые вещи ограничены