Buscar

Mostrando entradas con la etiqueta PowerCLI. Mostrar todas las entradas
Mostrando entradas con la etiqueta PowerCLI. Mostrar todas las entradas

VMware: Exportar OVF/OVA con PowerCLI

Los formatos OVA o OVF contienen máquinas virtuales.

Ejemplos de uso de estos formatos son: Desplegar appliances virtuales, archivar máquinas virtuales fuera del entorno productivo, etc..

VMware: Instalar PowerCLI offline

En este post veremos como instalar VMware PowerCLI de forma offline.

Ya vimos en este otro post, cómo instalar PowerCLI de forma online:


Instalar de forma online significa que necesitamos conexión a Internet para poder realizar la instalación.

VMware: Instalar PowerCLI

A partir de la versión 6.5.1, PowerCLI se instala desde PowerShell.

VMWare: ESXi vMotion, SvMotion PowerCLI

Utilizando PowerCLI podemos realizar vMotion o SVMotion (Storage vMotion) de VMs en nuestra infraestructura virtual.

VMware: Desconectar CD DVD ISO con PowerCLI

Como administradores de infraestructuras virtuales VMware, una de las buenas prácticas es no dejar conectadas ISOs de forma permanente en las máquinas virtuales.

VMWare: ESXi instalar driver

En el proceso de instalación de VMWare ESXi nos podemos encontrar con que el instalador nos informa de que no es capaz de detectar cierto dispositivo así que no podremos finalizar la instalación de forma correcta.

Por ejemplo, si el instalador no es capaz de detectar ninguna tarjeta de red, nos aparecerá la siguiente pantalla:

Cómo saber la versión de VMWare Tools

Podemos saber la versión de VMWare Tools a nivel de hipervisor ESXi o a nivel de máquina virtual (VM).

Es una buena práctica, disponer de la misma versión de VMWare Tools en todas las VMs y que esta sea una versión actualizada.

La forma más rápida y sencilla de obtener la versión de VMWare Tools de cada VM, es utilizando PowerCLI.


Con PowerCLI, podemos obtener una lista de cada VM y su versión de VMWare Tools:


Conectamos con PowerCLI al Virtual Center:

Connect-VIServer -Server XXX.XXX.XXX.XXX -User YYYYYYY -Password ZZZZZZZZ

y ejecutamos:

Get-View -ViewType VirtualMachine | select Name, @{ Name=”ToolsVersion”; Expression={$_.config.tools.toolsVersion}}

Cómo saber la versión de VMWare Tools con PowerCLI

VMWare: ESXi modo mantenimiento

En ocasiones es necesario situar un host VMWare ESXi en modo mantenimiento.

El modo mantenimiento es necesario cuando aplicamos parches con el host iniciado.

También existen otros procedimientos en los cuales es necesario situar el host VMWare ESXi en modo mantenimiento, por ejemplo:

VMWare: Reset ESXi root password con Host Profile (SYSADMIT.com) 

Para situar un host VMWare ESXi en modo mantenimiento es necesario que todas las VMs que controla el host VMWare ESXi estén detenidas o movidas a otro host VMWare ESXi.

Podemos liberar el host VMWare ESXi de VMs encendidas moviéndolas utilizando vMotion.

Cualquiera de los métodos que veremos a continuación para situar el host ESXi en modo mantenimiento ejecutarán una tarea y la tarea no llegará a completarse hasta que las VMs iniciadas controladas por el host estén detenidas o movidas. 

Si el host VMWare ESXi tuviera habilitado y configurado el DRS (Distributed Resource Scheduler) dentro de un clúster, al situar el host en modo mantenimiento: De forma automática utilizando VMotion, empezarían a moverse las VMs a otros hosts, liberando el host de VMs iniciadas.

Recordemos que solo encontraremos DRS (Distributed Resource Scheduler) en la edición de VMWare VSphere: Enterprise Plus

También debemos tener en cuenta lo siguiente:

- No podremos encender VMs de un host ESXi que tiene la tarea de entrar en modo mantenimiento iniciada.

- No podremos mover VMs (VMotion) hacia un host ESXi que está en modo mantenimiento.

