@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

Inicio - VMware - Ejemplo de workflow con VMware Orchestrator 5.1

Ejemplo de workflow con VMware Orchestrator 5.1

VMware Orchestrator permite crear flujos que nos permiten automatizar tareas en la infraestructura de VMware vSphere. En esta entrada vamos a ver como crear un flujo sencillo donde ver los fundamentos básicos.

Un workflow consiste en un esquema, atributos y parámetros. El esquema es el componente principal del workflow y está compuesto por tareas, acciones y las conexiones lógicas que hay entre ellas. Los atributos y los parámetros son las variables que nos permiten tratar la información obtenida en el workflow.

  • Parámetros: hay dos tipos, de entrada y de salida.
    • Los parámetros de entrada son los parámetros que necesita el workflow para ejecutarse y son introducidos por el usuario o por otro workflow. Por ejemplo, si un workflow reinicia una máquina virtual, el workflow necesita el nombre de la máquina virtual como parámetro de entrada.
    • Los parámetros de salida representan el resultado de un workflow. Por ejemplo, si un workflow crear un snapshot de una máquina virtual, el snaphsot es el parémetro de salida.
  • Atributos: pueden considerarse como variables globales que se utilizan durante todo el workflow. Durante el workflow pueden mantenerse constantes o ser modificadas recibiendo valores de parámetros.
  • Esquema: es una representación gráfica que muestra los elementos del workflow y sus relaciones.

Los pasos generales para crear un workflow son los siguientes:

  1. Crear un nuevo workflow o duplicar uno ya existente
  2. Indicar información general (nombre, descripción…)
  3. Definir los parámetros de entrada
  4. Definir el esquema y los elementos y las relaciones que componen el workflow
  5. Unir los distintos parámetros de entrada, salida y atributos del workflow
  6. Escribir los scripts que sean necesarios
  7. Crear la presentación del workflow
  8. Validar el workflow

Ejemplo

En el ejemplo que mostramos vamos a crear un workflow que nos va a permitir crear un grupo de puertos en un vswitch estándar en todos los servidores ESXi de un datacenter indicando unicamente 3 campos:

  • vSwitch
  • Nombre del grupo de puertos
  • ID de VLAN

Los pasos son los siguientes:

  • Accedemos al cliente VMware Orchestrator

Cliente

  • Accedemos al apartado Design

Design

  • Creamos un nuevo workflow (Podemos crear una nueva carpeta en la libreria)

Descripcion

  • Indicamos un nombre, en este caso «Crear un Grupo de Puerto en todos los hosts»

Schema

  • Indicamos la descripción

Descripcion

  • Accedemos a Schema

Esquema

  • Añadimos un Action Element arrastrando el icono al esquema

getallhostsystems

  • Seleccionamos la accion getAllHostSystems

Setup

  • Pinchamos en el botón Setup
  • Cambiamos el nombre del parámetro de salida a Hosts y lo marcamos como Local variable

Parametro

  • Ya tenemos el primer paso del workflow hecho, una acción que obtiene un listado con todos los hosts

esquema

  • Ahora añadimos un Foreach Element que se va a encargar de ejecutar una acción para todos los elementos que pasemos como parámetro de entrada

Foreach

  • Lo arrastramos al esquema

Arrastramos

  • Seleccionamos la acción Add port group in standard virtual switch

Accion

  • Pinchamos en el botón Setup

