Crear soluciones en IBM SmartCloud Enterprise: Mejores prácticas y herramientas

Administrando la TI empresarial de manera más eficaz

Un paquete de software es un colección de archivos de instalación de software, archivos de configuración y metadatos que se pueden desplegar en una instancia de máquina virtual. En este primer artículo de una serie, los autores presentan una visión general de los conceptos de administración de imagen y de paquetes de software, explican el modelo de recursos, comparan esta plataforma con otras plataformas de administración de paquetes de software, discuten casos de uso y examinan las herramientas disponibles. Los conceptos se ilustran con el ejemplo de utilización de una aplicación de calculadora de ahorro de energía.

Esta serie de artículos describe el uso de paquetes de software, administración de imágenes y otras herramientas de IBM® SmartCloud Enterprise para resolver problemas prácticos en la administración de TI empresarial.

Alex Amies, Senior Software Engineer, IBM

Alex Amies photoAlex Amies es ingeniero senior de software en Laboratorio de desarrollo de China de IBM GTS Development Lab. Actualmente es un arquitecto que participa en el desarrollo de IBM SmartCloud Enterprise. Anteriormente se desempeñó como arquitecto y desarrollador de seguridad y productos en nube junto a otros grupos de IBM.



Alexei Karve, Research Scientist, I.B.M.

Alexei es miembro del equipo de diseño de SmartCloud Enterprise con énfasis en paquetes de software, ICON, VPN/VLAN para sistemas de soporte a negocios en la nube. Está basado en EE.UU.



Andrzej Kochut, Ph.D., Research Staff Member, IBM

Andrew es miembro del equipo de diseño de SmartCloud Enterprise enfocado en sistemas de soporte a negocios. Está basado en EE.UU.



Hidayatullah Shaikh, Senior Technical Staff Member, I.B.M.

Shaikh es IBM Master Inventor y técnico principal de Business Support Systems para ofertas de IBM SmartCloud Enterprise y Enterprise+, basado en EE.UU.



Qiangguo Tong, Advisory Software Engineer, IBM

Qiang Guo Tong entró a IBM en 2004. Es uno de los líderes del equipo de desarrollo de IBM SmartCloud Enterprise, responsable por la creación de nuevos recursos. También es el arquitecto de la solución de habilitación de globalización de SmartCloud. Su experiencia técnica abarca las tecnologías de globalización y también de JavaEE. Tiene más de ocho años de experiencia en desarrollo de aplicaciones basadas en arquitectura JavaEE y se concentra en tecnologías Web 2.0 como Dojo y JSON-RPC.



Randy Rendahl, Senior Engineer, IBM

Randy es Master Inventor y miembro del equipo de diseño de SmartCloud Enterprise. Actualmente se concentra en servicios de soporte a negocios con especialización en áreas de facturación y clasificación, habilitación de procesos de negocio y diseño de modelos de datos de BSS. Basado en Research Triangle Park, NC, Randy tiene un amplio conocimiento de toda la tecnología de BSS en la nube cimentado en un pasado largo y variado en el ámbito de la administración de sistemas desde que entró a IBM en 1989.



Scott Peddle, Advisory Software Developer, IBM

Photo of Scott PeddleScott Peddle es desarrollador consultor de software en IBM SmartCloud Enterprise. Scott lidera proyectos enfocados a la integración de Rational Asset Manager en un entorno de nube. La experiencia de Scott incluye la conducción de un proyecto de integración para herramientas de WebSphere BPM, como WebSphere Business Modeler y WebSphere Integration Developer, mediante Rational Asset Manager. Scott también fue ingeniero de release de productos Rational de diseño y construcción, como Rational Software Architect y Rational Application Developer.



31-07-2012

Uno de los objetivos de la computación en nube es permitir una variada selección de recursos de trabajo para consumidores en la nube, otro objetivo es mantener las tareas de soporte en un nivel manejable para los equipos de desarrolladores de software e imágenes. Puede parecer que estos dos objetivos son excluyentes entre sí, sin embargo esta serie (consulte visión general de la serie) demuestra cómo el uso y la administración eficaz de paquetes de software y recursos de imagen pueden posibilitar estos dos objetivos.