Veamos las distintas formas de situar un host VMWare ESXi en modo mantenimiento:

1) Modo mantenimiento con VSphere Client:


En la vista "Hosts and Clusters":

Nos situamos sobre el host VMWare ESXi y seleccionamos "Enter Maintenance Mode"

VMWare: ESXi modo mantenimiento

Para salir del modo mantenimiento, realizamos el mismo procedimiento y seleccionamos: "Exit Maintenance Mode". 

VMWare: Añadir ESXi al dominio de Active Directory

A partir de VMWare ESXi 4.1 podemos integrar nuestros hosts VMWare ESXi a un dominio de Active Directory.

De esta forma podremos utilizar credenciales de cuentas de Active Directory para iniciar sesión en los hosts ESXi o Virtual Center.

Para añadir un host VMWare ESXi a un dominio de Active Directory, en primer lugar deberemos configurar el TCP/IP de la red de management, concretamente:

- IP y máscara de subred que disponga de conectividad con nuestro o nuestros controladores de dominio (DC).

- DNS Server: La dirección IP del DNS Server del dominio de Active Directory.

Podemos configurar el TCP/IP de la red de management utilizando la consola del host VMWare ESXi:

F2 > Introducimos las credenciales > "Configure Management Network":

Vista consola host ESXi, cambio del TCP/IP

VMWare: Cambiar tipo de NIC sin cambiar la MAC

Si intentamos cambiar el tipo de NIC desde VSphere Client o VSphere web client, veremos que no podemos realizar el cambio sin quitar la NIC y añadir una nueva:

Vista tipo de adaptador virtual

El problema de quitar la NIC y añadir una NIC nueva es que por defecto se producirá un cambio de dirección MAC.

Para realizar el cambio de tipo de NIC sin quitar la NIC y añadir una nueva, podemos utilizar la PowerCLI y seguir los siguientes pasos:

1) Detenemos la VM que queremos cambiar el tipo NIC.

2) Iniciamos la PowerCLI y conectamos con nuestro Virtual Center:

Connect-VIServer -Server XXX.XXX.XXX.XXX -User YYYYYYY -Password ZZZZZZZZ

3) Examinamos la NIC de la VM que queremos cambiar. En el ejemplo: SRV1

PowerCLI C:\> Get-VM SRV1| get-networkadapter

Name                 Type       NetworkName  MacAddress         WakeOnLan
                                                                  Enabled
----                 ----       -----------  ----------         ---------
Network adapter 1    e1000      VM Network   00:50:56:ac:75:4c       True

Vemos que el tipo de adaptador es: e1000.

4) Cambiamos el tipo de NIC de e1000 a VMXNET3 de la VM: SRV1

PowerCLI C:\> get-vm SRV1 | Get-NetworkAdapter | set-networkadapter -type vmxnet3 -confirm:$false

Name                 Type       NetworkName  MacAddress         WakeOnLan
                                                                  Enabled
----                 ----       -----------  ----------         ---------
Network adapter 1    Vmxnet3    VM Network   00:50:56:ac:75:4c       True

5) Iniciamos la VM.

Consideraciones:

Hemos de tener en cuenta que: Cambiar el tipo de NIC hace que el sistema operativo entienda que la NIC es distinta.

Por ejemplo, en todos los sistemas operativos:

Deberemos configurar los parámetros TCP/IP del adaptador nuevo: IP, mask, DNS, etc. a menos que la VM no reciba la configuración TCP/IP por DHCP.

Particularmente, en sistemas Windows:

La NIC vieja quedará oculta en Windows y será necesario aplicar el siguiente procedimiento para limpiarla:


VMWare: ESXi copiar-pegar consola

A partir de la versión de VMWare VSphere ESXi 4.1, la posibilidad de hacer "copiar-pegar" en las sesiones de consola esta desactivada por defecto.

Consola, vista desde VSphereClient

Para activar la funcionalidad, los parámetros a establecer son:

isolation.tools.copy.disable = FALSE
isolation.tools.paste.disable = FALSE

Estos parámetros pueden establecerse a nivel de host ESXi o a nivel de VM.

