SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
chef
рецепты от шеф-повара
Основные понятия
Node - хост на котором запущен chef-client
chef-client - консольная утилита
обновляющая ноду
chef server - хост с которого ноды
загружают свою конфигурацию
chef-repo - репозиторий с конфигурациями
workstation (Client) - компьютер
разработчика с локальной версией chef-repo
cookbook - поваренная книга
Архитектура
Основные компоненты
ohai - собирает информацию о ноде на
которой запущен (platform, fqdn)
knife - консольная утилита для управления
chef-repo, chef server, nodes and more.
shef - интерактивная ruby консоль для
отладки и управления.
В кратце это работает так
С чего начать?
1. Поднимаем chef server;
2. Настраиваем knife на chef server;
3. Настраиваем workstation (clone chef-repo,
   setup knife);
4. Бутстрапим ноду. knife bootstrap
   10.40.64.143 -r -x root -P <secret>;
5. Обновляем ноду chef-client.
Node
Описывается структурой json. knife node edit
<node_name> для редактирования.

● Аттрибуты;
● Run list - рецепты которые будут
  применены к ноде;
● Environment
● Role
Attributes
Cookbooks
attributes/
definitions/
files/
libraries/
metadata.rb # version, dependency
providers/
README.rdoc
recipes/
resources/
templates/
Recipes
knife cookbook create apache2

cookbooks/apache2/recipes/default.rb
cookbooks/apache2/recipes/mod_ssl.rb

{ # knife node edit <name>
  "run_list": [
    "recipe[apache2]",
    "recipe[apache2::mod_ssl]"
  ]
}
Resources
# Создаем директорию
directory "/tmp/monkey" do
 owner "root"
 group "root"
 mode 0755
 action :create
end

# Запускаем и добавляем в автозагрузку
service "nginx" do
 supports :status => true, :restart => true, :reload => true
 subscribes :reload, resources(:template => "#{node[:nginx][:dir]}/nginx.conf")
 action [:enable, :start]
end
apt-repository example
apt_repository "hardy-rsyslog-ppa" do
  uri "http://ppa.launchpad.net/a.bono/rsyslog/ubuntu"
  distribution "hardy"
  components ["main"]
  keyserver "keyserver.ubuntu.com"
  key "C0061A4A"
  action :add
  notifies :run, "execute[apt-get update]", :immediately
end

apt_repository "zenoss" do
  action :remove
end
php example
php_pear "XML_RPC" do
  action :upgrade
end

php_pear "XML_RPC" do
  version "1.5.4"
  action :install
end

php_pear "apc" do
  action :install
  directives(:shm_size => 128, :enable_cli => 1)
end
Providers
action :create do
 execute "create database" do
  not_if "mysql -e 'show databases;' | grep #{new_resource.name}"
  command "mysqladmin create #{new_resource.name}"
 end
end

action :delete do
 execute "delete database" do
  only_if "mysql -e 'show databases;' | grep #{new_resource.name}"
  command "mysqladmin drop #{new_resource.name}"
 end
end
Search
knife search admins 'id:charlie'
knife search node 'name:app?.example.com'

knife search node "broadcast:192.168.0.*"
knife search node "mtu:1500"
knife search node "flags:UP"



search(:node, 'run_list:recipe[foo::bar]')
search(:node, 'role:load_balancer')
Data bags
knife data bag create admins
vi data_bags/admins/charlie.json

{
 "id": "charlie",
 "uid": 1005,
 "gid":"ops",
 "shell":"/bin/zsh",
 "comment":"Crazy Charlie"
}

# in receipt
data_bag_item('admins', 'charlie')
workstation workflow
● knife cookbook create <name>
● knife cookbook upload <name>
● Изменения в нодах, синхронизируются
  автоматически.
deploy example
deploy "/my/deploy/dir" do
 repo "git@github.com/whoami/project"
 revision "abc123" # or "HEAD" or "TAG_for_1.0" or (subversion) "1234"
 user "deploy_ninja"
 enable_submodules true
 migrate true
 migration_command "rake db:migrate"
 environment "RAILS_ENV" => "production", "OTHER_ENV" => "foo"
 shallow_clone true
 action :deploy # or :rollback
 restart_command "touch tmp/restart.txt"
 git_ssh_wrapper "wrap-ssh4git.sh"
 scm_provider Chef::Provider::Git # is the default, for svn: Chef::Provider::Subversion
