Конфигуриране на сървъри и приложения, използващи deploim готвач, статии за mkdev програмния

Какво е разгръщане

Какво е разгръщане

DevOps консултант, експерт по AWS, OpenStack, Куклен, Ansible, програмист Ruby и Go, CTO и основател на mkdev.me.

Малко за готвач

Готвач използва за конфигуриране на сървъра. Това се прави с помощта на kukbukov които описват желаното състояние на сървъра. В kukbukah има рецепти, които и е определението за състоянието на сървъра. Главният готвач има разделение в готвач-сървъра и готвач клиента. готвач-сървър съхранява kukbuki и информация за всичките си сървъри (nodah) за готвач-клиент са отделни възли. Всеки възел има списък пробег - списък на kukbukov и \ или предписания, които трябва да се извършват на този възел. Управление готвач-сървърни възли, а има и работна станция. Workstation не е нищо друго освен един компютър развитие.







За много приложения с отворен код общност вече е написал kukbuki: за да изберете PostgreSQL, рубин, Nginx и т.н. Но deploya конкретно приложение все още ще трябва да напишете своя kukbuk, в който ние, зависимости дава цялата необходима kukbuki.

Обикновено, разработчикът е с отделен хранилище, който съхранява kukbuki, различни настройки и ключовете да се свърже с готвач-сървъра.

По този начин ние трябва да направите следното:

  • коригира готвач-сървър
  • конфигуриране на работни станции
  • свържете с готвач-сървър някакъв сървър
  • събере необходимата за Rails приложения kukbuki
  • напишете вашето kukbuk, че ще използва изтеглени по-рано kukbuki кандидатстване и deploit

Предоставен готвач, Digital океан и нашата работна станция

Има два варианта за готвач-сървър: да го инсталирате на вашия сървър или да използвате Enterprise готвач. Enterprise готвач е готвач-хостинг сървър с приятен интерфейс. И най-важното - до 5 възли могат да бъдат конфигурирани безплатно. Само това, което ни трябва.

Най-евтиният VPS хостинг, че се запознах с този цифров океан, само за $ 5 на месец. Отлична форма най-малко за този експеримент. Но не бързайте да се създаде там първата си Dev, ще го малко по-различен начин правят.

Общо: готвач-сървър, създаден, ние трябва да го могат бързо да се свърже нов сървър в цифров океан.

Поставянето kukbuki

За готвач има няколко инструменти за улесняване на работата с kukbukami: библиотекар-готвач и berkshelf. По някаква причина реших да използвам библиотекар-готвач, макар и като как berkshelf по-популярни. Отидете на нашия главен готвач хранилище набор библиотекар, той се инициализира:

Тогава най-интересното: необходимо е да се намери правилният kukbuki и да ги насочи в Cheffile'e. За Релси приложения, ние се нуждаем от минимум PostgreSQL, Nginx и Ruby. И той kukbuk отговорен за разполагане на приложения, трябва да се постави в отделна папка, като готварски книги-Dev. Създаване на нова kukbuk може нож готварска книга създаде релси приложение команда. Той ще в папка си готварски книги. но ние помръдна в готварски книги-Dev.

Knife - е програма за управление на готвач-сървър чрез работната станция. Kukbuki ви позволява да качвате, списък възел и още много други.

Нека обясня защо: в готварски книги папка ние съхраняваме готови за употреба kukbuki, така че имайте дизайн точно там kukbukov леко неправилно. Освен това, ако вашият kukbuk Непознат в Cheffile и стартирате Setup отново kukbukov, той ще бъде изтрит от готварски книги. По този начин много по-разумно да се запазят kukbuki в готварски книги-Dev и укажете пътя до него в Cheffile. Когато нова версия kukbuka готов, ще се отървете от kukbukov инсталация, която ще копирате нова версия на вашия kukbuka в готварски книги.

в крайна сметка ми Cheffile да изглежда така:

Kukbuk за Rails deploya

До този момент ние току-що създадена нашата околна среда и kukbuki. Това е време да напиша нещо сами. Ние вече са установили kukbuk релси ап, че е време да се види от това, което е той. Най-важното днес е папката атрибути, рецепти и шаблони.







Шаблоните се съхраняват файлове с различни шаблони, които ще бъдат използвани при конфигуриране на възлите. Например, database.yml модел, който ще трябва да замени стойността на базата данни за името на базата данни, потребителско име и парола. Като шаблон, използван от ERB, без изненади за програмист Ruby.

Рецептите се съхраняват рецепти, които и свърши цялата работа. Основната рецепта се състои от един ресурс (готвач ресурси). Ресурсът описва желаното състояние на системата. Говори се, че много от начинаещите потребители пишат Chef рецепти като обикновен код. В действителност, в рецептата трябва да е точно описание на това как трябва да се настроите така системата. От това следва, по принцип idempotency ресурси, според която подновяването на ресурса не трябва да променя състоянието на системата, ако то вече е в съответствие с очаквания държавата.

