Автоматизация тихого развертывания программного обеспечения в Solaris 10
По сути, я хотел бы задать вопрос, касающийся автоматизации развертывания пакетов программного обеспечения в Solaris 10.
В частности, у меня есть набор программных компонентов в tar-файлах, которые запускаются как процессы-демоны после их извлечения и настройки в среде хоста. Как и любой программный пакет на стороне сервера, я должен убедиться, что перед его извлечением и запуском программного обеспечения соблюден список необходимых условий. Например:
Проверка того, что определенные пользователи существуют, и они связаны с одной или несколькими группами пользователей. Если нет, то создайте их и их групповые ассоциации.
Проверка наличия целевых папок приложения, а если нет, то создайте их с предварительно настроенными значениями пути, определенными при сборке пакета.
Проверка того, что такие папки имеют соответствующий уровень контроля доступа и владельца для определенного пользователя. Если нет, то установите их.
Проверка того, что набор переменных среды определен в / etc / profile, указывает на предопределенные пути, добавлен в общую переменную среды $PATH и, наконец, экспортирован в среду пользователя. Другие файлы включают / etc / services и / etc / system.
Очевидно, что выполнение этого вручную для многих блоков (рассматриваемая цель) может быть медленным и подвержено ошибкам.
Я считаю, что лучшей альтернативой является как-то автоматизировать этот процесс. До сих пор я думал о следующих опциях и отказался от них по тем или иным причинам.
1) Традиционные сценарии оболочки. Я только устранял их ранее, и у меня нет особого опыта с ними. Это будет моим последним средством.
2) скрипты Python, использующие библиотеку pexpect для анализа вывода системных команд. Это был мой первоначальный выбор, поскольку он был установлен в целевых средах Solaris. Тем не менее, я хочу убедиться, что я не буду снова переворачивать колесо: P.
3) Скрипты Ant или Gradle. Они могут быть опцией, так как в боксах также включена поддержка Java 1.5, и абстракции набора файлов могут быть очень полезны. Однако они могут не справиться с проверкой / настройкой прав доступа пользователей и папок.
Мне кажется очевидным, что я не первый человек в этой ситуации, но я, кажется, не нахожу полезную инфраструктуру, предназначенную для этой цели. Пожалуйста, дайте мне знать, если есть лучший способ сделать это.
Я благодарю вас за ваше время и помощь.
1 ответ
Вы, вероятно, хотите использовать автоматизацию изменений для этого. например, Puppet, Chef, cfengine, bcm2 или что-то еще.
Лично я использовал Puppet на Solaris в течение последних трех лет, и был вполне доволен этим решением. Мы используем его для управления всеми аспектами системного администрирования: пользователями, файлами, заданиями cron, файловыми системами ZFS, монтированием NFS, зонами, сервисами (через SMF) и так далее. Это довольно полезно.
Поставщик пакетов Puppet SRV4 работает, но ему не хватает возможности извлекать файлы удаленно (например, через HTTP). Вы можете обойти это, написав функцию, которая устанавливает ваши пакеты для вас. Если пакеты доступны локально (через NFS), провайдер должен просто работать.
В дополнение к Solaris 10 мы используем то же репозиторий Puppet для управления нашими системами Solaris Express и Debian Linux.
Я написал этот пост некоторое время, что может быть полезно: http://mirrorshades.net/post/196593566