end
Полезняшки
●   http://wiki.opscode.com/display/chef/Home
●   https://github.com/opscode/chef-repo
●   http://habrahabr.ru/company/scalaxy/blog/87302/
●   http://vagrantup.com/
●   http://www.opscode.com/ (chef-server)
Спасибо за внимание
email: mokevnin@gmail.com
blog: www.wddx.ru
Кайдзен www.kaize.ru

twitter.com/mokevnin

Más contenido relacionado

La actualidad más candente

PHP 5.4: Что нового?
PHP 5.4: Что нового?PHP 5.4: Что нового?
PHP 5.4: Что нового?
phpdevby
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере
Yandex
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
7bits
 
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
zfconfua
 

La actualidad más candente (20)

Thumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - AnsibleThumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - Ansible
 
Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»
 
Страх и ненависть в Event Bus
Страх и ненависть в Event BusСтрах и ненависть в Event Bus
Страх и ненависть в Event Bus
 
17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения
 
02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы
 
High Availability в жизни обычного разработчика
High Availability в жизни обычного разработчикаHigh Availability в жизни обычного разработчика
High Availability в жизни обычного разработчика
 
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
 
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
 
PHP 5.4: Что нового?
PHP 5.4: Что нового?PHP 5.4: Что нового?
PHP 5.4: Что нового?
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам Ansible
 
03 web server_architecture_ru
03 web server_architecture_ru03 web server_architecture_ru
03 web server_architecture_ru
 
How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
 
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
 
Применяем Ansible
Применяем AnsibleПрименяем Ansible
Применяем Ansible
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
 
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
 
Chef (Rus)
Chef (Rus)Chef (Rus)
Chef (Rus)
 

Similar a Chef

Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)
Ontico
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Ontico
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей Романенко
Fuenteovejuna
 
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван ЗахарченкоSolit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
solit
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Ontico
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
Andrey Rebrov
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)
Mikhail Davydov
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
DevDay
 
Управление большим количеством физических серверов, Александр Берсенев, Инст...
 Управление большим количеством физических серверов, Александр Берсенев, Инст... Управление большим количеством физических серверов, Александр Берсенев, Инст...
Управление большим количеством физических серверов, Александр Берсенев, Инст...
it-people
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
drupalconf
 

Similar a Chef (20)

Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
 
Erlang tasty & useful stuff
Erlang tasty & useful stuffErlang tasty & useful stuff
Erlang tasty & useful stuff
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
Опыт разработки и тестирования RESTful JSON сервиса
Опыт разработки и тестирования RESTful JSON сервисаОпыт разработки и тестирования RESTful JSON сервиса
Опыт разработки и тестирования RESTful JSON сервиса
 
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
 
PHP
PHPPHP
PHP
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей Романенко
 
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван ЗахарченкоSolit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)
 
Микрофреймворки PHP
Микрофреймворки PHPМикрофреймворки PHP
Микрофреймворки PHP
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
Управление большим количеством физических серверов, Александр Берсенев, Инст...
 Управление большим количеством физических серверов, Александр Берсенев, Инст... Управление большим количеством физических серверов, Александр Берсенев, Инст...
Управление большим количеством физических серверов, Александр Берсенев, Инст...
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Batch processing in rails
Batch processing in railsBatch processing in rails
Batch processing in rails
 

