Created
November 25, 2009 10:18
-
-
Save therobot/242616 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Taller de Chef: Administra sistemas como Ferran Adriá cocina | |
## Qué es Chef | |
- ¿Que es? | |
Framework de integración de sistemas. Nos proporciona recursos y asbtracciones de alto nivel para | |
manejar nuestra máquina. | |
- ¿Para que Sirve? | |
- Consistencia de nuestra plataforma. | |
- Mayor control de la plataforma. | |
- Flexibilidad sin pérdida de control | |
- Control de versiones de la configuración. | |
- Arquitectura: http://wiki.opscode.com/display/chef/Anatomy+of+a+Chef+Run | |
## Instalación de Chef | |
- Bajar virtualbox: http://www.virtualbox.org/wiki/Downloads | |
- Bajar la maquina: http://dl.dropbox.com/u/265209/chef.zip | |
### Instalamos chef-server | |
- Editamos /etc/apt/sources.list y añadimos: | |
deb http://apt.opscode.com intrepid universe | |
- Ejecutamos | |
sudo apt-get install curl git-core apg | |
curl http://apt.opscode.com/[email protected] | sudo apt-key add - | |
sudo apt-get update | |
- Instalamos chef-server en la maquina administrativa | |
sudo apt-get install rubygems ohai chef chef-server | |
- Arreglamos un bug con los startup links ya que couchdb se arranca despues que chef. | |
sudo update-rc.d -f couchdb remove | |
sudo update-rc.d couchdb defaults 15 | |
sudo update-rc.d -f stompserver remove | |
sudo update-rc.d stompserver defaults 15 | |
### Registramos y Validamos chef-server | |
Es necesario disponer de un identificador único para cada máquina chef usa ohai para extraer el fqdn del hostname | |
- Editamos el fichero /etc/hosts para dejarlo asi: | |
127.0.0.1 planet-waves.wadus localhost | |
127.0.1.1 planet-waves.wadus | |
- Editamos el fichero /etc/hostname para dejarlo asi: | |
planet-waves.wadus | |
- Ejecutamos: | |
sudo hostname planet-waves.wadus | |
- Editamos el fichero /etc/chef/server.rb | |
e - Editamos el parametro validation_token, creando para ello un token con por ejemplo apg -m 40 | |
- Reiniciamos el servidor: | |
sudo /etc/init.d/chef-server restart | |
- Registramos nuestro nodo server, ejecutando: | |
sudo chef-client -t validation_token | |
- Accedemos al webui y registramos el nodo, vamos a Registrations y ahi vemos el nodo. | |
http://192.168.56.10:4000 | |
### Instalamos un cliente | |
- Editamos /etc/apt/sources.list y añadimos: | |
deb http://apt.opscode.com intrepid universe | |
- Ejecutamos: | |
sudo apt-get install curl | |
curl http://apt.opscode.com/[email protected] | sudo apt-key add - | |
sudo apt-get update | |
- Tecleamos: | |
sudo apt-get install rubygems ohai chef | |
### Registramos y validamos un cliente | |
- Editamos el fichero /etc/hosts para dejarlo asi: | |
127.0.0.1 web1.wadus localhost | |
127.0.1.1 web1.wadus | |
- Editamos el fichero /etc/hostname para dejarlo asi: | |
web1.wadus | |
- Ejecutamos: | |
sudo hostname web1.wadus | |
### Configuramos un cliente: | |
- Editamos el fichero de configuración, con los parametros del servidor. | |
/etc/chef/client.rb | |
- Tecleamos: | |
sudo chef-client -t validation_token | |
- Editamos el script que lanza el fichero para reducir el intervalo. | |
- Lanzamos el demonio cliente | |
sudo /etc/init.d/chef-client start | |
### Sintaxis y Configuración de Servidores con Chef | |
- ¿Que hay dentro de un cookbook? | |
- Nodes: Donde se aplican las recetas, básicamente nuestras máquinas. | |
- Atributes: Nos permiten usar "variables" en las recetas. | |
¿Como se definen?: http://wiki.opscode.com/display/chef/Attributes | |
- Templates: Son templates de erb, junto con los atributos nos permiten crear ficheros personalizados. | |
¿Como se definen?: http://wiki.opscode.com/display/chef/Templates | |
- Files: Archivos de texto que se deployan tal y como esta. | |
En este punto hablamos de: File/Template Location Specifity: | |
Nos permiten adaptar nuestros cookbooks a diferentes sistemas operativos, versiones diferentes de un mismo sistema o incluso hosts sueltos. | |
http://wiki.opscode.com/display/chef/Files#Files-FileSpecificity | |
- Resources: Unidad básica de trabajo en chef, Ficheros, Servicios, Usuarios... | |
Explicamos los recursos: http://wiki.opscode.com/display/chef/Resources | |
- Recipes: Combinación de todo lo anterior para producir resultados. | |
http://wiki.opscode.com/display/chef/Resources | |
- Roles: Conjunto de recetas comunes a una funcionalidad de una máquina. | |
- Casi todo el tiempo escribes cookbooks | |
- Extra: | |
- Definitions: Permiten crear nuevos recuros combinando recursos existentes: | |
http://wiki.opscode.com/display/chef/Definitions | |
- Libraries: Clases de ruby hechas por el usuario. | |
- Metadata: Define dependencias. | |
- Nos bajamos el esqueleto de un repo chef, para ello ejecutamos en el master: | |
git clone git://github.com/opscode/chef-repo.git | |
cd chef-repo | |
rake | |
- Como creamos un libro de cocina? | |
rake new_cookbook COOKBOOK=nombre | |
- Creamos el cookbook de rails y el cookbook de ruby: | |
rake new_cookbook COOKBOOK=rails | |
rake new_cookbook COOKBOOK=ruby | |
rake new_cookbook COOKBOOK=apt | |
rake new_cookbook COOKBOOK=common_tools | |
- Editamos las recetas del repositorio apt: | |
- Editamos apt/recipes/default.rb (aqui podriamos añadir tambien cosas com añadir claves de apt descargando la clave y ejecutando el comando apt-key) | |
- Editamos apt/files/default/sources.list | |
- Verificamos la validez de las recetas: | |
rake test_recipes | |
- Consejo: configurar chef-client con el log en debug al escribir y depurar recetas | |
- Instalamos las recetas en el servidor Chef: | |
rake install | |
- Actualizamos el nodo: | |
sudo chef-client | |
- Comiteamos los ficheros. | |
git add cookbooks/* | |
git commit cookbooks/ -m 'Feat: initial chef structure' | |
### Caso práctico: Desplegando toda la potencia de chef | |
- Descargamos el repo: | |
git clone git://github.com/therobot/chef-repo.git | |
- Contamos las recetas. | |
apt, base, ruby, ree, security, monitoring, backups, sudoers, users, apache | |
- Vamos al interfaz web y añadimos el rol al nodo, guardamos y ejecutamos. | |
- Mas recetas: Compartid las vuestras! | |
http://github.com/opscode/cookbooks | |
http://github.com/37signals/37s_cookbooks | |
http://github.com/engineyard/ey-cloud-recipes | |
http://robotplaysguitar.com | |
## Preguntas |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment