Receta: Maquinas virtuales a la carta
El objetivo: Permitir a los clientes de nuestra nube privada solicitar maquinas virtuales con una configuración y aplicaciones determinadas.
Aviso: Este articulo es una simple prueba de concepto rápida, ponerlo en producción puede requerir cambios y trabajo adicional.
La receta:
1- El portal de autoservicio:
Aquí las posibilidades son muchas, básicamente queremos que un usuario acceda a un interface y seleccione las opciones que conducirán a generar la VM, así que necesitamos un interface que podamos personalizar fácilmente con nuestras opciones.
Creo que tenemos 3 opciones principales:
- Usar el sistema que la empresa tenga implantado para la gestión de solicitudes/ordenes de trabajo tales como SCSM, Remedy, etc., generar una plantilla con nuestras opciones y escuchar este tipo de solicitudes.
- Usar SharePoint como interface, esto nos permite una fácil personalización, aprobaciones, acceso web, posibilidad de ponerlo en la intranet con el branding de la empresa, etc.
- Programarnos un interface desde 0 o usar un sistema en 2 pasos en los que el usuario pida a través del portal de autoservicio 2.0 de SCVMM la VM y luego desde otro sitio solicite el software y otras opciones.
-La primera opción puede ser mi favorita para muy gran empresa, la ultima no me gusta nada y la de usar Sharepoint me viene muy bien para este articulo por que mi objetivo es no tardar mas de 1h en hacerlo .
Así que empezamos creando nuestro formulario, para ello creamos una lista en el Sharepoint:
Ahora iremos creando los campos que queremos.
Os voy a enseñar algunos ejemplos:
-Ofrecer al cliente varias opciones en un desplegable:
-Seleccionar opciones excluyentes:
-Opciones Si/No
Cambiamos la columna titulo para que indique automáticamente el usuario y la fecha
Ya podemos ver el formulario:
Vamos a hacer unas cuantas cosas mas, vamos a añadir una columna oculta para guardar el estado de la solicitud cuyo valor por defecto va ha ser “pendiente de aprobación” , de esta forma las solicitudes no se procesaran directamente si no que alguien con atribuciones para ello tendrá que poner el estado a “Aprobado”.
Nota: si, si, se que se podrían usar workflows de aprobación de SharePoint, etc., pero esto es una demo, vamos a mantenerlo tan simple como podamos que quiero hacerlo en menos de una hora .
Crearemos también otra columna oculta para guardar un log del proceso.
Por supuesto lo suyo seria abrirlo desde el SharePoint designer, quitar el campo titulo y formatear mejor el formulario, pero para el ejemplo/demo me vale.
Nos copiamos el enlace y probamos a acceder directamente al formulario:
Con esto tenemos nuestro prototipo de interface y podemos pasar al siguiente paso.
2- Los componentes de la VM
Necesitamos varias cosas para poder componer la VM:
Las plantillas de maquinas virtuales, que en este caso serán dos una con XP y otra con Windows 7.
Las plantillas tienen que estar preparadas para meterse automáticamente en dominio y tienen que llevar el cliente de SCCM preparado para que después del arranque reporten al SCCM.
Esto es fácil y no lo voy a explicar, si alguno tiene dudas sobre como generar plantillas de SCVMM ponerme un comentario y lo explico.
El siguiente paso es tener cada opción de software en SCCM dado que será lo que usemos para distribuir el software según lo especificado por el usuario.
Como sabéis el software que incluimos en SCCM para su distribución puede ser normal o virtual (App-V) yo personalmente soy fan de este ultimo por todo lo que implica a nivel de ahorros de coste, mantenimiento, etc., si no lo conocéis, evaluarlo!.
Otra cosa que haremos gracias a SCCM es meter el software base de todo equipo en nuestra red, tal como el antivirus, el reader, etc, evitando poner todo este software directamente en las plantillas estamos reduciendo el coste de propiedad de estas maquinas virtuales.
Como también estamos dejando a los usuarios escoger la política de backup que quieren para sus VMs vamos a necesitar un Protection Group en SCDPM para cada tipo de backup que ofrezcamos.
Aunque en este ejemplo hablemos de escritorios en realidad son VMs sobre servidores de Hyper-V así que el backup lo hacemos desde Hyper-V, como SCDPM nos permite la restauración granular de archivos dentro de una VM sin recuperar la VM completa la solución nos da todo lo que necesitamos y se hace con la VM en marcha.
Tenemos que seleccionar algún contenido para hacer backup para poder avanzar en el asistente, vale con un simple fichero, las VMs se harán añadiendo a medida que se creen.
Tendremos que incluir cada nodo de los clusters donde vayan a estar las VMs o en los servidores independientes que usemos.
Lo siguiente será darle un nombre a este grupo de protección y seleccionar si queremos hacer el backup en disco o cinta.
Ahora indicamos cada cuanto haremos el backup y cuantos días queremos retenerlo, la hora, etc.
Reservamos el espacio que necesitemos
El método que se usara para la primera copia:
Comprobaciones de consistencia del backup
Y creamos el grupo de protección…
Siguiente elemento el Broker VDI, podríamos usar el de Microsoft o el de Citrix, Quest, etc.
En este ejemplo usare el de Microsoft que es el que tengo mas a mano.
En el broker vamos a indicar que la VM pertenece al usuario de forma que entre directamente a ella, si los usuarios van a tener muchas VMs porque por ejemplo sean desarrolladores que usen varias, es posible no usar ni broker y que entren directamente por escritorio remoto a las que necesiten.
Creo que ya tenemos todo lo que necesitamos para continuar con esta demo.
3- Automatizar el proceso
Ahora usaremos Opalis que recordareis es nuestro orquestador dentro de System Center y que va incluido en la suite de System Center, ya hemos hablado mucho en este blog de Opalis asi que espero que lo conozcáis, si no un buen lugar para empezar es este: https://blogs.technet.com/b/dmatey/archive/2010/12/10/introducci-243-n-a-system-center-opalis-tu-mejor-aliado-en-el-d-237-a-a-d-237-a.aspx
En Opalis vamos a crear nuestra orquestación del proceso automatizándolo, básicamente será algo así:
Empezamos, haciendo una nueva carpeta para nuestro proceso:
Generamos una nueva política que será la principal
La cambiamos el nombre a 0-Principal
Configuramos la conexión con nuestra lista en Sharepoint
La primera tarea de la política será estar escuchando en el sharepoint
Configuramos la tarea para que espere elementos actualizados (recordar que queremos aquellos que esten en estado “Aprobados”) que mire cada 30 segundos.
Configuramos el filtro
Siguiente paso actualizar la solicitud para que muestre que estamos procesándola
Une las dos acciones (yo prefiero ir poniendo la línea verde indicando que todo va bien):
Indicamos que queremos actualizar el elemento de la lista que hemos encontrado antes:
Y cambiamos el valor del campo Estado
Siguiente paso crear la VM, pero primero tenemos que saber que plantilla usar, como el nombre que selecciona el usuario en el formulario no es el mismo que tenemos en SCVMM tenemos que hacer algo que nos devuelva el nombre real que necesitamos.
Usamos el Map Published Data para saber la plantilla en función de lo seleccionado por el usuario:
Ya podemos hablar con SCVMM para crear la VM
Introducimos los valores a través de todo lo que sabemos anteriormente.
Si esto lo fuera a hacer en producción obviamente el nombre del host y el disco no lo podríamos poner fijo si no que tendríamos que averiguarlo interrogando el intelligent placement de SCVMM para que nos diga el mejor host posible.
Hay que asegurarse de que la VM ya existe y que esta en estado Stopped, después solo queda arrancarla.
Ponemos un loop que mire que el estado sea stopped eso indicara que ha terminado de desplegarse del todo (después me di cuenta que esto del looping no es necesario, dado que la tarea de crear la VM no pasa el testigo a esta hasta que no ha terminado de crear la VM)
Lo siguiente será arrancar la VM
Siguiente esperar que el equipo aparezca en la colección de todos los equipos Windows de SCCM, como son varios pasos para no complicar mucho el tema vamos a crear otra política y llamarla desde esta.
La primera tarea será empezar cuando se la llame pidiendo como parámetro el nombre de la maquina.
Esta es la colección que nos interesa:
Modificamos las propiedades de la política para que publique un campo de tipo booleano que indique si ha encontrado o no la maquina en la colección.
Modificamos el enlace para que solo se produzca cuando se ha encontrado la maquina.
Ahora tenemos que publicar los datos para que la política que llame a esta sea capaz de cogerlos:
Desde la política principal llamamos a la otra política:
No quiero que el post sea eterno, y creo que habéis pillado la forma, ahora hiramos creando sub-políticas como esta ultima para añadir los advertisements de software del SCCM a la maquina, añadir el broker, etc.
Añadimos lo de ir guardando el estado en el log en los objetos que nos interesen
Generamos una sub-política que notifique el fallo guardando en el log de la solicitud el problema y mandando un correo al usuario que pidió la VM y a un responsable.
Para enlazarlo para que solo se ejecute cuando ocurra un error modificamos las propiedades del enlace.
Solo nos queda indicar que el proceso a finalizado
Ejecutamos la política en modo test para ir viendo el resultado:
La arrancamos:
Se quedara esperando que metamos una solicitud en el sharepoint
Ya la tenemos metida, así que cambiamos su estado a aprobada
Esperamos un poco y el opalis encontrara la solicitud aprobada
Y bueno como era lógico con las prisas falla
La razón es que hemos dicho que la memoria sea 4 y nos esta pidiendo MB y 4 esta por debajo del mínimo permitido así que modificamos el formulario para que en vez de 4 ponga 4000 y ejecutamos de nuevo.
Otro fallo:
Había usado en el nombre de la VM como parámetro el nombre del usuario que había rellenado la solicitud, pero el campo que había elegido venia en formado dominio\usuario y \ es un carácter no permitido, lo cambio y continuamos.
Después de resolver estos problemas la VM ya se aprovisiona.
No os voy a engañar, salieron mas errores pero se solucionaron igual de rápido.
También tuve que hacer algún cambio de ultima hora, cuando lo tenga mas fino os publicare aquí la política exportada.
Al finalizar el proceso tenemos nuestro log y un usuario contento
Espero haberos mostrado con este ejemplo el potencial de System Center para solucionar cualquier necesidad de gestión que se os pueda presentar.
Un saludo a todos.
Comments
Anonymous
October 09, 2011
Fántastico post...enhorabuena...la idea es brutalAnonymous
November 05, 2012
Hola, muy bueno el post. Me gustaría que me explicaras como crear plantillas del SCVMM por favor