Chef

  • 2. Основные понятия Node - хост на котором запущен chef-client chef-client - консольная утилита обновляющая ноду chef server - хост с которого ноды загружают свою конфигурацию chef-repo - репозиторий с конфигурациями workstation (Client) - компьютер разработчика с локальной версией chef-repo cookbook - поваренная книга
  • 4. Основные компоненты ohai - собирает информацию о ноде на которой запущен (platform, fqdn) knife - консольная утилита для управления chef-repo, chef server, nodes and more. shef - интерактивная ruby консоль для отладки и управления.
  • 5. В кратце это работает так
  • 6. С чего начать? 1. Поднимаем chef server; 2. Настраиваем knife на chef server; 3. Настраиваем workstation (clone chef-repo, setup knife); 4. Бутстрапим ноду. knife bootstrap 10.40.64.143 -r -x root -P <secret>; 5. Обновляем ноду chef-client.
  • 7. Node Описывается структурой json. knife node edit <node_name> для редактирования. ● Аттрибуты; ● Run list - рецепты которые будут применены к ноде; ● Environment ● Role
  • 9.
  • 10. Cookbooks attributes/ definitions/ files/ libraries/ metadata.rb # version, dependency providers/ README.rdoc recipes/ resources/ templates/
  • 11. Recipes knife cookbook create apache2 cookbooks/apache2/recipes/default.rb cookbooks/apache2/recipes/mod_ssl.rb { # knife node edit <name> "run_list": [ "recipe[apache2]", "recipe[apache2::mod_ssl]" ] }
  • 12. Resources # Создаем директорию directory "/tmp/monkey" do owner "root" group "root" mode 0755 action :create end # Запускаем и добавляем в автозагрузку service "nginx" do supports :status => true, :restart => true, :reload => true subscribes :reload, resources(:template => "#{node[:nginx][:dir]}/nginx.conf") action [:enable, :start] end
  • 13. apt-repository example apt_repository "hardy-rsyslog-ppa" do uri "http://ppa.launchpad.net/a.bono/rsyslog/ubuntu" distribution "hardy" components ["main"] keyserver "keyserver.ubuntu.com" key "C0061A4A" action :add notifies :run, "execute[apt-get update]", :immediately end apt_repository "zenoss" do action :remove end
  • 14. php example php_pear "XML_RPC" do action :upgrade end php_pear "XML_RPC" do version "1.5.4" action :install end php_pear "apc" do action :install directives(:shm_size => 128, :enable_cli => 1) end
  • 15. Providers action :create do execute "create database" do not_if "mysql -e 'show databases;' | grep #{new_resource.name}" command "mysqladmin create #{new_resource.name}" end end action :delete do execute "delete database" do only_if "mysql -e 'show databases;' | grep #{new_resource.name}" command "mysqladmin drop #{new_resource.name}" end end
  • 16. Search knife search admins 'id:charlie' knife search node 'name:app?.example.com' knife search node "broadcast:192.168.0.*" knife search node "mtu:1500" knife search node "flags:UP" search(:node, 'run_list:recipe[foo::bar]') search(:node, 'role:load_balancer')
  • 17. Data bags knife data bag create admins vi data_bags/admins/charlie.json { "id": "charlie", "uid": 1005, "gid":"ops", "shell":"/bin/zsh", "comment":"Crazy Charlie" } # in receipt data_bag_item('admins', 'charlie')
  • 18. workstation workflow ● knife cookbook create <name> ● knife cookbook upload <name> ● Изменения в нодах, синхронизируются автоматически.
  • 19. deploy example deploy "/my/deploy/dir" do repo "git@github.com/whoami/project" revision "abc123" # or "HEAD" or "TAG_for_1.0" or (subversion) "1234" user "deploy_ninja" enable_submodules true migrate true migration_command "rake db:migrate" environment "RAILS_ENV" => "production", "OTHER_ENV" => "foo" shallow_clone true action :deploy # or :rollback restart_command "touch tmp/restart.txt" git_ssh_wrapper "wrap-ssh4git.sh" scm_provider Chef::Provider::Git # is the default, for svn: Chef::Provider::Subversion end
  • 20. Полезняшки ● http://wiki.opscode.com/display/chef/Home ● https://github.com/opscode/chef-repo ● http://habrahabr.ru/company/scalaxy/blog/87302/ ● http://vagrantup.com/ ● http://www.opscode.com/ (chef-server)
  • 21. Спасибо за внимание email: mokevnin@gmail.com blog: www.wddx.ru Кайдзен www.kaize.ru twitter.com/mokevnin