Назад | Перейти на главную страницу

Какой метод автоматической настройки и настройки экземпляра Ubuntu является предпочтительным?

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

Есть ли метод (надеюсь, не отнимающий слишком много времени на изучение и настройку), который позволяет автоматизировать установку и настройку сервера или рабочей станции Ubuntu из ISO. Это в первую очередь для экземпляров виртуальных машин, но было бы полезно также создавать экземпляры на оборудовании.

Я специально ищу метод для автоматизации установки библиотек (apt-get), настройки служб (таких как Apache и MySQL), добавления стороннего программного обеспечения (загрузка, извлечение и сборка) и добавления библиотек в языки сценариев (например, , Ruby Gems или пакеты CPAN для Perl).

Если вам нужен быстрый и простой способ развертывания Linux, ознакомьтесь с Лучшее устройство для развертывания. Он не особо уникален ни по одной из своих функций (любой может настроить PXE-сервер и файлы кикстарта), но способ его представления и упаковки великолепен.

Я рекомендую v2.0 Бета. Он довольно стабилен и намного дружелюбнее, чем 1.4.

Я думаю, что наиболее распространенный метод Debian / Ubuntu - выполнить базовую установку с предпосев. Затем используйте что-то вроде кукольный для настройки / установки после установки.

Если вы не хотите или не можете запускать полную установку марионетки, другой вариант - написать сценарии для настройки системы после установки, а затем использовать их. Я храню некоторые скрипты, необходимые для настройки систем, в моем репозитории SVN, который доступен по https.

Когда я хочу использовать один из скриптов в SVN на одной из машин, я запускаю его прямо с сервера SVN с помощью curl.

curl --silent https://svn.example.org/linuxdev/config_samples/lenny_setup/setup-aptsources | bash

Этот конкретный сценарий устанавливает apt. Это в основном содержимое скрипта.

#!/bin/sh
export PATH=/usr/sbin:/usr/bin:/sbin:/bin
etckeeper commit 'pre-commit setup-aptsources'
curl --silent "https://svn.example.org/linuxdev/config_samples/lenny/apt/sources.list" > /etc/apt/sources.list
etckeeper commit 'post-commit setup-aptsources'
apt-get update

В реальной версии моего скрипта есть больше проверок ошибок, чтобы правильно реагировать, если что-то сломалось. Я использую что-то вроде etckeeper, поэтому важно, что если что-то сломается, вы можете легко определить, что изменилось, и вернуться.

взгляните на файлы preseed debian с помощью debconf. Не исключайте написания собственных сценариев для настройки ваших установок.

Похоже, у Ubuntu есть некоторая совместимость с Кикстарт файлы.

Почему бы просто не написать несколько сценариев на bash? Все, что вы можете сделать из приглашения оболочки, вы можете сделать из сценария оболочки. Он портативен, прост в освоении (сам по себе ценный навык) и прост в обслуживании.

Также вы упомянули виртуальные машины: если вы используете VMWare, вы можете легко создать шаблон для каждого нужного вам варианта.

Мы используем Ubuntu-VM-Builder с некоторыми предопределенными файлами конфигурации и несколькими таможенными скриптами. (Это для libvirt / kvm.)

Вот часть примера:

sudo vmbuilder kvm ubuntu --hostname somename --arch i386 --ip 192.168.222.21 \
    --gw 192.168.222.1 --dns 192.168.222.7 \
    --part vmbuilder.partition \
    --user peterh --name 'Peter Hansen' --pass default --tmpfs - \
    --firstboot vmbuilder.boot.sh --mirror http://192.168.222.1/ubuntu \
    --suite intrepid --flavour virtual --addpkg acpid --libvirt qemu:///system

Это подготавливает виртуальную машину с сетью, разделами диска, начальным пользователем, исходным URL-адресом apt-get и сценарием, который выполняется при первой загрузке. Сценарий включает следующее:

# Install openssh-server
apt-get update
apt-get install -qqy --force-yes openssh-server

Это запускает SSH. С этого момента мы можем использовать ssh для установки дополнительных пакетов и выполнения других настроек удаленно.

Мы также начали экспериментировать с libguestfs (из Python) как интересный альтернативный подход к некоторым настройкам после создания.

Редактировать: Я должен отметить, что приведенный выше пример фактически использовался с vmbuilder, который является более старой версией ubuntu-vm-builder. Сейчас детали могут немного отличаться, но принципы те же.