Este artículo:

  • Proporciona una visión general de los conceptos de administración de paquetes de software e imágenes.
  • Explica el modelo de recursos.
  • Compara este modelo con otras plataformas de administración de paquetes de software.
  • Discute casos de uso.
  • Examina las herramientas disponibles.

Los conceptos se ilustran con el ejemplo de utilización de una aplicación de calculadora de ahorro de energía. Aprenda cómo implementar una solución simple, incluyendo una muy pequeña cantidad de código Python e instrucciones para el desarrollo de un paquete RPM. Lea cómo implementar ese paquete de software en una máquina virtual en la nube. Los artículos subsiguientes de la serie investigarán las herramientas individuales, APIs y casos de uso con más detalles, utilizando el mismo ejemplo de aplicación.

Este artículo es adecuado para los usuarios de la nube y planificadores que quieren saber cómo administrar los recursos de la nube de manera eficaz y sostenible. No es necesario tener conocimientos de programación. Aunque se proporcionan algunos ejemplos de script muy cortos, todos los antecedentes necesarios son explicados. Los ejemplos utilizan Linux® pero fácilmente pueden ser adaptados para funcionar en Windows®.

Esta serie describe el uso de paquetes de software, administración de imágenes y otras herramientas en IBM SmartCloud Enterprise para resolver problemas prácticos en la administración de TI empresarial; se demuestran diferentes recursos y herramientas disponibles en la nube mediante un ejemplo de aplicación de calculadora de ahorro de energía.

Entre los temas futuros se incluyen:

  • Visión general de paquetes de software y administración de imágenes en IBM Enterprise SmartCloud.
  • Importación de imágenes en IBM SmartCloud Enterprise.
  • Administración de paquetes de software mediante ICCT in IBM SmartCloud Enterprise.
  • Administración de paquetes de software mediante APIs de IBM SmartCloud Enterprise.
  • Administración de paquetes de software mediante CohesiveFT in IBM SmartCloud Enterprise.
  • Habilitación de servicios empresariales mediante IBM Workload Deployer en IBM SmartCloud Enterprise.
  • Resumen de casos de uso para administración de paquetes de software e imágenes.
  • Copia de imágenes de IBM SmartCloud Enterprise.
  • Creación de un servicio empresarial en IBM SmartCloud Enterprise.

Contexto para empezar

En el contexto de IBM SmartCloud Enterprise, un paquete de software es un colección de archivos de instalación de software, archivos de configuración y metadatos que se pueden desplegar en una instancia de máquina virtual.

Se pueden crear y administrar paquetes de software en SmartCloud Enterprise mediante IBM Image Construction and Composition Tool (ICCT), APIs de SmartCloud Enterprise REST y herramientas de terceros.

El software de imágenes en máquinas virtuales normalmente viene preinstalado y configurado por el desarrollador de las imágenes. Un problema con este enfoque "liofilizado" es la posibilidad de que no se encuentre una imagen con la combinación de software que se desea. Esto puede llevar al "hágalo usted mismo" donde se elige una imagen de máquina virtual lista para usar y se considera como una base para instalar software propio. Esto puede conducir a una proliferación de imágenes de máquina virtual, conocido en los círculos de TI como dispersión de imágenes de máquina virtual.

Otro problema es que las imágenes de máquinas virtuales diseñadas para casos de uso específicos no suelen ser muy útiles para escenarios distintos del pretendido por el desarrollador de las imágenes. SmartCloud Enterprise provee un puente que cruza la brecha entre el enfoque liofilizado y el enfoque hágalo usted mismo mediante parámetros de máquina virtual, scripts de activación y paquetes de software para crear imágenes de plantilla en SmartCloud Enterprise.

