Нужные компоненты для сценария установки? - PullRequest
1 голос
/ 30 декабря 2008

Я пишу bash-скрипт для настройки производственного сервера. В число наших задач входит компиляция программного обеспечения, создание пользователей и каталогов, копирование файлов и т. Д.

Мне интересно, что еще я должен делать. Возможно, вход в файл? проверка статуса выхода 0? Что я могу добавить, чтобы действительно сделать этот скрипт великолепным, а не просто «он работает»?

Ответы [ 3 ]

4 голосов
/ 31 декабря 2008

Возможно, вам следует переосмыслить способ развертывания программного обеспечения на производственном сервере:

  1. Компиляция программного обеспечения должна выполняться в среде разработки, а не на рабочем сервере. Нет необходимости устанавливать компиляторы на производственных серверах. И есть много причин, чтобы этого не делать (в основном, из соображений безопасности).

  2. Используйте систему управления пакетами для развертывания вашего программного обеспечения. Если вы используете Linux, используйте deb, rpm или любой другой менеджер пакетов, используемый вашим дистрибутивом. Это даст вам полный контроль над установленной версией, а также предоставит функции зависимости.

  3. Пакет, устанавливающий ваше программное обеспечение, должен содержать все файлы, которые нужны вашему программному обеспечению (если только эти файлы не могут быть предоставлены другими пакетами), а также настраивать пользователей, каталоги, разрешения и все остальное, что нужно вашему программному обеспечению. .

  4. В основном вы можете написать свой bash-скрипт в разделе после установки и после удаления пакета.

  5. Убедитесь, что после установки пакет доставляет и создает все необходимое для запуска программы, а также удаляет пакет, удаляет все файлы и отменяет действия сценария postinstall.

  6. Убедитесь, что обновление пакета с версии X до X + 1 работает должным образом.

Относительно самого скрипта. Конечно, вы должны проверить состояние выхода команд, которые вы запускаете. Вы можете использовать скрипт Wrapper , чтобы вам не приходилось повторять проверку кода завершения и ведение журнала для каждой команды.

Удачи!

0 голосов
/ 25 декабря 2009

@ Том: Примером стабильного и успешного дистрибутива Linux может быть Gentoo, где все двоичные файлы компилируются на сервере перед установкой (в дистрибутиве нет двоичных файлов). Он использовался большими производственными серверами, такими как isohunt.com.

Сборка двоичных файлов на сервере - это хорошая идея, поскольку она гарантирует, что ваши двоичные файлы оптимизированы на определенном уровне для платформы хоста, при условии, что установщик предоставляет правильные флаги компилятору.

Наличие GCC на сервере никому не мешало IMO:)

@ Lars:

Вы должны -

Сохраните файл журнала с добавлением шагов, необходимых для исправления ошибок и продвижения вперед.

В начале процесса разработки обрабатывайте исключения через сообщения для stdout и предоставляйте обработчики при тестировании сценария.

В целом, постарайтесь упростить работу для вашего пользователя, который действительно может не знать о микроуправлении, которое выполняет ваш скрипт (копирование файлов, установка демонов, создание файловых систем, настройка разрешений, бла), и вам потребуется только ваш установщик процесс успешно.

Тестирование скрипта на нескольких системах позволит убедиться, что он будет работать

0 голосов
/ 02 января 2009

На моей работе у нас есть сценарии оболочки, которые автоматизируют практически все, что касается построения сервера. Установка ОС полностью автоматизирована на основе некоторых профилей и прочего. Исправления, добавление пользователей и т. Д. - все это написано в сценариях, чтобы облегчить жизнь.

Однако, когда нам нужно развернуть корпоративное приложение, эти серверы являются «серверами приложений», это совершенно другой процесс. Мы имеем дело с совершенно другим набором администраторов, ребят из промежуточного программного обеспечения. Мы предоставляем им двоичные файлы, которые были переведены из dev в qa, а затем в prod.

Совершенно нормально автоматизировать настройку коробки, но вы не хотите «создавать» приложения на рабочей коробке. Если по какой-либо причине производительность снизится, любое живое приложение увидит, когда в окне появится большой неприятный процесс компиляции. : D

...