El cambio de la configuración puede realizarse manualmente o bien automatizarse utilizando PowerCLI.

Hemos de tener claro que si activamos la opción:

- Será necesario reiniciar las VMs para que tenga efecto.
- Solo se permite "copiar-pegar" texto, no se permite "copiar-pegar" ficheros.


Veamos como habilitar el "Copiar-pegar" a nivel de VM:

 

1) Desde VSphere Client:

VSphere Client > Sobre una VM > Edit Settings > pestaña "Options" > nos situamos sobre "General" > botón "Configuration parameters" > Botón "Add Row":

VMWare: ESXi copiar-pegar consola VSphere Client

y añadimos:

isolation.tools.copy.disable = FALSE
isolation.tools.paste.disable = FALSE

VMWare: ESXi host uptime

En el siguiente post vimos las distintas formas de obtener el uptime de un equipo Windows:

Windows: Ver uptime (SYSADMIT.com)

Sobre sistemas VMWare ESXi, gracias a los comandos integrados en la BusyBox, disponemos del comando uptime.

Acerca de la BusyBox de VMWare ESXi:

VMWare: ESXi BusyBox (SYSADMIT.com)

Si conectamos vía SSH a cada host VMWare ESXi y ejecutamos el comando uptime, podremos obtener el uptime del host ESXi:

login as: root
Using keyboard-interactive authentication.
Password: XXXXXX
The time and date of this login have been sent to the system logs.

VMware offers supported, powerful system administration tools.  Please
see www.vmware.com/go/sysadmintools for details.

The ESXi Shell can be disabled by an administrative user. See the
vSphere Security documentation for more information.
~ # uptime
 04:26:24 up 00:20:42, load average: 0.01, 0.01, 0.01


También vía SSH, fuera de los comandos incluidos en la BusyBox, disponemos del comando esxtop, donde también podremos verificar el uptime del host VMWare ESXi:

Vista esxtop

Finalmente, a partir de la versión 5 de VMWare ESXi disponemos del fichero: /var/log/vmksummary.log.

Este fichero, entre otra información, contiene las paradas, reinicios que se han producido sobre el host ESXi.

Entre los mensajes que podemos encontrar junto con su fecha y hora:

bootstop: Host has booted
bootstop: Host is rebooting
bootstop: Host is powering off
bootstop: Host is halting


Con los comandos cat y grep, podremos obtener el listado de forma rápida:

cat /var/log/vmksummary.log |grep booted

2015-06-26T06:25:27Z bootstop: Host has booted
2015-06-26T06:47:23Z bootstop: Host has booted
2015-06-26T06:58:19Z bootstop: Host has booted
2015-06-26T07:05:26Z bootstop: Host has booted
2015-06-26T07:09:50Z bootstop: Host has booted
2015-07-08T05:32:17Z bootstop: Host has booted

Sin embargo, en entornos donde disponemos de muchos hosts VMWare ESXi, podemos obtener el uptime de todos ellos, vía VSphere Client o bien con PowerCLI, conectando al Virtual Center de nuestra infraestructura.

VMWare: Detectar VMs con GuestOS incorrecto

Uno de los elementos a revisar en nuestra infraestructura virtual es que la versión de sistema operativo detectado cuadre con la versión de sistema operativo configurado.

Para entender el problema, fijémonos en la siguiente captura de pantalla (VSphere Client):

Vista Virtual Center

1) Rojo: Sistema operativo detectado.
2) Azul: Sistema operativo configurado.

Situados encima de una VM:

1) Rojo: En la pestaña "Summary", "General", GuestOS: Aquí podemos ver la detección de sistema operativo que efectúa el hipervisor sobre la VM. Esta detección se realiza utilizando las VMWare Tools. Si la VM está detenida, no veremos el sistema operativo detectado, ya que el hipervisor no podrá conectar con las VMWare Tools.

2) Azul: "Edit Settings", pestaña "Options", "Guest Operating System": Aquí podemos ver el sistema operativo configurado. Cuando provisionamos esta VM en el asistente de configuración, seleccionamos un sistema operativo, esta opción, nos indica el sistema operativo que elegimos.