В допълнение към ресурси в рецептата, можете да свържете други рецепти, например от друга kukbukov. Всеки вграденият готвач ресурс съществува обширна документация, така че не се колебайте да се отнасят към него, ако не разбирате нещо. Когато за първи път се опитах главния готвач преди няколко години, документацията е имал сериозни проблеми. Сега, за щастие, тези проблеми не са налице, всеки въпрос, който може да отговори.

Така че, на първо място ние трябва да включва рецепти за рубин, Nginx, postgresl, както и рецепта за основните библиотеки, която се изисква, включително съставянето на рубин, Nginx, PostgreSQL. добре, нали разбирате. Всички последващи промени, направени в файлови .cookbooks-Dev / релсите ап / рецепти / default.rb

Тези рецепти се изпълняват преди да започнат да се извършват нашата рецепта. Следващата стъпка е да инсталирате рубин и bundler:

Ruby_build_ruby ресурс е определено в kukbuke ruby_build. Както можете да видите, тя ви позволява да определите необходимата версия на рубин и различни възможности за монтаж. gem_package идва в комплект със себе си готвач и определя хем (изненада изненада). Не съм сигурен, че все още е необходимо никакво обяснение, DSL Chef'a много прост и chelovekochitaemy.

Сега изберете Nginx!

Тук за първи път се използва шаблон ресурс. На първо място ние го името на файла (с пътя) премине. След това задайте шаблон от папките шаблони за използване и предвижда също така, собствеността на файла и разрешения.

Шаблоните могат да се предават променливите, почти същото както правим в Rails приложения контролери. Просто по-долу е пример за изпращането на променливите.

Ние се приближава много прилагането същност deploya. Сега ние трябва да конфигурирате ключове за SSH за разполагане на потребителя. Умът, трябва да се използва за тая информация торби. което аз няма да ви кажа, в тази статия. Както съм казвал и преди, този път аз умишлено се опростят някои неща, така че ключът към deploya Хвърлих направо в папка шаблони.

Повече ще са ни необходими малък скрипт ключ SSH за използване по време deploya, които нямат пречки за привличане на код от частно хранилище. скрипт самия код е взета от документация готвач.

Е, колко е готино? Мисля, че е страхотен начин за конфигуриране на сървъра. И най-забележителното нещо: аз написах рецептата веднъж и никога не мисля за това. О, да, забравих да покаже как да изглеждат и ./cookbooks-dev/rails-app/attributes/default.rb ./cookbooks-dev/rails-app/templates/database.yml.erb.

Kukbuki натоварване и да се създаде ролята.

Тъй като всички kukbuki ние сме готови, ние можем да ги качите само към сървъра на готвача:

Главният готвач има нещо, наречено роли. Всичко е просто: в заявката с един куп сървъри, има възли, които са отговорни само за базата данни, има balancer'y натоварване, има възли със собствените си приложения. Chef ви позволява да определят ролите, с участието на идентифициране на рецепти, които трябва да се извършват по nodah с тази роля и да се уточни атрибутите, които са специфични за възела с тази роля. Тук са само роля, която е достатъчно, за да се заключи, че на етапа на писане код:

Зарежда роля в готвач-сървър: нож роля от файл роли / application.rb.

И сега най-готините: сега ние сме екип, създаване на нов сървър в областта на цифровите океан, го свържете към сървъра на готвач, конфигурирайте го на всички, че е необходимо да се създаде и zadeploim приложение. Това е като Heroku, само по-стръмен, защото всички ние сме писмено и ние знаем как работи ;-)

С регистрацията си в областта на цифровите океан. отидете в Control Panel, а след това в рамките на API, генериране на нов ключ API. Освен това, не би трябвало да вървят ръка за контролния панел, за да създадете сървъри и това ще се автоматизира процеса на свързване на нов възел на главен готвач-сървър, ние ще използва приставка нож digital_ocean:

Има подобни плъгини за AWS, Rackspace и други услуги в облака, така че обикновено няма нужда да работят поетапно самия възел (който, между другото, не е трудно, но е неудобно).

По-рано създаден ключ API, добавете .chef / knife.rb:

Добре, да вървим. Имайте предвид, опцията за boostrap, благодарение на новосъздадената си сървър ще бъде веднага започна да работи с нашия главен готвач-сървър.

Какво става тук:

  • С помощта на ключ API от Digital океан, ние създаваме нов сървър
  • Връщаме се SSH и да настроите сървъра за работа със сървъра на готвач
  • Ние го носите всички рецепти включени в списъка на приложение

За да рестартирате всички рецепти, можете да използвате следната команда:

Това е същото, които излизат със сървъра чрез SSH и бягай готвач-клиент.

Заключава, използвайте готвач да deploya релси приложения малко по-сложни, отколкото Capistrano, но малко усилие получаваме напълно автоматизирани настройки на процеса сървър от нула до работна кандидатура. Написано kukbuki може да се използва за неограничен брой приложения. Прекарването на малко повече време да навлезем в нашия набор от инструменти за разработчици трудни сега супер-оръжие. И това е страхотно.

Още по темата

Най-накрая реших да се образоваме?

След това се започва с нашето безплатно ръководство в света на уеб разработки. Вътре един куп съвети и материали за самоподготовка.

получите книгата

Какво е разгръщане