Otra solución más portátil es IBM Image Construction and Composition Tool (ICCT), una herramienta independiente que puede añadir software en máquinas virtuales. ICCT ahora se incluye con IBM Workload Deployer 3.1, IBM SmartCloud Provisioning 1.2 e IBM SmartCloud Enterprise. ICCT almacena imágenes como paquetes de Open Virtual Format Archive (OVA) que se pueden desplegar mediante productos IBM Workload Deployer 3.1, IBM SmartCloud Enterprise y VMware.

Las imágenes de máquina virtual pueden contener:

  • Sistemas operativos
  • Middleware
  • Aplicaciones
  • Configuraciones específicas de usuario

A medida que se añaden más elementos a una imagen, esta se convierte en menos reutilizable; mientras menos reutilizable es una imagen individual, aumenta la probabilidad de que se termine con más imágenes. Y, tangencialmente (pero, sin embargo, un concepto importante), cuanto menos elementos se incluyen en una imagen, menos útil resulta la imagen para los usuarios de la nube.

Decidir qué incluir en una imagen y cómo transformarla en una plantilla son dos tareas fundamentales en el arte del desarrollo de imágenes.


Modelo de recursos de SmartCloud Enterprise

Un modelo simplificado de recursos lógicos se muestra en la Figura 1.

Figura 1. Modelo de recursos de imágenes y paquetes de software
Modelo de recursos de imágenes y paquetes de software

Las descripciones de los recursos, atributos y relaciones se muestran en la Tabla 1.

Tabla 1. Descripciones de recursos, atributos y relaciones
RecursoDescripciónAtributos y relaciones
ImagenUn archivo binario que se puede almacenar, para el cual se crea una instancia en una instancia de máquina virtual y metadatos para describirlo.Una imagen se almacena en una ubicación. El estado indica si está utilizable o en transición. Una imagen para la cual se puede crear una instancia.
UbicaciónUn centro de datos o una ubicación donde las máquinas físicas son almacenadas.Imágenes, instancias y VLANs deben ser ubicadas juntas.
InstanciaUna máquina virtualEl proceso de aprovisionamiento toma una imagen y un Tipo de Instancia y, opcionalmente, direcciones y volúmenes, como entrada para crear una instancia de ejecución. El estado indica si está en ejecución u otra condición.
Tipo de InstanciaUna plantilla para los recursos asociados a una máquina virtual.Cantidad de CPUs virtuales, memoria, discos y arquitectura (32 o 64 bits).
SoftwareBundleScripts de instalación y activación y, opcionalmente, archivos binarios y otros recursos que puedan instalarse.Un SoftwareBundle puede añadirse a una imagen. Al crearse una instancia para esa imagen, el SoftwareBundle y los scripts de activación se inyectan en el sistema de archivos de la máquina virtual.
VolumenUn dispositivo de almacenamiento de bloque virtual en el que se puede almacenar datos e imágenes.Un volumen puede unirse a una instancia durante el aprovisionamiento o más tarde cuando se esté ejecutando. Los datos de un volumen no pueden accederse a menos que esté unido a una instancia.
DirecciónUna representación de una dirección IP que se puede administrar como un recurso independiente.Una dirección puede unirse a una instancia. La dirección siempre se asociará a una VLAN.
VLANUna red virtual de área local o subred.Las VLANs pueden ser públicas o privadas, solo permiten una conexión mediante una VLAN o máquina virtual multidirecciones.
ClaveUna representación de una clave SSH; la clave privada debe ser guardada por el usuario; la nube pone a disposición la clave pública y permite al usuario generar una nueva clave siempre que sea necesario.Una clave será incorporada a las máquinas virtuales Linux durante el aprovisionamiento y antes de la inicialización.

Sistemas de administración de paquetes de software

La administración de paquetes de software es un aspecto crítico de la administración de sistemas computacionales, incluida la administración de sistemas en nubes. La administración de paquetes en un contexto de nube es especial debido a que se interactúa con instancias de máquina virtual que son aprovisionadas dinámicamente. Esto permite una oportunidad para aprovisionar software adicional al instante y también eleva las expectativas de los usuarios de que el sistema "funcionará".

