¿ Quiénes son ? Hemos de detenernos un instante para hacer …">

Pedro Jiménez's Blog

Un blog de muchas inquietudes

Openstack Installation - Librarian and Spiceweasel Part I - Hosted Chef

| Comments

¿ Quiénes son ?

Hemos de detenernos un instante para hacer meción especial a las 2 maravillosas gemas que nos harán la vida muy sencilla con OpenStack. Hablamos de “librarian” y de “spiceweasel”. Para que la presentación sea bastante más oficial debemos considerar que librarian será nuestro “cazador de cookbooks” y que spiceweasel será el que los aplique contra el Servidor de Chef que elijamos, bien sea público o privado. Además SpiceWeasel se encargará de aplicar roles/cookbooks a los nodos directamente. Con esta pequeña “joya” se pueden hacer despliegues verdaderamente veloces.

Librarian

Librarian-Chef is a bundler for infrastructure repositories using Chef. You can use Librarian-Chef to resolve your infrastructure’s cookbook dependencies, fetch them, and install them into your infrastructure repository.

Enlace: https://github.com/applicationsonline/librarian

SpiceWeasel

Provides a CLI tool for generating knife commands to build Chef-managed infrastructure from a simple JSON or YAML file.

Enlace: http://wiki.opscode.com/display/chef/Spiceweasel

Instalación

Así pues para poder automatizar tareas de instalación los utilizaremos a ambos. En la mayoría de los casos, la diferentes empresas como la nuestra, querrán poder realizar modificaciones a los “cookbooks” o al menos seleccionar la fuente desde la que descargarlos/utilizarlos.

Librarian

Necesitamos instalarlo como gema:

gem install librarian

Ahora entra en acción Librarian-Chef y su combinación con la estructura del chef-repo oficial de OpsCode. Como primer paso necesitamos descargar dicho repositorio desde GiT.

git clone https://www.github.com/cloudbau/openstack-chef-repo.git

En su contenido podremos especificarle desde dónde queremos descargar los cookbooks que se van a procesar dentro de nuestro “chef-repo”.

PODEMOS VER COOKBOOKS DE LA COMUNIDAD:
site 'http://community.opscode.com/api/v1'
cookbook 'ntp', '1.2.0'
cookbook 'openssh', '1.1.0'
...

O ESPECIFICARLOS MANUALMENTE:
cookbook 'osops-utils',
  :git => 'https://github.com/cloudbau/chef-osops-utils.git'

cookbook 'rabbitmq-openstack',
  :git => 'https://github.com/mattray/rabbitmq-openstack.git'

Con la lista completa de los cookbooks que necesitamos para un despligue cloud, “librarian” se encarga de descargarlos dentro de la estructura de nuestro repo.

operador@pedro-pruebas:~/openstack-chef-repo$ librarian-chef update
Installing apache2 (1.2.0)
Installing apt (1.5.0)
Installing aws (0.100.2)
Installing build-essential (1.1.2)
Installing openssl (1.0.0)
Installing mysql (1.3.0)
Installing postgresql (1.0.0)
Installing xfs (1.0.0)
Installing database (1.3.6)
Installing yum (1.0.0)
Installing erlang (1.1.0)
Installing ntp (1.2.0)
Installing openssh (1.1.0)
Installing rabbitmq (1.6.4)
Installing selinux (0.5.2)
Installing osops-utils (1.0.6)
Installing keystone (5.0.0)
Installing glance (5.0.0)
Installing horizon (5.0.0)
Installing sysctl (0.1.0)
Installing nova (5.0.0)
Installing mysql-openstack (1.0.4)
Installing rabbitmq-openstack (1.0.4)

SpiceWeasel

Se ha elegido en este primer post utiilzar el server hosted de Chef, aunque es cierto que la próxima vez utilizaremos un chef-server propio. Para aquellos que no tengan cuenta: http://www.opscode.com/

Una vez dentro hay que descargarse la clave privada del usuario elegido (user.pem), y también la clave la organización (organizaction.pem) que se usarán para realizar la subida contra nuestro repo privado de Chef en OpsCode.

Hay que tener la gema instalada de nuevo:

gem install spiceweasel

Hay que modificar las opciones del servidor de Chef en el archivo “config.rb”. Con los valores correctos de usuario / organización y teniendo las claves en el mismo directorio raiz del “chef-repo” procedemos a subirlos.


pjimenez@pedro-pruebas:~/openstack-chef-repo$ spiceweasel infrastructure.yml | sh

Uploading ntp          [1.2.0]
Uploaded 1 cookbook.
Uploading openssh        [1.1.0]
Uploaded 1 cookbook.
Uploading apt            [1.5.0]
Uploaded 1 cookbook.
Uploading yum            [1.0.0]
Uploaded 1 cookbook.
Uploading build-essential [1.1.2]
Uploaded 1 cookbook.
Uploading erlang         [1.1.0]
Uploaded 1 cookbook.
Uploading rabbitmq       [1.6.4]
Uploaded 1 cookbook.
Uploading openssl        [1.0.0]
Uploaded 1 cookbook.
Uploading mysql          [1.3.0]
Uploaded 1 cookbook.
Uploading postgresql     [1.0.0]
Uploaded 1 cookbook.
Uploading aws            [0.100.2]
Uploaded 1 cookbook.
Uploading xfs            [1.0.0]
Uploaded 1 cookbook.
Uploading database       [1.3.6]
Uploaded 1 cookbook.
Uploading apache2        [1.2.0]
Uploaded 1 cookbook.
Uploading selinux        [0.5.2]
Uploaded 1 cookbook.
Uploading sysctl         [0.1.2]
Uploaded 1 cookbook.
Uploading osops-utils    [1.0.6]
Uploaded 1 cookbook.
Uploading mysql-openstack [1.0.4]
Uploaded 1 cookbook.
Uploading rabbitmq-openstack [1.0.4]
Uploaded 1 cookbook.
Uploading keystone       [5.0.0]
Uploaded 1 cookbook.
Uploading glance         [5.0.0]
Uploaded 1 cookbook.
Uploading nova           [5.0.0]
Uploaded 1 cookbook.
Uploading horizon        [5.0.0]
Uploaded 1 cookbook.
Updated Environment production
Updated Role base!
Updated Role mysql-master!
Updated Role rabbitmq-server!
Updated Role keystone!
Updated Role glance-api!
Updated Role glance-registry!
Updated Role glance!
Updated Role nova-setup!
Updated Role nova-scheduler!
Updated Role nova-api-ec2!
Updated Role nova-api-os-compute!
Updated Role nova-volume!
Updated Role nova-vncproxy!
Updated Role horizon-server!
Updated Role single-controller!
Updated Role single-compute!
Updated Role allinone!

Si visitamos ahora la parte de “CookBooks” desde nuestra cuenta podremos ver la lista de todos ellos, accesibles ahora de manera pública en OpsCode Hosted Chef.

NOTA: nos queda pendiente aplicar además la parte de NODOS, aunque eso será para el próximo post, cuando además se haga con un servidor de Chef propio.

NOTA2: Con la versión nueva de la gema de Spiceweasel hay una modficación, en el archivo de “infrastructure.yml”, en la parte de los Cookbooks hay un cambio en la sintaxis:

 ANTES:
 - ntp: #used by base role
  - 1.2.0

 DESPUÉS:
 - ntp: #used by base role
  version: 1.2.0

Comments