Повторяемость для котиков: библиотекарь и книжная...
DESCRIPTION
Поговорим о проблемах командного изменения конфигурации, а также управления версиями и зависимостями сторонних библиотек (в терминах Chef — кукбуков): • где хранить сторонние кукбуки; • как сделать, чтобы у всех инженеров был одинаковый «срез» конфигурации; • как обновлять свои и сторонние кукбуки с учетом их зависимостей. В докладе описаны два современных инструмента для решения этих проблем: librarian-chef и Berkshelf. Мы сравним их, разберем сильные и слабые стороны, особенности интеграции с системой создания окружений Vagrant. Также посмотрим на практики использования этих инструментов, выработанные в компании «Экспресс 42». Видео есть здесь: http://tech.yandex.ru/events/yagosti/devops/talks/1597/TRANSCRIPT
Повторяемость для котиков: библиотекарь и
книжная полкаИван Евтухович
Опрос про chef
librarian-chef berkshelf
Проблематика
где хранить сторонние кукбуки
что делать, чтобы у всех инженеров был одинаковый "срез" конфигурации
как обновлять свои и сторонние кукбуки с учетом их зависимостей
История вопроса
Как-то так
Все в одном репозитории
git submodule
Источники кукбуков
opscode community (http://community.opscode.com/cookbooks)
Git/GitHub
локальные кукбуки
berkshelf librarian-chef
зависимости 50 32
Vagrant yes yes
Инсталяций 220 тысяч 196 тысяч
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'
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"
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"
Принцип работы
librarian-chef install
Cheffile => Cheffile.lock
berks [install]
Berksfile => Berksfile.lock
.lock файл описывает “срез” кукбуков
Cheffile - это “подсказка” о том, как его генерировать
Обновление
librarian-chef update cookbook-name
berks update cookbook-name
обновят только cookbook-name и его зависимости
librarian-chef
Хранит все в папке cookbooks
локальные / git / community кукбуки
просто, понятен, железобетонен
librarian-puppet
berkshelf
хранит кукбуки в shelf-е
berks upload (?)
локальные / git / community / chef-server кукбуки
поддерживается компанией Chef (Opscode)
Проблемы
Имена и версии OS
Качество кукбуков
Несколько подходов к их написанию
Несколько подходов к версионированию
Наш подход
Отдельный chef-сервер на окружение
Все “сервисные” кукбуки в git/community
В inhouse-cookbooks кукбуки конкретного проекта
Сервисные кукбуки используются через lwrp
Атрибуты задаются только в ролях / окружениях
Workflow
вносим изменение
vagrant provision
knife cookbook upload name