Los sistemas de administración de paquetes de software en nube tienen un concepto semejante y pueden incluir sistemas de administración de paquetes que se integran con algunas plataformas de desarrollo de software y sistemas operativos.

Esta sección traza las líneas generales de los sistemas de administración de paquetes de software Linux y las aplica a los sistemas en nube. Explica un ejemplo que crea un módulo de software en Python, lo empaqueta como un RPM y lo inyecta en una máquina virtual basada en nube en tiempo de aprovisionamiento.

Administración de paquetes RPM y YUM

Red Hat Package Manager (RPM) fue desarrollado por Red Hat en la década de 1990 y es una parte de la Base Estándar de Linux. También ha sido portado a otros sistemas operativos como IBM AIX®:

  • Ayuda a mantener la coherencia entre paquetes
  • Puede utilizarse para obtener información sobre los paquetes instalados
  • Comprueba la autenticidad de los paquetes mediante firmas criptográficas
  • Actualizaciones de paquetes ya instalados
  • Puede recuperar paquetes desde la Internet

Existen varios front-ends para RPM, incluyendo Yellow Dog Updater Modified (YUM), up2date, Zypper y Smart Package Manager. RPM se utiliza principalmente en Red Hat Enterprise Linux, CentOS y Fedora. Para los sistemas basados en Debian, incluyendo SUSE y Ubuntu, se utiliza la administración de paquetes de Debian.

YUM fue desarrollado en la Universidad de Duke (EE.UU.) como un front-end para permitir a RPM administrar sistemas Red Hat Linux. YUM suministra a RPM funciones adicionales de actualización automática y administración de dependencias, además funciona con repositorios de paquetes de software centralizados. Aunque RPM entiende las dependencias, no las soluciona. Este es un problema donde YUM ayuda considerablemente..

Para instalar un paquete con el comando rpm mediante la opción -i :

# rpm -i <package-name>

Si existen dependencias que son necesarias el comando rpm no funcionará Se debe tener autoridad de raíz para instalar, eliminar o actualizar paquetes.

Para instalar un paquete con YUM utilice el comando yum con la opción install . Por ejemplo, para instalar dos2unix:

# yum install dos2unix

Si existen dependencias que son necesarias, entonces YUM las instalará automáticamente.

Administración de paquetes Debian

Advanced Packaging Tool (APT) es el sistema de administración de paquetes utilizado por los sistemas Debian, incluyendo SUSE y Ubuntu. Así como para RPM y YUM, los datos del paquete se almacenan en una base de datos centralizada.

Se puede instalar un paquete con el comando apt-get install . Para instalar el paquete dos2unix :

# apt-get install dos2unix

apt-get encuentra la información del paquete en el repositorio remoto, determina las dependencias, descarga el paquete y lo instala.

Módulos Python

Python cuenta con funciones integradas para la distribución e instalación de módulos. Para instalar y consumir software Python, estos recursos son fácilmente utilizados para descarga y descompresión de un módulo, además de ejecutar el comando setup. Python es un lenguaje conveniente para demostrar la distribución de software y el proceso de administración del software del ejemplo. No es necesario saber nada sobre Python para la comprensión de este artículo más allá de lo explicado en esta sección.

Antes de empezar, algunos términos básicos de reutilización del código Python se listan en la Tabla 2.

Tabla 2. Términos de reutilización del código Python
TérminoDescripción
MóduloUna unidad de código reutilizable en Python.
Módulo Python puroUn módulo escrito en Python contenido en un archivo denominado module.py.
PaqueteUn directorio con uno o más módulos Python puros que contienen un archivo de inicialización __init__.py.
Módulo de extensiónUn módulo escrito en C/C++ o en código Java™ para Jython.
Módulo de distribuciónUna colección de módulos distribuidos como un recurso único. Esto es equivalente a un paquete de software en muchas otras plataformas y en el sentido general del término.

Para instalar un módulo Python:

# python setup.py install

