Вопрос или проблема
Я пытаюсь найти программное обеспечение для хранения информации о ~10 различных программах. Информация включает следующее для ‘базовой’ установки:
- предназначенная протестированная операционная система
- другие предварительные программные обеспечения (java, tomcat, .net4.0, IIS, ImageMagick и др.)
- соединение с протестированной базой данных (mysql, sqlserver, возможно, по намерению, как версия OLTP или OLAP)
- соединение с другими веб-сервисами (такими как предоставлено другими ‘базовыми’ приложениями в том же инструменте)
- любые другие элементы, которые могут потребовать настройки.
Пример
БАЗОВАЯ ИНФОРМАЦИЯ (предназначенный инструмент для хранения)
Имя: MyApp
Поддерживаемые ОС: Windows 2012, RHEL 6
Поддерживаемая БД: Mysql 5.6, MS SQL 2012
Предварительные требования: jre8, tomcat8
Зависимость сервиса: MyOtherApp/service/REST.WADL?version=v1
Зависимость сервиса (необязательно): MyYetAnotherApp/service/SOAP.WSDL?version=v2
КЛИЕНТСКАЯ_РАЗВЕРТКА1 (сгенерировано на основе этой информации, возможно, вне инструмента, возможно, в другой формат, например, vagrant или ansible JSON переменные)
Имя:Customer1_Myapp
Целевая ОС: Windows 2012
База данных: Customer1_mysqlserver.aws.com
Сервисные хуки: http://serverXYZ/MyOtherApp/service/REST.WADL?version=v1
ВНУТРЕННЯЯ_СИСТЕМА_СЕРТИФИКАТОВ (сгенерировано на основе этой информации, возможно, вне инструмента, возможно, в другой формат, например, vagrant или ansible JSON переменные)
Имя:INTCERT_Myapp
Целевая ОС: RHEL 6
База данных: cert_mysqlserver.mycompany.com
Сервисные хуки: http://serverZZYY/MyOtherApp/service/REST.WADL?version=v1
Обратите внимание, что цель не состоит в том, чтобы хранить конфигурационные файлы, а скорее во всей этой связанной информации, чтобы, в идеале, сгенерировать конфигурационный файл, генерировать диаграммы и т. д., поскольку этот ‘инструмент’ уже должен иметь всю базовую информацию.
В основном, все, что нужно, чтобы настроить и развернуть работающую версию программного обеспечения для каждого клиента/каждой среды (Dev/QA/Staging/prod и т. д.). Идея/цель состоит в том, чтобы после сбора этой информации генерировать диаграммы для обзора (диаграммы развертывания, диаграммы потоков данных и т. д.).
Предпочтительно открытое программное обеспечение для добавления/расширения по мере необходимости (например, можно добавить требования к безопасности и тип протокола к определению ‘соединения’); но я возьму что угодно вместо Excel-таблиц…. 🙂
(p.s. Я уже получал вопросы, отклоненные ServerFault и StackOverflow по аналогичным вопросам/рекомендациям программного обеспечения, так что продолжайте указывать сюда).
Это не совсем то, что вы ищете, но вы можете получить очень хорошее начало, взглянув на Vagrant и Packer. Они позволяют вам указывать окружение(я), необходимые для запуска, настройки и тестирования вашего программного обеспечения, включая вашу ОС, настройки ОС, базу данных, другие инструменты и т. д., и генерировать их.
Таким образом, из “простых” текстовых/JSON файлов, которые вы можете контролировать версию, вы можете определить как вашу среду разработки, так и среду развертывания/тестирования. Разработчики могут быстро запустить виртуальную машину, используя VirtualBox, VMWare, Docker и др., и ваши тестировщики и установщики могут по запросу генерировать идентичные окружения.
Для существующего решения вы можете итеративно генерировать необходимую информацию, запустив Vagrant box с базовой ОС, извините, вам нужно знать это самостоятельно. Тестирование для определения, какие зависимости не выполнены. Закрыть box, добавить зависимость и перезапустить.
Поскольку это захватит информацию, которая вам нужна, вы также можете парсить файлы Vagrant/Packer для ваших диаграмм и т. д.
Ответ или решение
Для решения задачи по организации информации о конфигурации различных программных приложений и их зависимостях, включая операционные системы, программные зависимости и связи с веб-сервисами, рекомендуется использовать подходы, связанные с Enterprise Architecture (EA) и Configuration Management Database (CMDB).
Предложение по использованию EA и CMDB
1. Определение основного объема:
Для начала важно четко определить, какую информацию необходимо собирать. Как было указано в вашем описании, основные компоненты конфигурации должны включать имя приложения, поддерживаемые операционные системы, требуемые предварительные программные компоненты, тестируемые базы данных и связи с веб-сервисами.
2. Создание структуры хранения данных:
- Enterprise Architecture (EA): Разработка EA позволяет не только описать текущее состояние IT-ландшафта, но и управлять изменениями, оптимизируя деловые процессы. Использование инструментов EA, таких как ArchiMate или TOGAF, поможет визуализировать связи между приложениями и их зависимостями, а также формализовать требования.
- CMDB: DB является отличным решением для хранения информации о конфигурации и управления зависимостями. Инструменты, такие как ServiceNow или openITCOCKPIT, могут быть использованы для построения CMDB, чтобы отслеживать компоненты и их текущие состояния.
3. Автоматизация генерации конфигураций:
Для генерации конфигурационных файлов и диаграмм можно рассмотреть использование открытых инструментов, таких как Terraform в связке с Vagrant и Packer. Эти инструменты позволяют описывать инфраструктуру как код, что упрощает процесс развертывания и поддержания окружений. Например, с помощью файлов Vagrant можно быстро создавать одинаковые среды для разработки, тестирования и продакшн.
4. Хранение и извлечение информации:
Следует хранить информацию в формате JSON или YAML, чтобы в дальнейшем можно было легко извлекать и преобразовывать данные для создания диаграмм. Подходящий вариант — это использование систем управления версиями (Git) для контроля изменений конфигурационных файлов.
Программные решения, которые стоит рассмотреть
- Prometheus и Grafana: Для мониторинга состояния приложений и создания визуализаций, которые могут помочь в анализе данных о уровне доступности и производительности.
- Confluence или Notion: Эти инструменты могут использоваться для документирования процессов и зависимостей между приложениями, обеспечивая доступ к информации для команды.
- Diagrams.net (ранее Draw.io): Интуитивно понятное решение для создания диаграмм развертывания и потоков данных, которое можно интегрировать в области работы с документацией.
Заключение
Выбор стратегии и инструментов для хранения конфигурационной информации о программном обеспечении требует понимания ваших конкретных потребностей и доступных ресурсов. Важно двигаться в направлении автоматизации, гибкости и возможности визуализации данных для оптимизации процессов внедрения и поддержки. В конечном итоге, такая систематизация поможет повысить эффективность управления приложениями и ускорить процессы развертывания.