La idea es que encaje el sistema operativo detectado con el sistema operativo configurado.

Si no es así, podemos encontrarnos con problemas o con perdidas de rendimiento.

Un problema podría ser el siguiente: 

Adaptador virtual SCSI incorrecto:

Si desplegamos una VM nueva con la opción "Custom", nos permitirá personalizar la NIC, el adaptador virtual SCSI, etc, podemos ver como los parámetros cambian según el sistema operativo elegido.

Por ejemplo, si seleccionamos un sistema operativo Windows Server 2012, el adaptador SCSI virtual elegido por defecto será "LSI Logic SAS", mientras que si seleccionamos un sistema operativo Windows Server 2003, el adaptador SCSI virtual elegido por defecto será "LSI Logic Parallel".

VMWare: ESXi deshabilitar IPv6

Dependiendo de la versión de VMWare ESXi, el soporte para IPv6 estará por defecto activado o desactivado:

VMware vSphere ESXi 4.1 - Desactivado
VMware vSphere ESXi 5.0 - Desactivado
VMware vSphere ESXi 5.1 - Activado
VMware vSphere ESXi 5.5 - Activado
VMware vSphere ESXi 6.0 - Activado

En este post analizaremos varias forma de verificar si disponemos del protocolo IPv6 activado en nuestros hosts VMWare ESXi y también veremos varios métodos para habilitar o deshabilitar IPv6.

Entre los métodos analizados destaca el uso de la PowerCLI.

Con PowerCLI podemos verificar, habilitar o deshabilitar IPv6 de forma masiva en todos los hosts VMWare ESXi.

Si no disponemos de la red corporativa funcionando sobre IPv6: ISP, DHCP, firewall, dispositivos, la recomendación es deshabilitar IPv6 en los hosts VMWare ESXi.

> Formas de verificar si tenemos activado IPv6 a nivel de host VMWare ESXi:

1) Pantalla de consola ESXi:

Consola ESXi, verificación IPv6

2) Desde CLI:

Ejemplo de host ESXi con IPv6:

~ # esxcli network ip get
   IPv6Enabled: true
 

Ejemplo de host ESXi sin IPv6:

~ # esxcli network ip get
   IPv6Enabled: false

3) Desde VSphere Client:

Desde la vista "Hosts and Clusters", seleccionamos un host ESXi, pestaña "Configuration", apartado "Networking" y nos fijamos sobre "Management Network" si vemos una dirección IPv6.

Vsphere Client, verificación IPv6

4) Desde PowerCLI:

La ventaja de utilizar PowerCLI es que podemos verificar todos los hosts ESXi a la vez.

En primer lugar, conectaremos con nuestro Virtual Center:

Connect-VIServer -Server XXX.XXX.XXX.XXX -User YYYYYYY -Password ZZZZZZZZ

Ejemplo de ejecución (verificación IPv6 en los hosts ESXi):

Get-VMHost | Get-VMHostNetwork| Select-Object VMHost, IPv6Enabled|fl

VMHost      : 172.17.0.201
IPv6Enabled : True

VMHost      : 172.17.0.202
IPv6Enabled : False

> Formas de deshabilitar IPv6 en los hosts VMWare ESXi:

1) Pantalla de consola ESXi:

Seguimos los siguientes pasos:

> Pulsamos tecla F2
> Introducimos credenciales (root/XXXXX)
> Configure Management Network
> IPv6 Configuration
> Pulsamos ENTER
> Desmarcamos con la tecla ESPACIO la opción "Enable IPv6 (restart required)"
> Pulsamos ENTER
> Pulsamos ESC y aparece: Apply changes and reboot host? > Pulsamos la tecla Y

2) Desde CLI:

Para deshabilitar IPv6:

esxcli network ip set --ipv6-enabled=false

Para habilitar IPv6:

esxcli network ip set --ipv6-enabled=false

Para reiniciar el host ESXi: reboot

3) Desde VSphere Client:

Desde la vista "Hosts and Clusters", seleccionamos un host ESXi, pestaña "Configuration", apartado "Networking", "Properties"