Normalmente, esto se hace como raíz e instala el módulo en el directorio {INSTALL_ROOT}//site-packages, por ejemplo, /usr/lib/python2.6/site-packages. Alternativamente, se puede instalar como un usuario regular en el árbol de directorio inicial del usuario, con el comando:

$ python setup.py install --user

Python ofrece el kit de herramientas Distutils para ayudar a los creadores de módulos a distribuir sus softwares que posibilitan estos comandos.


El código de ejemplo: un módulo de distribución Python

Vamos a crear un módulo Python y un script de instalación que se probarán al hacer la instalación. El paquete es una calculadora de energía denominada ecalc que contiene solo el módulo energy_calculator con la clase EnergyCalculator. En este sencillo ejemplo, el código imprime sólo algunos datos de muestra; no obstante, es fácil aplicar los mismos conceptos a un escenario más complejo donde es necesario un sistema de administración de paquetes de software altamente organizado.

El código para la clase EnergyCalculator es:

# energy_calculator.py """ energy_calculator module for computing energy usage """

class EnergyCalculator: """EnergyCalculator class"""

    def __init__(self): self._base = 200

    def energy_used(self): return self._base

Para invocarlo desde el cliente calculadora de energía:

#!/usr/bin/python # energy_client.py

""" EnergyCalculator client """

from energy_calculator import EnergyCalculator

ec = EnergyCalculator() print("You used {0} kJ today".format(ec.energy_used()))

Cuando invocado, la salida del ejemplo es:

$ ./energy_client.py You used 200 kJ today

Primero, cree el script de configuración:

# setup.py
# Setup script for libenery

from distutils.core import setup
setup(name='libenergy',
      version='0.1',
      py_modules=['energy_calculator'],
      )

A seguir, cree el módulo de distribución:

$ python setup.py sdist

El comando del script de configuración en el ejemplo anterior crea un paquete de distribución de origen. Crea un directorio dist con un archivo comprimido, libenergy-0.1.tar.gz, que se puede utilizar para la instalación del paquete. No incluye el script cliente energy_client.py. Advierte de la falta de información sobre el creador, URL y README. El comando también crea un manifiesto en el archivo MANIFEST que se incluye en el archivo TAR. Para copiar el archivo libenergy-0.1.tar.gz en su máquina virtual, utilice el comando de copia segura:

$ scp -i ${key} libenergy-0.1.tar.gz idcuser@${vm}:libenergy-0.1.tar.gz

El comando supone que se trabaja en Linux. Para Windows es semejante, pero es necesario instalar el comando scp . Está incluido con OpenSSH. Utiliza la clave de SSH ${key} para copiar el archivo a la máquina virtual con nombre de host o dirección de IP ${vm} como idcuser. Defina las variables de shell para estos, lo que evita volver a escribir los valores. En seguida, es posible desempaquetarlo e instalarlo remotamente con el siguiente comando, que se ejecuta desde el directorio dist:

$ ssh -i ${key} idcuser@${vm} 'gunzip libenergy-0.1.tar.gz; 
 tar -xvf libenergy-0.1.tar; cd libenergy-0.1; sudo python setup.py install'

Este script de SSH ejecuta la descompresión del paquete de manera remota y lo instala como raíz con el comando sudo . Los comandos remotos se escriben entre comillas y separados por puntos y comas.

Ahora que se ha instalado el módulo energy_calculator en la máquina objetivo, el programa cliente puede ser llamado con el siguiente script:

$ scp -i ${key} energy_client.py idcuser@${vm}:energy_client.py
$ ssh -i ${key} idcuser@${vm} './energy_client.py'
You used 200 kJ today

Los comandos anteriores primero copian y luego ejecutan el script cliente. Ejecute los comandos desde el directorio que contiene el script cliente:

Recapitulemos lo que se ha logrado hasta el momento:

  • Se han escrito un ejemplo de módulo Python y un script cliente para ejercitarlo.
  • Se ha creado un paquete de instalación para el módulo.
  • El módulo se ha instalado remotamente en una máquina virtual mediante SSH.
  • El módulo se ha invocado remotamente en la máquina virtual mediante el script cliente.