Setup

  • Configuramos los parámetros como se ve en la imagen. Importante marcar en el parámetro Hosts, la primera columna para indicar que ese es el parámetro que recorre la iteración (hay algunos parámetros que no vamos a utilizar como los valores de configuración de dirección de red

Parametros

  • Ya tenemos el esquema creado

Esquema

  • Si accedemos a las propiedades de los elementos, en el apartado Visual bindings podemos ver y modificar las relaciones entre los parámetros y atributos

Visual

  • Para que el workflow se valide correctamente tenemos que gestionar las excepciones, para ello en el apartado Exception de getAllHostSystems pinchamos en Not Set

Exception

  • Pinchamos en Create parameter / atribute

Excepcion

  • Indicamos un nombre al parámetro que va a obtener la excepción en caso de que se produzca

Error

  • Pinchamos en el botón Save and close. En este momento se valida el workflow y si hay algún error o problema nos lo indica y en la medida de los posible nos muestra la solución para validar el workflow

Guardado

  • Si todo es correcto nos solicita aumentar en número de versionado del workflow para llevar un control de los cambios realizados

Versionado

En este momento ya podríamos ejecutar el workflow. Como paso adicional, vamos a integrar este workflow con el cliente web de forma que nos aparezca como una opción del menú cuando accedamos a un datacenter.

  • Accedemos a vCenter Orchestrator del cliente web
  • En VCO home -> Manage pinchamos en el icono +

VCO

  • Seleccionamos el workflow creado y el objeto Datacenter

Workflows

  • Ahora, al pinchar con el botón derecho sobre un objeto Datacenter, en el menú All vCenter Orchestrator Options nos aparece una entrada para el workflow creado

Menu

  • Aprobamos la adverencia

Aprobar

  • Nos aparece un menú con los parámetros de entrada y rellenamos con los valores que deseamos

Entrada

  • Ejecutamos el workflow o lo programamos

Ejecutar

  • Esperamos a que termine la tarea y comprobamos que se han creado los grupos de puertos en todos los hosts

Como paso opcional, uno de los parámetros (el de tipo de grupo de puertos) en este caso va a ser siempre el mismo (de tipo Virtual Machine), por eso podemos convertir el parámetro de entrada en un atributo de forma que no los solicite en el menú.

  • Accedemos a los parámetros de entrada del workflow

Parametros

  • Pinchamos con el botón derecho sobre el parámetro y seleccionamos Move as atribute

Atributo

  • En el apartado de atributos rellenamos el campo Value con el texto Virtual Machine

Atributo

Acerca de Roberto Orayen

Compruebe también

libro-vmware-por-vexperts-478-677

La Biblia: VMware por vExperts

La Biblia: VMware por vExperts Llevamos ya varios meses dando «la turrada», lo reconozco, nos …

7 comentarios

  1. Excelente descripción para crear un WORKFLOW… te felicito, deseaba saber algo más de Orchestrator.
    Gracias. Saludos.

  2. Hola,

    Excelente aporte, es justo lo que andaba buscando y el motivo por el que instalé Orchestrator, actualmente en el cluster de VMware hay unos 70 Host y era un autentico fastidio añadir uno a uno todas las nuevas vLANs.

    Me vendria genial si me pudieras ayudar con otro supuesto…

    1) Actualmente a los host no les entra su pata de vLANs por el mismo vSwitch, con lo cual este Script no me vale ya que en cada host la variable del vSwitch es distinta, ¿Podria añadir un paso intermédio que defina ese parametro como una variable? Por ejemplo buscando en los vSwitches una vLAN ya existente?

    Me vendria genial una mano.

    Muchas gracias.

    Un saludo,

    • Hola,

      Mi idea inicial tambien era que Orchestrator iba a ser una herramienta para automatizar este tipo de tareas. Pero me he dado cuenta, que aparte de la opción de integrarlo con el cliente web me parece demasiado complejo de utilizar y la informacion que hay es bastante escasa.

      Todas las tareas de este tipo las gestiono con scripts de PowerCLI. Me parece más sencillo de implementar y validar.

      Lo miro y te intento ayudar.

      Gracias por el comentario y un saludo.

      • Hola Roberto,

        Ante todo muchas gracias por la respuesta, la opción de PowerCLI tambien la he valorado, pero me decanté primero por Orchestrator por al facilidad de implementación, algo que cuando trabajas con un grupo de trabajo grande, te ahorra mucho tiempo.

        Revisaré si PowerCLI solventa mis problemas, y si consigo hacerlo con Orchestrator te escribiré por si en un futuro te es util.

        Muchas gracias,

        Un saludo.

        • Hola,

          Entiendo lo que dices, ya que sin llegar a 70 servidores yo administro cerca de 50, y teniendo ese número de servidores tenemos que buscar la forma más sencilla de administrarlos (en este caso, lo mejor sería tener licencias Enterprise Plus, pero ese es otro tema, jeje)
          He estado mirando un poco el Orchestrator y no lo veo claro para generar un workflow buscando una VLAN ya existente. La verdad es que no lo toco mucho, si lo hubiese manejado más de lo que he hecho puede que sea más sencillo de lo que me ha parecido. Ya nos contarás si consigues avanzar con Orchestrator, por que como ves yo lo he dejado de lado.

          La mayoría de tareas de este tipo que afectan a todos los hosts o máquinas virtuales (crear grupos de puertos, configurar el multipath del almacenamiento, informe de snapshots de las máquinas …) lo hago con PowerCLI y revisando lo que comentabas, he conseguido crear un script que en pocas líneas hace lo que pedías (o por lo menos lo que he entendido, jeje)

          Básicamente lo que tiene es 4 variables de entrada:
          – el vCenter
          – el nombre del nuevo grupo de puertos para la nueva VLAN
          – el ID de la nueva VLAN
          – el nombre de un grupo de puertos existente
          Y crea un grupo de puertos con el nombre y el ID indicado, en el mismo vSwitch donde está el grupo de puertos del que se pasa el nombre, para todos los servidores conectados al mismo vCenter
          Sería algo así

          #Crear un grupo de puertos en un vSwitch buscando previamente otro grupo de puertos ya existente
          ### Cargamos las librerias de VMware
          $VMwareSnapin = "VMware.VimAutomation.Core"
          if ( ( Get-PSSnapin -Name $VMwareSnapin -ErrorAction SilentlyContinue) -eq $null ) {
          Write-Output "$date - Cargamos el Snapin $VMwareSnapin"
          add-pssnapin $VMwareSnapin
          }
          #Variables
          $vCenter="SERVIDORvCenter"
          $VLAN_Nueva_Nombre = "VLAN_33"
          $VLAN_Nueva_ID = "33"
          $VLAN_Existente_Nombre = "VLAN_11"

          #Nos conectamos al servidor
          $vCenter= Connect-VIServer $vCenter

          #Obtenemos todos los grupos de puertos existentes de todos los servidores donde queremos crear los nuevos (lo que nos da también los vSwitch donde se encuentran estos grupos de puertos)
          #$PGs = Get-VirtualPortGroup | Where-Object {$_.Name -eq $VLAN_Existente_Nombre}

          #Recorremos cada grupo de puertos encontrado
          Foreach ($PortGroup in $PGs) {
          #Creamos un grupo de puertos en el mismo vSwitch
          $GrupoPuertos = New-VirtualPortGroup -Name $VLAN_Nueva_Nombre -VLanId $VLAN_Nueva_ID -VirtualSwitch $PortGroup.virtualSwitch
          Write-Output "Creado grupo de puertos $VLAN_Nueva_Nombre con ID $VLAN_Nueva_ID en el vSwitch $($PortGroup.virtualSwitch) del host $($PortGroup.virtualSwitch.VMHost)"
          }
          #Nos desconectamos del servidor
          Disconnect-VIServer $vCenter -Confirm:$False

          Se podría afinar comprobando si ya existe el grupo de puertos nuevo antes de crearlo, filtrar los host por si no se quiere crear en todos los conectados al vCenter o crearlo como función. Si quieres puedes probar a ver si esté script te sirve.

          Un saludo,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

diecisiete + 3 =

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Blog Maquinas Virtuales - El Blog de Negu