Повторяемость для котиков: библиотекарь и книжная...
DESCRIPTION
Поговорим о проблемах командного изменения конфигурации, а также управления версиями и зависимостями сторонних библиотек (в терминах Chef — кукбуков): • где хранить сторонние кукбуки; • как сделать, чтобы у всех инженеров был одинаковый «срез» конфигурации; • как обновлять свои и сторонние кукбуки с учетом их зависимостей. В докладе описаны два современных инструмента для решения этих проблем: librarian-chef и Berkshelf. Мы сравним их, разберем сильные и слабые стороны, особенности интеграции с системой создания окружений Vagrant. Также посмотрим на практики использования этих инструментов, выработанные в компании «Экспресс 42». Видео есть здесь: http://tech.yandex.ru/events/yagosti/devops/talks/1597/TRANSCRIPT
![Page 1: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/1.jpg)
Повторяемость для котиков: библиотекарь и
книжная полкаИван Евтухович
![Page 2: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/2.jpg)
![Page 3: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/3.jpg)
Опрос про chef
![Page 4: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/4.jpg)
librarian-chef berkshelf
![Page 5: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/5.jpg)
Проблематика
где хранить сторонние кукбуки
что делать, чтобы у всех инженеров был одинаковый "срез" конфигурации
как обновлять свои и сторонние кукбуки с учетом их зависимостей
![Page 6: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/6.jpg)
История вопроса
Как-то так
Все в одном репозитории
git submodule
![Page 7: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/7.jpg)
Источники кукбуков
opscode community (http://community.opscode.com/cookbooks)
Git/GitHub
локальные кукбуки
![Page 8: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/8.jpg)
berkshelf librarian-chef
зависимости 50 32
Vagrant yes yes
Инсталяций 220 тысяч 196 тысяч
![Page 9: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/9.jpg)
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: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/10.jpg)
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: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/11.jpg)
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: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/12.jpg)
Принцип работы
librarian-chef install
Cheffile => Cheffile.lock
berks [install]
Berksfile => Berksfile.lock
![Page 13: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/13.jpg)
.lock файл описывает “срез” кукбуков
Cheffile - это “подсказка” о том, как его генерировать
![Page 14: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/14.jpg)
Обновление
librarian-chef update cookbook-name
berks update cookbook-name
обновят только cookbook-name и его зависимости
![Page 15: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/15.jpg)
librarian-chef
Хранит все в папке cookbooks
локальные / git / community кукбуки
просто, понятен, железобетонен
librarian-puppet
![Page 16: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/16.jpg)
berkshelf
хранит кукбуки в shelf-е
berks upload (?)
локальные / git / community / chef-server кукбуки
поддерживается компанией Chef (Opscode)
![Page 17: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/17.jpg)
Проблемы
Имена и версии OS
Качество кукбуков
Несколько подходов к их написанию
Несколько подходов к версионированию
![Page 18: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/18.jpg)
Наш подход
Отдельный chef-сервер на окружение
Все “сервисные” кукбуки в git/community
В inhouse-cookbooks кукбуки конкретного проекта
Сервисные кукбуки используются через lwrp
Атрибуты задаются только в ролях / окружениях
![Page 19: Повторяемость для котиков: библиотекарь и книжная полка](https://reader038.vdocuments.net/reader038/viewer/2022100507/5584b121d8b42a8f768b4634/html5/thumbnails/19.jpg)
Workflow
вносим изменение
vagrant provision
knife cookbook upload name