Nada mal, considerando que hasta el momento en este ejemplo se ha escrito y consumido software "propio". Sin embargo, el ejemplo es sencillo; existen algunas deficiencias que aparecen:

  1. El consumidor tiene que saber cómo instalar módulos Python. La posibilidad de utilizar el mismo método para instalar paquetes de software escritos también en otros idiomas es altamente deseable.
  2. Resulta inconveniente para los no programadores de Python conseguir información pertinente y, quizás, actualizarlo.
  3. No se describen sus prerrequisitos, como cuál tipo y nivel de sistema operativo y Python son necesarios.
  4. Para evitar el problema de dispersión de imágenes, es deseable instalarlo desde la consola en nube e inyectar el paquete en máquinas virtuales. Como mínimo, es deseable contar con opciones distintas que escribir scripts bash de apariencia compleja, como en el ejemplo dado.

La capacidad de inyectar el módulo de la calculadora de energía en una máquina virtual en tiempo de aprovisionamiento o cuando sea necesario actualizarlo automáticamente, es altamente deseable.


Instalando el módulo Python con RPM

Python cuenta con algunas herramientas adicionales que ayudan a crear paquetes de instalación de Red Hat Package Management (RPM), Windows y otros formatos que auxilian a solucionar las deficiencias 1, 2 y 3 recién mencionadas. Estos formatos son una ayuda más conveniente al escribir scripts de activación e inicialización.

Esta sección muestra cómo escribir un script de activación para probar si la calculadora de energía ya está instalada. Si no está instalada, se puede instalar con un comando rpm .

Para crear un paquete RPM:

$ python setup.py bdist_rpm

Este comando crea un paquete RPM libenergy-0.1-1.noarch.rpm en el directorio dist. Cópielo en la máquina virtual objetivo mediante un comando scp :

$ scp -i ${key} libenergy-0.1-1.noarch.rpm idcuser@${vm}:/tmp/libenergy-0.1-1.noarch.rpm

Instale el módulo de la calculadora de energía:

$ sudo rpm -i /tmp/libenergy-0.1-1.noarch.rpm

El comando rpm comprueba si está instalado o no, y no lo instala si se ejecuta una segunda vez.

Compruebe que el módulo está instalado, ejecutando el cliente calculadora de energía, energy_client.py, como se muestra. Este archivo RPM y el comando siguiente se utilizarán para inyectar el módulo de la calculadora de energía en las máquinas virtuales cuando se aprovisionen en la nube.


Clonando una imagen mediante el portal web SmartCloud

El proceso manual de creación de paquetes de software no es tan sencillo como usar herramientas, por ejemplo ICCT, pero demuestra el proceso de empaquetar software en detalles y se puede aprovechar para automatización mediante las APIs de SmartCloud Enterprise. Por estas razones lo discutiremos primero.

Uno de los primeros pasos necesarios es crear una imagen de la que se tenga propiedad. Esto es necesario para editar los metadatos y añadir los archivos que se inyectarán en las máquinas virtuales a ser aprovisionadas basándose en la imagen. Hay dos maneras de hacer esto:

  1. Iniciar una instancia de máquina virtual y hacer las personalizaciones que se desean, incluyendo la instalación de software.
  2. Clonar una imagen existente.

La clonación de imagen se describe porque es el enfoque más aprovechable para automatizar y construir herramientas para la administración de imágenes.

Para clonar una imagen:

  1. Haga clic en el botón Add Image en la página Control Panel | Images . La ventana Base images se abre.
    Figura 2. Clonando una imagen en el portal web SmartCloud
    Clonando una imagen en el portal web SmartCloud
  2. Haga clic en el botón Next . El paso 2 del asistente se abre.
    Figura 3. Paso 2 del asistente Clonar Imagen
    Paso 2 del asistente Clonar Imagen
  3. Introduzca un nombre y una descripción para la imagen clonada. Compruebe los datos del Paso 3 en el asistente y haga clic en el botón Next .
  4. Acepte los términos y condiciones del Paso 4 y haga clic en el botón Submit . En pocos minutos la imagen es clonada y exhibida en el Panel de Control y en el Catálogo de Activos.

