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.

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