Introducción a la automatización en OpenStack

Alberto Molina Coballes y José Domingo Muñoz Rodríguez

Theme by: reveal.js

Automatización en Openstack

  • Cloud-init: Información que mandamos a las instancias en el momento de su creación.
  • Heat: Componente de orquestación de OpenStack

Cloud-init

  • Cloud-init es la aplicación que se ejecuta en nuestras instancias para obtener la información del servidor de metadatos.
  • Además de los datos preconfigurados que el servidor de metadatos ofrece a la instancia, podemos suministrar más datos cómo "Información de usuario".
  • Cloud-config: es el formato (YAML) de fichero que utilizamos para indicar la información adicional.
  
         
nova boot \
  --image trusty-server-cloudimg-amd64 \
  --key_name mykey \
  --flavor m1.small \
  --user-data userdata.txt \
  --nic net-id=4f0dcc21-4b6c-47db-b283-591fdb9aa5a7 \
  test0

¿Qué podemos hacer con cloud-config?

Gestionar los paquetes

  
         
#cloud-config

package_update: true
package_upgrade: true
packages:
  - apache2
    
        

¿Qué podemos hacer con cloud-config?

Crear usuarios

  
         
#cloud-config
users:
  - default
  - name: usuario
    gecos: "Usuario de OpenWebinars"
    groups: users
    lock-passwd: false
    passwd: $6$J.WwuZW.$e/e4gJCJhl22OqCTxwlclX7/C90z7iiNm0x4QYQxlHYcuixpi8ORxZSS6hSuvmNuKKAGD6AEevZaL4TnlchCf.
    shell: /bin/bash
    sudo: "ALL=(ALL) NOPASSWD:ALL"
      
        

¿Qué podemos hacer con cloud-config?

Escribir ficheros

  
         
#cloud-config
write_files:
- path: /etc/hosts
  permissions: '0644'
  content: |
    127.0.0.1 localhost
    ::1       ip6-localhost ip6-loopback
    fe00::0   ip6-localnet
    ff00::0   ip6-mcastprefix
    ff02::1   ip6-allnodes
    ff02::2   ip6-allrouters

    192.168.122.100 deploy.example.com deploy
    192.168.122.111 alice.example.com alice
      
        

¿Qué podemos hacer con cloud-config?

Ejecutar comandos

  
    
      #cloud-config
      bootcmd:
      - ntpdate pool.ntp.org
    
  

Documentación oficial de cloudinit

http://cloudinit.readthedocs.org/en/latest/

OpenStack Heat

Heat es el servicio de orquestación de OpenStack, nos permite gestionar recursos en nuestra infrestructura en la nube (instancias, volúmenes, redes,...) de forma automática.

Conceptos (I)

  • Stack: Es el conjunto de recursos que se van a crear con Heat (Instancias, volúmenes, redes, subredes, puertos, etc.)
  • Template: Sirve para definir los recursos del Stack y sus relaciones.
  • Parámetros: Es una de las secciones del template, y en ella podemos pedir información al usuario (imagen, par de claves, ...)
  • Resources: Siguiente sección del template donde definimos los recursos que vamos a añadir o modificar.

Conceptos (II)

  • Output: Tercera sección del template, que nos permite indicar la información que tenemos que ofrecer al usuario (ip flotante, ...)
  • HOT (Heat Orchestration Template), el formato de los templates en heat, escrito en YAML.
  • CFN (AWS CloudFormation), otro formato compatible con Heat, escrito en JSON.

¿Cómo funciona Heat? (I)

  • En el template describimos la la infraestructura que queremos crear.
  • Se describe cada uno de los recursos que necesitamos.
  • Heat ofrece un servicio de autoescalado, utilizando la información que nos ofrece el componente Ceilometer

¿Cómo funciona Heat? (II)

  • Se puede especificar también las relaciones que hay entre los recursos (volumen conectado a una instancia)
  • Heat maneja el ciclo de vida completo de la infraestructura, cuando necesitas cambiarla, solo hay que modificar el template y realizar la actualización del stack.
  • Heat gestiona infrestructura, pero los templates se pueden integrar con herramientas de automatización para realizar la configuración de los recursos.

Ejemplo de template

  
        
	  heat_template_version: 2013-05-23
	  
	  description: Simple template to deploy a single compute instance
	  
	  resources:
	    my_instance:
	     type: OS::Nova::Server
	     properties:
	       key_name: my_key
	       image: F18-x86_64-cfntools
	       flavor: m1.small
	
      

Community App Catalog

OpenStack - Community App Catalog