Los contenidos del activo de la imagen en el catálogo de activos se parecerán a la Figura 4.

Figura 4. Archivos incluidos en los repositorios de la imagen clonada
Archivos incluidos en los repositorios de la imagen clonada

‎Los archivos incluyen parameters.xml que describe los parámetros de entrada y los archivos que modelan la topología de la imagen. Los archivos que más le interesan están en la carpeta activation_scripts, como se muestra en la Figura 5.

Figura 5. Archivos en la carpeta activation_scripts
Archivos en la carpeta activation_scripts

Inyectar scripts de instalación en VMs durante el aprovisionamiento

Los contenidos de la imagen clonada de las secciones anteriores en el catálogo de activos deben verse así:

Figura 6. Archivos incluidos en los repositorios de la imagen clonada
Archivos incluidos en los repositorios de la imagen clonada

‎Los archivos incluyen parameters.xml que describe los parámetros de entrada y los archivos que modelan la topología de la imagen. Los archivos que más le interesan están en la carpeta activation_scripts, como se muestra en la Figura 7.

Figura 7. Archivos en la carpeta activation_scripts
Archivos en la carpeta activation_scripts

La clave para inyectar archivos en una máquina virtual en tiempo de aprovisionamiento es el archivo scripts.txt. Este es el archivo scripts.txt de la imagen clonada de RHEL 6:

cloud-startup3.txt=/etc/init.d/cloud-startup3.sh activate.txt=/etc/cloud/activate.sh

Esto lleva al archivo cloud-startup3.txt que se inyecta en la máquina virtual como /etc/init.d/cloud-startup3.sh y al archivo activate.txt as /etc/cloud/activate.sh.

Para inyectar archivos propios en una máquina virtual:

  1. Descargue los archivos de la carpeta activation_scripts, colocándolos en una carpeta con el mismo nombre.
  2. Añada el archivo libenergy-0.1-1.noarch.rpm a la carpeta.
  3. Cree el script libenergy-activate.sh:
    /usr/bin/logger 'installing libenergy-0.1'
    rpm -i /tmp/libenergy-0.1-1.noarch.rpm  2> /tmp/energy.log
    /usr/bin/logger < /tmp/energy.log
  4. Sea cuidadoso al usar separadores de línea estilo UNIX o al ejecutar el recurso dos2unix. Es deseable que este script se copie en la máquina virtual y se ejecute en la inicialización. Para esto, añádalo a la carpeta activation_scripts. Edite el archivo scripts.txt como se muestra:
    cloud-startup3.txt=/etc/init.d/cloud-startup3.sh
    activate.txt=/etc/cloud/activate.sh
    libenergy-0.1-1.noarch.rpm=/tmp/libenergy-0.1-1.noarch.rpm
    libenergy-activate.sh=/home/idcuser/libenergy-activate.sh
  5. Invoque el script desde el script de inicialización en nube, cloud-startup3.sh. Edite cloud-startup3.sh y añada las líneas en negrita como se muestra:
        start)
            echo "== Cloud Starting"
            if [ ! -e /etc/cloud/idcuser_pw_randomized ]; then
                echo "Randomizing idcuser password"
                echo idcuser:'< /dev/urandom tr -dc _A-Z-a-z-0-9 |head -c16' | 
    			 /usr/sbin/chpasswd
                touch /etc/cloud/idcuser_pw_randomized
            fi
            /sbin/restorecon -R -v /home/idcuser/.ssh
            chmod +x /home/idcuser/libenergy-activate.sh
            /home/idcuser/libenergy-activate.sh
            ;;
  6. Comprima la carpeta y llame el archivo resultante, activation_scripts. Edite el activo de imagen para la imagen clonada y cargue el archivo ZIP. Este se descomprime durante el proceso de carga.