Marcamos la opción: "Enable IPv6 support on this host system"

VSphere Client, habilitar o deshabilitar IPv6

4) Desde PowerCLI:

En primer lugar, conectaremos con nuestro Virtual Center: 

Connect-VIServer -Server XXX.XXX.XXX.XXX -User YYYYYYY -Password ZZZZZZZZ

Para deshabilitar IPv6 en todos los hosts VMWare ESXi:

Get-VMHost | Get-VMHostNetwork | Set-VMHostNetwork -IPv6Enabled $false

Para habilitar IPv6 en todos los hosts WMWare ESXi:

Get-VMHost | Get-VMHostNetwork | Set-VMHostNetwork -IPv6Enabled $true

Vista de ejecución, deshabilitar IPv6 en todos los hosts VMWare ESXi:

PowerCLI, Habilitar o deshabilitar IPv6

Para reiniciar todos los hosts VMWare ESXi sin confirmación:

Get-VMHost | Restart-VMHost -force -Confirm:$false

VMWare: PowerCLI tarea programada

En ocasiones necesitamos configurar la ejecución de un script de PowerCLI dentro de una tarea programada de Windows en el equipo donde tenemos instalado Virtual Center y PowerCLI.

Aquí tenemos un par de ejemplos de scripts de PowerCLI que podríamos programar su ejecución de forma regular:



Para configurar una tarea programada que ejecute un script de PowerShell, deberemos indicar el interprete de linea de comandos a utilizar.

Veamos un ejemplo práctico (Script de PowerShell):

Imaginemos que disponemos del siguiente script (con el cmd-let Get-Content vemos el contenido de un fichero de texto):

PS C:\PS-Scripts> dir

    Directorio: C:\PS-Scripts

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        05/06/2015     12:31         32 ps-test.ps1

PS C:\PS-Scripts> Get-Content .\ps-test.ps1
Test-Path C:\Windows > 1.txt

Ejecutamos el programador de tareas de Windows:

%windir%\system32\taskschd.msc /s

1) Configuramos el nombre de la tarea y su configuración general:

Programador de tareas - General

 2) Indicamos en la pestaña "Acciones" que ejecute el script: .\ps-test.ps1 en el directorio C:\PS-Scripts con el interprete de linea de comandos: PowerShell.exe

No es necesario indicar la ruta completa de la ubicación del fichero PowerShell.exe, ya que la ruta está indicada en el PATH del sistema.

Programador de tareas - Acciones

3) Introducimos las credenciales con las que se ejecutará la tarea programada:

Programador de tareas - Credenciales

Si el script a ejecutar es de PowerCLI, bastará con añadir en el interior del script:

Add-PSSnapin VMware.VimAutomation.Core

y dispondremos de todos los cmd-lets de PowerCLI.

Veamos un ejemplo práctico (Script de PowerCLI):

PS C:\PS-Scripts> Get-Content .\pcli-test.ps1
 
Add-PSSnapin VMware.VimAutomation.Core

Connect-VIServer -Server XXX.XXX.XXX.XXX -User YYYYYYY -Password ZZZZZZZZ

Get-VM | Get-Snapshot > Lista-Snaphots.txt

Según el ejemplo, en el fichero Lista-Snaphots.txt dispondremos de la lista de snapshots de toda nuestra infraestructura virtual.

Con el cmd-let Connect-VIServer conectamos a nuestro Virtual Center.



VMWare: PowerCLI Wait-Tools

Como hemos visto en post anteriores, con PowerCLI es posible automatizar todo tipo de tareas sobre nuestra infraestructura virtual de VMWare.

En esta ocasión veremos el cmd-let Wait-Tools de PowerCLI que nos permite esperar a que la VM responda a las VMWare Tools.

Veamos un ejemplo:

* Inicio de una VM (SRV1) y espera hasta que inicien las VMWare Tools:

Start-VM SRV1 | Wait-Tools

Inicio de una VM con Wait-Tools

Wait-tools no garantiza que todos los servicios de la VM estén levantados, sin embargo si garantiza que las VMWare Tools estén iniciadas, por lo tanto, los datos de TCP/IP, versión de sistema operativo, nombre del equipo, etc ya  son visibles y operativos.

