Повторяемость для котиков: библиотекарь и книжная...

20

Click here to load reader

Upload: ivan-evtukhovich

Post on 20-Jun-2015

190 views

Category:

Technology


0 download

DESCRIPTION

Поговорим о проблемах командного изменения конфигурации, а также управления версиями и зависимостями сторонних библиотек (в терминах Chef — кукбуков): • где хранить сторонние кукбуки; • как сделать, чтобы у всех инженеров был одинаковый «срез» конфигурации; • как обновлять свои и сторонние кукбуки с учетом их зависимостей. В докладе описаны два современных инструмента для решения этих проблем: librarian-chef и Berkshelf. Мы сравним их, разберем сильные и слабые стороны, особенности интеграции с системой создания окружений Vagrant. Также посмотрим на практики использования этих инструментов, выработанные в компании «Экспресс 42». Видео есть здесь: http://tech.yandex.ru/events/yagosti/devops/talks/1597/

TRANSCRIPT

Page 1: Повторяемость для котиков: библиотекарь и книжная полка

Повторяемость для котиков: библиотекарь и

книжная полкаИван Евтухович

Page 2: Повторяемость для котиков: библиотекарь и книжная полка
Page 3: Повторяемость для котиков: библиотекарь и книжная полка

Опрос про chef

Page 4: Повторяемость для котиков: библиотекарь и книжная полка

librarian-chef berkshelf

Page 5: Повторяемость для котиков: библиотекарь и книжная полка

Проблематика

где хранить сторонние кукбуки

что делать, чтобы у всех инженеров был одинаковый "срез" конфигурации

как обновлять свои и сторонние кукбуки с учетом их зависимостей

Page 6: Повторяемость для котиков: библиотекарь и книжная полка

История вопроса

Как-то так

Все в одном репозитории

git submodule

Page 7: Повторяемость для котиков: библиотекарь и книжная полка

Источники кукбуков

opscode community (http://community.opscode.com/cookbooks)

Git/GitHub

локальные кукбуки

Page 8: Повторяемость для котиков: библиотекарь и книжная полка

berkshelf librarian-chef

зависимости 50 32

Vagrant yes yes

Инсталяций 220 тысяч 196 тысяч

Page 9: Повторяемость для котиков: библиотекарь и книжная полка

Gemfilesource 'http://rubygems.org'

!

gem 'nokogiri'

gem 'chronic', "~> 0.10.2"

gem 'rails', '~> 3.2.13'

gem 'rake', '~>0.9.2'

gem 'psych', '=1.2.2'

gem 'pg'

Page 10: Повторяемость для котиков: библиотекарь и книжная полка

Cheffilesite 'http://community.opscode.com/api/v1'

!

cookbook 'base', :path => 'inhouse-cookbooks/base'

cookbook 'fake', :path => 'inhouse-cookbooks/fake'

cookbook "timezone",

:git => "[email protected]:express42-cookbooks/timezone.git"

cookbook "sysctl",

:git => "[email protected]:express42-cookbooks/sysctl.git"

Page 11: Повторяемость для котиков: библиотекарь и книжная полка

Berksfilesite :opscode

!

cookbook 'base', :path => 'inhouse-cookbooks/base'

cookbook 'fake', :path => 'inhouse-cookbooks/fake'

cookbook "timezone",

:git => "[email protected]:express42-cookbooks/timezone.git"

cookbook "sysctl",

:git => "[email protected]:express42-cookbooks/sysctl.git"

Page 12: Повторяемость для котиков: библиотекарь и книжная полка

Принцип работы

librarian-chef install

Cheffile => Cheffile.lock

berks [install]

Berksfile => Berksfile.lock

Page 13: Повторяемость для котиков: библиотекарь и книжная полка

.lock файл описывает “срез” кукбуков

Cheffile - это “подсказка” о том, как его генерировать

Page 14: Повторяемость для котиков: библиотекарь и книжная полка

Обновление

librarian-chef update cookbook-name

berks update cookbook-name

обновят только cookbook-name и его зависимости

Page 15: Повторяемость для котиков: библиотекарь и книжная полка

librarian-chef

Хранит все в папке cookbooks

локальные / git / community кукбуки

просто, понятен, железобетонен

librarian-puppet

Page 16: Повторяемость для котиков: библиотекарь и книжная полка

berkshelf

хранит кукбуки в shelf-е

berks upload (?)

локальные / git / community / chef-server кукбуки

поддерживается компанией Chef (Opscode)

Page 17: Повторяемость для котиков: библиотекарь и книжная полка

Проблемы

Имена и версии OS

Качество кукбуков

Несколько подходов к их написанию

Несколько подходов к версионированию

Page 18: Повторяемость для котиков: библиотекарь и книжная полка

Наш подход

Отдельный chef-сервер на окружение

Все “сервисные” кукбуки в git/community

В inhouse-cookbooks кукбуки конкретного проекта

Сервисные кукбуки используются через lwrp

Атрибуты задаются только в ролях / окружениях

Page 19: Повторяемость для котиков: библиотекарь и книжная полка

Workflow

вносим изменение

vagrant provision

knife cookbook upload name

Page 20: Повторяемость для котиков: библиотекарь и книжная полка

Вопросы

twitter: express42_ru

[email protected]