Para probar la imagen clonada y modificada, aprovisione una máquina virtual basada en la imagen clonada; compruebe que el módulo esté instalado ejecutando el cliente calculadora de energía, energy_client.py, como se muestra:

$ scp -i ${key} energy_client.py idcuser@${vm}:energy_client.py
$ ssh -i ${key} idcuser@${vm} './energy_client.py'
You used 200 kJ today

Si no se ve el resultado, You used 200 kJ today , verifique los errores en el archivo de registro de mensajes, /var/log/messages.

En este punto se aprendió cómo inyectar un módulo de software en una máquina virtual sin necesidad de instalar ninguna máquina virtual. Solo se inicializó la máquina virtual para comprobar el resultado. Esto es un salto importante en la capacidad de automatizar la administración de imágenes en la nube y es la base de varias herramientas que están disponibles para ayudar a los usuarios a administrar sus imágenes en máquinas virtuales.

Las siguientes secciones muestran cómo utilizar algunas de estas herramientas y cómo automatizar más eficazmente mediante APIs. Además, observe que no se ha creado un recurso de paquete de software independiente en la nube; se ha fusionado directamente el archivo de instalación de RPM y el script de instalación con los metadatos de la imagen virtual en el repositorio de activos. Discutiremos los recursos de paquetes de software basados en nube.


Creando paquetes de software que admiten composición

Para crear un paquete de software que admite composición, descargue y modifique una de las plantillas proporcionadas en el SmartCloud Asset Catalog. En el Catálogo de Activos, encuentre en la columna izquierda el enlace de búsqueda denominado Composable Software Bundles (Figura 8). Examine los resultados de la búsqueda.

Figura 8. Resultados parciales de la búsqueda de paquetes de software que admiten composición
Resultados parciales de la búsqueda de paquetes de software que admiten composición

Hay muchos paquetes diferentes disponibles para utilizar como plantillas. Utilice el botón Asset Manager Clone para clonar y modificar el paquete. Esto ayuda a crear recursos que se pueden utilizar en herramientas de automatización propias para compartir entre imágenes de máquinas virtuales, pero solo serán visibles para el usuario. Para crear paquetes de software más reutilizables, es necesario registrarlos mediante ICCT u otra herramienta.


Utilizando ICCT para administrar paquetes de software

ICCT se incluye en el catálogo de imágenes de IBM SmartCloud Enterprise, lo que permite su ejecución en la nube. Para utilizarlo vaya al Panel de Control de SmartCloud Enterprise:

  1. Seleccione Instance y haga clic en el botón Add Instance .
  2. Seleccione un centro de datos, seleccione la imagen de ICCT desde el catálogo y aprovisione una nueva instancia mediante el asistente de aprovisionamiento.
  3. Introduzca el nombre de usuario y la contraseña de ICCT. Después que la máquina virtual es aprovisionada, se puede usar el enlace en la página Getting Started para iniciar sesión.
  4. Después de registrarse en ICCT, haga clic en el enlace Build and Manage Software Bundles .
  5. En el panel izquierdo está el paquete denominado Enablement Bundle for SmartCloud Enterprise. Esto debe extenderse para crear paquetes de software propios si el plan es utilizar ICCT o las APIs del paquete de software SmartCloud Enterprise.

En conclusión

En este artículo, a través del examen de un ejemplo sencillo, se ha obtenido una amplia comprensión de las capacidades de paquetes de software e imágenes ofrecidas por IBM SmartCloud Enterprise. Futuros artículos se basarán en este ejemplo utilizando herramientas que tienen capacidades adicionales para crear versiones más complejas de este ejemplo y automatizar muchas de las tareas manuales que se realizaron aquí.

Recursos

Aprender

Obtener los productos y tecnologías

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Cloud computing, Linux
ArticleID=827895
ArticleTitle=Crear soluciones en IBM SmartCloud Enterprise: Mejores prácticas y herramientas
publish-date=07312012