Podemos utilizar el cmd-let Wait-tools no solo cuando iniciamos o reiniciamos una VM, por ejemplo, si actualizamos las VMWare Tools con el cmd-let Update-Tools, con Wait-tools podemos asegurarnos que estas vuelven a ser visibles después de la actualzación.

Ejemplo: Update-Tools -VM SRV1 -NoReboot | Wait-Tools


VMWare: esxi kill vm

En determinadas ocasiones necesitamos realizar un kill de una VM ya que esta no se detiene de forma correcta desde VSphere Client.

Existen varios procedimientos para realizar un kill de una VM.

En este post veremos hasta cuatro posibilidades.

Para realizar los procedimientos 1, 2 y 3 necesitaremos habilitar el acceso SSH sobre el host ESXi o bien acceder por consola.

Veamos algunos ejemplos:

1) KILL de la VM utilizando ESXTOP

ESXTOP es un administrador de tareas del host ESXi. Su funcionamiento es muy similar al comando top de Linux.

El procedimiento es el siguiente:

- Ejecutamos esxtop
- Pulsamos "c" para activar la vista CPU
- Pulsamos "f" para añadir o quitar columnas
- Pulsamos "c" para añadir la columna:  LWID Leader World Id (World Group ID)
Añadimos LWID con esxtop
*Personalización de columnas utilizando esxtop.

- Pulsamos "k" para activar el modo kill e introducimos el LWID.
Proceso de KILL desde ESXTOP
* En el ejemplo de la pantalla anterior, indicaríamos el LWID 41949 que corresponde a la VM: SRV1

2) KILL de la VM utilizando esxcli:

Utilizando el comandos esxcli es posible listar el World ID de cada VM y realizar un kill. 

Ejecutando esxcli vm process list listamos el World ID de cada VM.

Ejecutando  esxcli vm process kill -t=[soft,hard,force] -w=WorldIDNumber realizamos un kill de la VM.

Disponemos de tres tipos de kill: soft, hard y force.

Podemos ver la ayuda del comando con el parámetro --help: 

~ # esxcli vm process kill --help 
Usage: esxcli vm process kill [cmd options] 

Description:

kill Used to forcibly kill Virtual Machines that are stuck and not responding to normal stop operations. 

Cmd options:

-t|--type= The type of kill operation to attempt. There are three types of VM kills that can be attempted: [soft, hard, force]. 

Users should always attempt 'soft' kills first, which will give the VMX process a chance to shutdown cleanly (like kill or kill -SIGTERM). If that does not work move to 'hard' kills which will shutdown the process immediately (like kill -9 or kill -SIGKILL). 'force' should be used as a last resort attempt to kill the VM. If all three fail then a reboot is required. (required).

-w|--world-id=  The World ID of the Virtual Machine to kill. This can be obtained from the 'vm process list' command (required)

Ejemplo de ejecución:
Ejecución de ESXCLI para realizar el KILL

3) KILL de la VM utilizando el comando kill:

Con el comando ps listamos todos los procesos activos.

Con el comando grep, filtramos la salida del comando, mostrando solo los procesos asociados a las VMs.

En el siguiente ejemplo, podemos ver que después de ejecutar ps|grep vmx, disponemos de dos VMs en ejecución.

Con el comando kill -9, indicamos el identificador de proceso asociado a la VM: SRV1

Igual que ocurre con sistemas Linux, deberíamos probar en primera instancia matar el proceso sin el parámetro -9. Si no conseguimos matarlo, indicar el parámetro -9.
Kill de una VM con ps y kill

4) KILL de la VM utilizando PowerCLI:

Utilizando cmd-lets de PowerCLI también es posible forzar la detención de una VM.

Con el cmd-let: Get-VM, podemos ver todas las VMs registradas en un host o en el Virtual Center.

Utilizando Stop-VM con el parámetro -kill, forzamos el kill sobre la VM.

Para que la salida del comando no pida confirmación, podemos especificar el parámetro: -Confirm:$false

Ejemplo de ejecución:
Kill de una VM con PowerCLI