Your SlideShare is downloading. ×
0
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Chef коротко об инфраструктуре

566

Published on

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
566
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    1. ChefКраткая вводная в инфраструктуру
    2. Как это бывает• ruby <(curl -fsSkL raw.github.com/mxcl/ homebrew/go)• brew install git wget postgresql-server gmp gettext icu4c libmcrypt libjpeg libxml2• 666.times { wget .. && cd .. && configure && make && make install }• vim configA && vim configB && ... && vim configFFFA
    3. Ещё это бывает так• ./install_all_packages_what_i_know.sh• 333.times { wget .. && cd .. && configure && make && make install }• vim configA && vim configB && ... && vim configFFFA
    4. Как это бывает реже• ./install_ruby.sh with_rvm=true• ./install_debian_nginx.sh• ./install_postgresql.sh• кажется я ещё что-то забыл, поэтому 25.times { get ... && cd ... && configure ... }
    5. Почему так?• Нужно учесть версии ОС• Не всегда нужны все пакеты• Компьютеров становится больше, а времени на их настройку меньше• Простые условия порождают сложную логику
    6. Решение• # chef-solo или• # chef-client в общем• Chef!
    7. Почему chef?• относительная проста• большое активное коммунити• экономия времени• голова больше не болит!
    8. Основные компоненты• Recipe• Cookbook• Resource и Provider• Attributes и Templates• Roles• DataBags
    9. Recipe• Установка конкретного пакета или части• Ruby-файл с Chef DSL: # mkdir -r /etc/iptables.d/ directory ‘/etc/iptables.d/’ do recursive true end # apt-get | yum | brew package ‘iptables’
    10. Cookbook• Описывает полноценный компонент системы• Кукбук добавляется в ноду, но не рецепт• Может содержать несколько рецептов # ls cookbooks/rvm/recipes/ default.rb ruby_193.rb ruby_187.rb ree.rb
    11. Resource и Provider• Описывает сущности необходимые для правильной конфигурации ноды• Позволяет избавится от рутины• Описание ресурса хранится в resources/• Описание поведение лежит в providers/• Есть предопределённые ресурсы
    12. Resource• Свойства ресурса # cookbooks/vagrant/resources/box.rb action :install attribute :name, :kind_of => String, :name_attribute => true attribute :url, :kind_of => String, :default => nil• Вызов ресурса # cookbooks/vagrant/recipies/default.rb vagrant_box ‘projectA’ do url ‘http://files.vagrantup.com/precise64.box’ action :install end
    13. Provider• Поведение ресурса # cookbooks/vagrant/providers/box.rb action :install do execute ‘downloading_box_#{new_resource.name}’ do user ‘root‘ cwd ‘/opt/boxes/‘ command "wget -s #{new_resource.url} -o #{new_resource.name}/box.box" creates "#{new_resource.name}/box.box" end execute ‘add_box_#{new_resource.name}’ do cwd ‘/opt/boxes/#{new_resource.name}/ command "vagrant box add box box.box && vagrant init box && vagrant up" end end
    14. Attribute• Многоуровненый хеш для хранения настроек• Добавление и изменение настроек # cookbooks/vagrant/attributes/default.rb default[‘vagrant’][‘box_path’] = ‘/opt/boxes/’ default[‘vagrant’][‘box_url’] = ‘http://files.vagrantup.com/precise64.box’ # cookbooks/vagrant/resources/box.rb ... attribute :url, :kind_of => String, :default => node[‘vagrant’][‘box_url’]
    15. Template• Является ресурсом• Создаёт файлы на основе erb-шаблона # cookbooks/vagrant/resource/box.rb ... template "#{node[‘vagrant’][‘box_path’]}/Vagrantfile" do source "Vagrantfile.erb " variables :name => new_resource.name end # cookooks/vagrant/templates/Vagrantfile.erb Vagrant::Config.run do |config| config.vm.box = "<% @name %>" end
    16. Role• Объеденяет кукбуки и рецепты в группы• Переопределение аттрибутов• Меньше букв для описания ноды # cookbooks/roles/base.json { ‘chef_type’: ‘role’, ‘json_class’: ‘Chef::Role’, ‘name’: ‘base’, ‘description’: ‘Base Role’, ‘run_list’: [ ‘recipe[apt]’, ‘recipe[sudo]’, ‘recipe[rvm],’ ‘recipe[nginx::source]‘ ], ‘default_attributes’: { ‘vagrant’: { ‘box_path’: ‘/var/vagrant_boxes/’ } } }
    17. DataBag• Key-value хранилище• Ещё меньше рутины
    18. Nodes• Описывает конкретную машину # cookbooks/nodes/mainframe.json { ‘chef_type’: ‘node’, ‘json_class’: ‘Chef::Node’, ‘name’: ‘mainframe’, ‘description’: ‘Mainframe Node’, ‘run_list’: [ ‘role[base], recipe[major_project::mainframe]‘ ], ‘attributes’: { ‘vagrant’: { ‘box_path’: ‘/tmp/vagrant_boxes/’ } } }
    19. Итоговая конфигурацияnodes / # Ноды mainframe.jsoncookbooks / # Кукбуки vagrant / attributes / # Значения по-умолчанию default.rb recipes / # Рецепты default.rb resources / # Ресурсы box.rb providers / # Провайдеры box.rb templates / # Шаблоны Vagrantfile.erbroles / # Роли base.rb
    20. Сетапим через Chef-Solo# cat ~/solo.rbfile_cache_path "/var/chef-solo" # Файловый кешcookbook_path "/var/chef-solo/cookbooks" # Директория с кукбукамиrole_path "/var/chef-solo/roles" # Директория с ролямиdate_bag_path "/var/chef-solo/data_bags" # Директория key-value хранилища# chef-solo -c ~/solo.rb -j ~/var/chef-solo/nodes/mainframe.json# echo ‘WooHoo’
    21. Ссылкиhttp://b23.ru/y5c6 - Chef Basics / Introduction to Cookbooks and Morehttp://b23.ru/y5c7 - Opscode / Community / Cookbookshttp://b23.ru/y5cr - GitHub / Opscode / Cookbooks

    ×