PDF de programación - Chef

Imágen de pdf Chef

Chefgráfica de visualizaciones

Publicado el 25 de Junio del 2017
878 visualizaciones desde el 25 de Junio del 2017
930,5 KB
25 paginas
Creado hace 10a (24/06/2013)
Juan Antonio Beato Quiñones

Índice

 Introducción
 ¿Qué es Chef?
 Principales Ventajas
 Conceptos Básicos
 ¿Cómo lo uso?

◦ Hosted Chef
◦ Chef-Solo
◦ Chef-Server y Chef-Client

 Administración

◦ Chef-Server-Webui
◦ Knife

 Cookbooks
 Recipes

Introducción

El crecimiento de internet cada día es mayor y al igual que la demanda

en las empresas del sector.

Los CPDs cada vez son mayores y surgen los problemas de

administración:

 Gran número de servidores.
 Configuración manual.
 Mayor posibilidad de error.
 Perdida de tiempo.

Introducción

¿Qué es Chef?

 Chef

automatización de

es un sistema de

infraestructura
desarrollando por Opscode que hace más fácil desplegar servidores
y aplicaciones a cualquier ubicación física, virtual o en la nube, sin
importar el tamaño de la infraestructura.

 Es software libre bajo licencia Apache 2.0.

 Esta escrito en Ruby y Erlang.

 Cada organización se compone de uno (o más) Workstations

(estaciones de trabajo), un único servidor, y cada uno de los nodos
que va a ser configurado y mantenido por Chef.

Principales Ventajas

 Económica: Chef ahorra dinero al usuario al permitir que negocio

pueda soportar infraestructuras mas grandes y complejas con menos
mano de obra. Hacemos mas con menos.

 Eficiencia: La automatización de una infraestructura con Chef

significa no tener que volver a repetir la configuración.

 Escalabilidad: facilidad para el crecimiento de la infraestructura.

Conceptos Básicos

 Node: Es cualquier servidor, servidor virtual o instancia que este

configurada para ser mantenido por chef-client.

 Workstation: Es una máquina que está configurada para usar knife,

sincronizar con los repositorios y con el chef-server.

 Role: Es una forma de definir atributos y recetas que queremos que

se ejecuten en uno o varios nodos como una sola forma de trabajo.

 Cookbook: Es la unidad fundamental de la distribución de
configuración y políticas de Chef, define un escenario con todo lo
necesario para realizar las instalaciones, configuraciones, etc..

Conceptos Básicos

 Recipe: Es el elemento de configuración más importante dentro del

entorno Chef.

◦ Están escritas en Ruby.

◦ Debe definir todo lo que queremos configurar de un sistema.

◦ Se almacenan en Cookbooks.

◦ Pueden incluirse en otras recetas .

◦ Puede depender de una o varias recetas.

Conceptos Básicos

 Attributes: Un atributo es un detalle especifico de un nodo, se puede definir

en un cookbook o recipe.

 Run-list: Es una lista en el que se pone los roles o recetas que queramos que

se ejecute, se ejecutarán en el orden que pongamos.

 Databags: Es una variable global definida en un fichero JSON y que es

accesible por un Chef-server y cargada en recetas.

 Environs: Es una forma de mapear u organizar el trabajo.

 Ohai: Es una herramienta que utiliza el servidor para detectar ciertas

propiedades de cada nodo para después proporcionarlos al chef-client durante
la ejecución de este.

¿Cómo lo uso?

Chef nos proporciona 3 opciones:

• Hosted Chef

• Chef-Solo

• Private Chef

Hosted Chef

 Nos proporcionan un Chef-server al que nos conectaremos desde
nuestra máquina con el par de claves que nos proporcionan en la
web, nosotros tendríamos nuestro Workstation que sincronizará con
el servidor.

 La versión FREE nos permite administrar hasta 5 servidores, estos

son los precios:

Chef-Solo

 Es una versión de código abierto de Chef que permite usar recetas
en nodos que no tienen acceso a un Chef-Server. Se ejecuta
localmente y necesita tener la recetas en la máquina y todas sus
dependencias.

 Chef-Solo no incluye las siguiente funcionalidades:

◦ Almacenamiento de datos de los nodos.
◦ Distribución centralizada de Cookbooks.
◦ Autenticación y Autorización
◦ Una API centralizada que interactúa con los integrantes de la infraestructura

Chef-Server y Chef-Client

Administración

Para la administración de los nodos, cookbooks, etc… del Chef-Server

podemos utilizar:

 Chef-Server-Webui: es la interfaz web para la administración del

servidor. Está escrita en Ruby.

 Knife: es una interfaz por línea de comando integrada en Chef y

que se comunica con Chef-Server a través de la REST API.

Chef-Server-Webui

Knife

 Crear nodos, roles, cookbooks, etc…

knife (node|role|cookbook) create NAME

 Eliminar nodos, roles, cookbook, etc…

knife (node|role|cookbook) delete NAME

 Editar nodos, roles, cookbook, etc…

knife (node|role|cookbook) edit NAME

Knife

 Añadir coobooks y recipes a roles o nodos

knife node run_list add (NODE|ROLE)

'recipe[COOKBOOK::RECIPE]'

 Eliminar coobooks y recipes a roles o nodos

knife node run_list remove (NODE|ROLE)

'recipe[COOKBOOK::RECIPE]‘

 Actualizar listado de cookbooks

knife cookbook upload -a

Cookbooks

Estructura de directorios de un cookbook:

 Attributes: Aquí definiremos los atributos del cookbook en un

fichero ruby.

 Files: En este directorio pondremos los ficheros estáticos que

queramos incluir en los nodos.

 Templates: En este directorio se almacenaran los archivos

dinámicos que utilizaremos en el despliegue de la receta.

 Recipes: Directorio en el que se almacenan las recetas del

cookbook.

Cookbooks

 Ubicación :

En Chef-Solo indicamos la ubicación de los cookbooks en el fichero solo.rb

con las siguientes líneas:

file_cache_path "/root/chef-solo"

cookbook_path "/root/chef-repo/cookbooks"

En Chef-Server

cookbooks,
“/root/.chef/knife.rb”

lo

en

debemos indicarle a knife donde se encuentra los
haremos
ruta,

siguiente

fichero

un

en

la

cookbook_path "/root/chef-repo/cookbooks"

Cookbooks

 Orden de ejecución:

En Chef-Solo indicamos el orden en el que queremos que se ejecuten

los cookbooks en el fichero web.json:

{ "run_list": [ "recipe[apt]",

"recipe[soloword]" ] }

En Chef-Server el orden en el que se ejecutarán va definido en

run_list del propio nodo o del role que le hayamos asignado.

Recipes

 Instalar un paquetes:

package “apache2" do

action :install

end

 Iniciar, parar o reiniciar un servicio:

service "apache2" do

action :stop

end

Recipes

 Ejecutar un comando:

execute "crear_run" do

command "mkdir /var/run/haproxy/"

not_if "find /var/run/haproxy"

action :run

end

Recipes

 Llamar a otra receta:

include_recipe "balanceador::install"

 Crear un fichero en el nodo con uno de los ficheros estáticos:

cookbook_file "/etc/default/haproxy" do

source "haproxy-default"

owner "root"

group "root"

mode 00644

end

Recipes

 Crear un fichero en un nodo utilizando una de las plantillas:

template node['lb']['conf'] + '/haproxy.cfg' do

source 'conf.erb'

mode 00644

owner 'root'

group 'root'

variables(

:balan => node['lb']['balan'],

:ip1 => node['nodo1']['ip1'],

:ip2 => node['nodo2']['ip2'])

end

Bibliografía

 https://learnchef.opscode.com/
 http://docs.opscode.com/chef_overview.html
 http://wiki.opscode.com/display/chef/Installing+Chef+Server+on+

Debian+or+Ubuntu+using+Packages

 http://wiki.opscode.com/display/chef/Installing+Chef+Client+on+U

buntu+or+Debian
  • Links de descarga
http://lwp-l.com/pdf4635

Comentarios de: Chef (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad