Новое поколение сисадминов

Попробуйте OpenStack

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

Прекрасным выбором для быстрого развертывания виртуальных машин или облачного хранилища, которые работают на ваших собственных серверах, будет OpenStack. С ним также легко переназначать вычислительные ресурсы другим проектам.

Лучше всего начать с DevStack. Это скрипт, который настраивает локальный запуск OpenStack: набираются всего три команды, и полноценное облако готово. Сначала с помощью менеджера пакетов убедитесь, что у вас установлен git, затем выполните команды git clone git://github.com/openstack-dev/ devstack.gitcd devstack./stack.sh

Либо скопируйте ZIP-архив devstack с DVD и распакуйте его.

В пакете есть утилиты командной строки, но лучше всего начать с web-интерфейса Horizon. Просто откройте в своем браузере localhost — и вперед.

Инициализация

Puppet берет на себя мороку с настройкой системы.

Как мы видели на, Vagrant поможет быстро установить виртуальную машину и войти в нее, не вспоминая логины и пароли. Отлично! Теперь настроим систему под свои нужды. Установим всякие приложения и прочее. Поскольку наша тестовая виртуальная машина — обычный сервер Ubuntu, все необходимое добудет apt-get.

Желая быть очень эффективными, можно было бы написать скрипт и сделать его доступным виртуальной машине через каталог /vagrant. Однако, если нужно настроить сотни компьютеров (или один компьютер сотню раз, в случае тестового сервера), это явная трата ценного времени. Чтобы сделать данный процесс быстрым и безболезненным, Vagrant внесет в виртуальную машину нужные настройки автоматически — с помощью Puppet.

Прежде всего откроем файл Vagrantfile и раскомментируем следующие строки (то есть удалим в этих строках знак решетки в начале): config.vm.provision :puppet do Ipuppetl puppet.manifests_path = “manifests” puppet.manifestjile = “init.pp” end и строку config.vm.network :public_network .

Они предписывают Vagrant для инициализации виртуальной машины применять Puppet, а для управления Puppet— файл init. рр в подкаталогах манифестов каталога текущего проекта. Еще нужно добавить строку puppet.module_path = “modules” между строками manifests и init.pp. Она велит Puppet брать модули в каталоге modules. На сайте http://forge.puppetlabs.com немало модулей для Puppet, и мы поместили несколько на наш dvd (а их код доступен нa hppt//www. linuxformat.com/archives). Вам нужно распаковать файл modules.tar.gz в каталог проекта, и он создаст каталог с модулями, где будет все необходимое.

Управляем Puppet

Теперь нужно только создать каталог manifests и в нем файл init.pp. Откройте его в любимом текстовом редакторе и добавьте строку class {‘apache’:} dот и все, что нужно для установки Apache при создании нашей виртуальной машины. Остается только перезапустить виртуальную машину командами vagrant destroy vagrant up

Затем можно зайти с vagrant ssh и запустить Ifconfig, чтобы узнать IP-адрес виртуальной машины. Откройте этот адрес в браузере на главном компьютере, и вы должны увидеть работающий Apache. Однако заодно вы увидите страницу 404, потому что в каталоге Apache нет файлов. С модулями Puppet удобно.

все настраивать, но сердце системы — язык, на котором можно сказать системе, что мы хотим видеть в виртуальной машине. Ключ к Puppet в том, что этот язык декларативный, а не процедурный (как в обычных скриптах), то есть мы описываем на нем желаемое состояние системы, а не говорим ей, что нужно делать. В основе этого языка лежит понятие ресурса. В качестве ресурсов могут выступать многие вещи, но сперва рассмотрим файлы. Откройте файл init.pp в редакторе и добавьте в него следующие строки: file {'/etc/apache2/htdocs’: ensure => directory, owner => ‘www-data’,}

Этот синтаксис иллюстрирует декларативную форму, о которой мы говорили. Мы не велим создать каталог командой mkdir, а затем сменить его владельца командой chown, потому что нас это не волнует: лишь бы в итоге каталог был создан. Нам также нужно добавить в этот каталог index.html, поэтому припишите в тот же файл такие строки: file {‘/etc/apache2/htdocs/index.htmr: ensure => present, content => ‘<html><head><title>Hello World</title></head><body><h1>Hello World</h1></body></html>’, owner => ‘www-data’, require => File['etc/apache2/htdocs’],}

Этот блок кода похож на предыдущий. Самое большое отличие — строка “require”. Так как мы говорим системе, что нам надо, а не как это сделать, компьютер будет создавать ресурсы не обязательно в том порядке, в котором они перечислены. Как мы уже отметили, это нас не особенно волнует. Но — за исключением данного случая: ведь нельзя создать файл, пока не создан каталог, в котором он должен размещаться. Здесь мы создаем файл с помощью атрибута “content”, но его также можно создать с внешнего сервера. Добавив эти строки в файл, можно выполнить команды vagrant destroy vagrant up и наша система загрузится. Как и в прошлый раз, сначала узнайте ее IP-адрес, а затем откройте его в своем браузере.

В этом кратком обзоре Puppet мы смогли создать систему с настроенным и запущенным Apache, но подлинную мощь вы получите, создавая более сложные конфигурации.

Организация подобной виртуальной машины нужна будет для библиотеки почты http://www.mailinfo.ru/. Важной особенностью будет возможность сбора и отправки почты прямо на сервере.

Страницы: 1 2 3 4

 
Adblock detector