Chef Автоматизация в Облаках Владимир Соловьев, Михаил Щербаков Саратовский государственный университет, Grid Dynamics Создать Сконфигурировать Обновить 2 Создать машину (bootstrap instance) Cloud провайдер WEB UI Commandline tools API 3 Сконфигурировать Вручную 4 Скриптами Shell Python Ruby Capistrano НЕ масштабируемы НЕ идемпотентны ПРИВЯЗАНЫ к дистрибутиву 5 Идемпотентность 6 Chef Идемпотентные ресурсы Объединяем в рецепты Конфигурирование? Программирование! 7 Рецепты Шаблоны Рецепты Атрибуты Файлы 8 chef-server: chef-client: База Поиск Web UI Cookbooks Ohai 9 chef-solo Ohai Cookbooks 10 Ресурсы Абстракция Определяет требуемое состояние 1+ провайдеров 11 Атрибуты apache[:listen_ports] = [ 80 ] Привязка к узлу Индексирование 12 Рецепты web = search(:node, "role:web").map { |cfg| [cfg["ipaddress"], cfg["fqdn"] ] } web.each do |w| template "/etc/nagios/webs/#{w[1]}" do variables :web => w source webs_nagios.erb end end service "nagios" do action :reload end 13 Пример web-сервер мониторинг nagios-сервер Chef сервер 14 Новый сервер web-сервер мониторинг nagios-сервер ? Новый web-сервер Chef сервер 15 Как? Рецепт nagios Search Индексы! 10.1.1.4 10.1.1.10 Новый web-сервер! 16 Обновить конфигурацию мониторинг nagios-сервер Chef сервер 10.1.1.4 10.1.1.10 17 CFEngine Puppet Chef Opscode 18 Спасибо за внимание! Владимир Соловьев, Михаил Щербаков Саратовский государственный университет, Grid Dynamics 19