Введение
В настоящее время, практики DevOps активно используются в различных областях ИТ-индустрии, в том числе и специалистами, работающими с 1С:Предприятие. В результате этого, появилась масса программных продуктов, позволяющих автоматизировать различные аспекты процессов разработки и эксплуатации программного обеспечения, управления ИТ-инфраструктурой, а также интеграции между различными ИТ-системами. И если для автоматизации процесса разработки и тестирования (Dev) существует достаточно большое количество различных программных продуктов (tester, xUnitFor1C, vanessa-add и др.), разработанных на базе платформы 1С:Предприятие, то для автоматизации управления ИТ-инфраструктурой (Ops), как правило используются “сторонние” программные продукты, такие как Microsoft System Center, Zabbix, puppet, ANSIBLE, Terraform etc. Это очень мощные продукты с огромным функционалом, рассчитанные на управление большими инфраструктурами. Следствием этого, является высокий порог вхождения для работы с ними, а также приличное количество ресурсов, которое надо затратить на их покупку, развертывание, настройку и обслуживание. К тому-же, как правило ИТ-системы не существуют в вакууме и зачастую требуется обеспечить их взаимодействие с пользователями, что может оказаться нетривиальной задачей.
Таким образом, настоящая разработка (проект на GitHub) - это попытка создать простое решение, которое позволит автоматизировать действия по администрированию и управлению ИТ-инфраструктурой, соединив преимущества платформы 1С:Предприятие, в части создания пользовательского интерфейса и структур для хранения данных, и различные скриптовые языки программирования, такие как PowerShell, bash, Python, OneScript и т.п., которые реально используются для задач администрирования и управления.
Системные требования
Платформа 1С:Предприятие, версии не ниже 8.3.10.2252.
Операционная система Windows или Linux.
Концепция решения
Концепция настоящего решения не отличается большой оригинальностью и позаимствована из Microsoft System Center Orchestrator. Суть ее заключается в том, что последовательность автоматизируемых действий оформляется в виде некоего процесса (workbook в System Center, playbook в Ansible и т.п.), который может быть запущен на выполнение при наступлении определенных условий. В качестве среды для создания и выполнения процессов используется платформа 1С:Предприятие, а также рабочие серверы, которые обеспечивают выполнение действий, которые не могут быть выполнены напрямую из платформы. Схема инфраструктуры представлена на рис. 1.
Рисунок 1. Схема инфраструктуры.
Настоящая конфигурация не требует наличия БСП и может использоваться как самостоятельно, так и в составе других решений.
Описание
Создание описания процесса
В качестве базового механизма для создания процессов используется механизм бизнес-процессов, платформы 1С:Предприятие. Процессы создаются в режиме конфигуратора, в дизайнере карты маршрута бизнес-процесса. Такой подход обусловлен соображениями безопасности, а также простотой разработки и отладки.
В качестве примера, рассмотрим процесс отправки http-запроса, схема которого представлена на рис. 2.
Рисунок 2. Схема процесса отправки http-запроса.
Как можно увидеть, схема процесса включает в себя задачи, по которым необходимо выполнить определенные действия, а также блоки анализа результата этих действий.
Задачи, могут быть нижеследующих типов:
Действие - собственно выполнение какого-либо действия.
Ожидание выполнения - задача, которая ожидает наступления определенных даты и времени. При наступлении указанных даты и времени, автоматически помечается как выполненная.
Обработка ошибки - задача, которая создается при возникновении ошибки при выполнении действия. Как правило используется для коммуникации с людьми, для устранения причин ошибки.
Каждая задача имеет результат выполнения:
Положительный - действие было успешно выполнено.
Отрицательный - действие не было выполнено.
Ошибка - при выполнении действия возникла ошибка.
Также, каждая задача имеет информацию о дальнейших действиях:
Продолжить - продолжить выполнение процесса.
Повторить - повторить выполнение.
Завершить - завершить выполнение процесса.
Отменить - отменить выполнение процесса.
Соответственно анализ результатов выполнения, а также дальнейших действий позволяет направить последовательность выполнения по нужному пути.
Задание соответствующих свойств, а также анализ результатов, производится в обработчиках соответствующих элементов схемы процесса.
Реализация действий
Итак, мы имеем схему бизнес-процесса с описанной последовательностью действий. Теперь необходимо реализовать их.
Каждое действие выполняется независимо в фоновом задании, при этом поддерживается два варианта выполнения. Первый - для каждого экземпляра процесса и точки маршрута запускается отдельное фоновое задание. Второй - для каждой точки маршрута запускается отдельное фоновое задание, которое выполняет действия по всем экземплярам процессов. Первый вариант является более производительным, однако при большом количестве одновременно выполняющихся процессов может привести к чрезмерному потреблению ресурсов и снижению производительности.
Соответственно, при втором варианте использования, необходимо для каждой точки маршрута с типом действие создать регламентное задание, где и реализовать необходимое действие. Пример реализации действия отправки http-запроса представлен на рис. 3.
Рисунок 3. Реализация действия по точке маршрута.
В настоящей конфигурации можно реализовать действия, которые могут быть выполнены средствами платформы 1С:Предприятие. Однако, с использованием публикации //infostart.ru/public/936455/ и разработки https://github.com/asosnoviy/oscript-ssh вполне реально реализовать задачи по управлению серверами и сетевым оборудованием.
Запуск процессов на выполнение
Запуск процессов на выполнение сводится к созданию экземпляра соответствующего бизнес-процесса, с последующим помещением его в очередь для выполнения. Старт процесса будет произведен автоматически.
Существует достаточно большое количество ситуаций, когда старт процессов зависит от выполнения других процессов. Для обеспечения этого функционала реализован механизм зависимостей. Каждый экземпляр процесса имеет набор пар ключ/значение, от которых он зависит, а также соответствующий набор, указывающий на что он влияет. Пример создания процесса для выполнения представлен ниже.
Настройка адресации задач
Поскольку администрирование и управление ИТ-инфраструктуры более-менее крупного размера является командной работой, реализован механизм, позволяющий адресовать определенные задачи определенным группам специалистов.
Для этого необходимо создать группу адресации задач
Рисунок 4. Создание группы адресации задач.
Добавить в нее необходимых специалистов
Рисунок 5. Добавление членов в группу адресации задач
И назначить задачу по точке маршрута группе адресации
Рисунок 6. Назначение задачи по точке маршрута группе адресации
Настройка оповещений
Оповещение ИТ-специалистов о процессах, происходящих в системе, в частности о факте необходимости обработать ошибку выполнения является неплохой идеей. Для этого в конфигурации реализован механизм оповещения пользователей. В качестве канала для оповещений выбрана электронная почта.
Для настройки оповещений, необходимо создать контакты получателей
Рисунок 7. Создание контакта
Создать группу контактов и добавить в нее необходимых членов
Рисунок 8. Создание группы контактов
А затем, настроить оповещение по определенному событию для указанной группы
Рисунок 9. Настройка оповещения
В данном примере, оповещение будет отправлено членам группы Тестовая группа, при создании задачи обработки ошибки в бизнес-процессе – отправка http-запроса.
Тестирование
Теперь протестируем все вместе.
Отправим два http-запроса на несуществующий домен.
Рисунок 10. Отправка http-запроса.
Просмотрим очередь бизнес процессов и убедимся, что в очереди два созданных нами процесса.
Рисунок 11. Очередь бизнес-процессов.
Просмотрим свойства процесса, который был создан вторым и убедимся, что он не стартован.
Рисунок 12. Свойства бизнес-процесса
При правильной настройке smtp сервера, на почту членов группы оповещения прийдет электронное письмо, примерно следующего вида
Рисунок 13. Оповещение по электронной почте
Войдем в систему с аккаунтами Инженер1 и Инженер2 и убедимся, что в списке “Мои задачи” каждого пользователя появилась задача на обработку ошибки.
Рисунок 14. Список “Мои задачи”
Откроем задачу
Рисунок 15. Задача обработки ошибки
И просмотрим сообщение об ошибке, которое было сгенерировано при выполнении http-запроса.
Также посмотрим схему бизнес-процесса и текущее положение на карте маршрута
Рисунок 16. Текущее положение на карте маршрута
Установим пользователя Инженер2 исполнителем задачи и убедимся, что задача исчезла из списка задач у пользователя Инженер1.
Рисунок 17. Установка исполнителя задачи.
Также исполнитель может установить исполнителем другого пользователя или очистить поле Исполнитель. В этом случае, задача будет снова доступна всем членам групп адресации.
Нередки ситуации, когда над задачей может работать несколько человек. Для передачи информации по задачи другим пользователям может использоваться механизм заметок.
Рисунок 18. Заметки по задаче.
Поскольку в данном случае проблема заключается в невозможности разрешить DNS имя url, на который мы отправили запрос, завершим процесс.
Рисунок 19. Установка дальнейших действий
Ну вот, собственно и все.
Заключение
Надеюсь, что данная разработка поможет вам в администрировании, управлении и обслуживании вашей ИТ-инфраструктуры.
Также конфигурация доступна для загрузки на github.
P.S.
Замечания, предложения, улучшения и конструктивная критика – приветствуются.