Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Meet Chef!

Meet Chef!

A practical introduction to opscode chef, this talk was given at rubymeetup mvd.

Avatar for Sebastián Moreno

Sebastián Moreno

October 09, 2012
Tweet

More Decks by Sebastián Moreno

Other Decks in Programming

Transcript

  1. Chef: Que hace? Configuration management. Neither more nor less. Va

    a decidir: +Que conjunto de cosas vamos a instalar [cookbook] +Que se instala, como? [recipes, packages] +Que scripts se corren [recipes, bashscripts, rubyscripts] +Que archivos de configuración se tocan. [templates] +Que archivos se agregan [files] +Que configuraciones por defecto tendremos [attributes] Monday, November 5, 12
  2. Dos formas de usar Chef: +Corre recetas, no persiste atributos

    +Pros: +Facil de entender [cuando arrancas] +Mejor en ambientes chicos con pocos servers/cookbooks +Contras: +Se vuelve el proceso un poco manual +Las confs tienen que estar locales Chef Solo Monday, November 5, 12
  3. +Pros: + Corre centralmente, el client corre las recetas, atributos.

    + Tiene clients! knife, chef-client, web-console. + API rest consumible [yummy] +Contras: + Más dificil de setupear/entender al principio. Chef Server Monday, November 5, 12
  4. Chef en el filesystem - Workspace cookbooks/ /cookbook_name /attributes /files

    /recipes /templates /libraries /declarations roles/ /some_role nodes/ /some_node conf/ /solo.rb Monday, November 5, 12
  5. Cookbooks +Son la unidad básica de distribución. +Contienen: +recipes //lista

    ordenada de resources. +attributes //cosas que querés parametrizar (username, port, etc) +templates //configuraciones dinámicas +files //configuraciones estáticas +libraries //código ruby genérico. +Un cookbook puede incluir otro cookbook http://wiki.opscode.com/display/chef/Cookbooks Monday, November 5, 12
  6. Recipes +Lista ordenada de resources: +packages +cookbook_files +templates +muchos más

    + Se pueden incluir entre ellas. Un recipe puede incluir otro recipe. + Tener uno como default, e ir creando nuevos, es una buena práctica. http://wiki.opscode.com/display/chef/Recipes Monday, November 5, 12
  7. Resources - Capa de abstracción crossplattform - Es la principal

    work unit de un recipe http://wiki.opscode.com/display/chef/Resources package response file (packages desatendidos que requieren preguntas) Monday, November 5, 12
  8. Deploy // SCM // Git Más ejemplos de resources: Muchos

    más: +Cookbook File // Especifica un file estatico en el cookbook +Cron // Manejo de cronjobs +Directory // Acciones sobre directorios +File // Acciones sobre files +Remote File // Acciones sobre files de manera remota Monday, November 5, 12
  9. Roles +Agrupa recipes y atributos +Está pensado para aplicar a

    varios nodos +Ej: SQLServer, WebApp. http://wiki.opscode.com/display/chef/Roles Monday, November 5, 12
  10. Nodes +Agrupa recipes y atributos igual que los Roles, pero

    está pensado para una maquina sola +Ej: RailsStack, Django, Java, Whatever (todas pertenecen al nodo WebApps por ejemplo) http://wiki.opscode.com/display/chef/Nodes Monday, November 5, 12
  11. Attributes + Se definen defaults que se usan en los

    recipes. + Se hacen overrides en orden: atributos -> roles -> nodos -> recipe http://wiki.opscode.com/display/chef/Attributes Monday, November 5, 12
  12. Chef Server +Indexa atributos y permite persistencia si cambian los

    valores. +Permite buscar, por ejemplo: "Dame todos los nodos que cumplan determinadas caracteristicas [que estén en tal subnet, os ubuntu y sean nodo rails]" +Los cookbooks se bajan de acá si usas chef-client. http://wiki.opscode.com/display/chef/Chef+Server Monday, November 5, 12
  13. Knife (client) Cliente de chef-server +Permite manipular nodos (correr comandos

    ssh, aplicar recipes) para nodos que cumplen con ciertas condiciones de búsqueda. +Puede bajar cookbooks ya empacados por otros. +Sube cookbooks al server +Puede modificar atributos de nodos +Puede modificar y subir databags +Soporte para plugins (ec2, openstack) http://wiki.opscode.com/display/chef/Knife Monday, November 5, 12
  14. Como instalo y corro Chef? apt-get install -y ruby ruby-dev

    build-essential libopenssl-ruby ssh wget git-core rdoc cd /tmp wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.24.tgz tar xvf rubygems-1.8.24.tgz cd /tmp/rubygems-1.8.24 ruby setup.rb gem1.8 install chef --no-rdoc --no-ri git clone https://github.com/sebastianmoreno/chef-gitorious.git cd chef-gitorious chef-solo -c conf/solo.rb -j nodes/gitorious.json $* Monday, November 5, 12