VMware

Desbloquear root en ESXi

Si la cuenta root se bloquea debido a demasiados intentos fallidos de inicio de sesión, pierde el cliente web vsphere y el acceso ssh al host, la única forma de desbloquearlo es hacerlo a través de la consola DCUI-> ESX Shell, el siguiente comando restablecerá la cuenta root.

esxihost01# pam_tally2 --user root --reset

En un host ESXi independiente sin que vCenter lo administre, solo puede establecer reglas de firewall mediante esxcli a través de SSH o ESX Shell. Los siguientes comandos permiten que solo la red a.b.c.d / e acceda al cliente web de vSphere y SSH.

esxcli network firewall ruleset set --allowed-all false --ruleset-id=vSphereClient
esxcli network firewall ruleset set --allowed-all false --ruleset-id=sshServer
esxcli network firewall ruleset allowedip add --ip-address=a.b.c.d/e --ruleset-id=vSphereClient
esxcli network firewall ruleset allowedip add --ip-address=a.b.c.d/e --ruleset-id=sshServer

Cómo activar SNMP en VCSA 

El primer paso es activar SNMP si no está activado, para ello nos logaremos por SSH en nuestro vCenter Appliance VCSA

etaboada@MacBookProEdu ~ % ssh root@X.X.X.X

VMware vCenter Server Appliance 6.5.0

Type: vCenter Server with an embedded Platform Services Controller

root@X.X.X.X's password:
Last login: Fri Oct 16 05:27:48 2020 from Y.Y.Y.Y
Connected to service

    * List APIs: "help api list"
    * List Plugins: "help pi list"
    * Enable BASH access: "shell.set --enabled True"
    * Launch BASH: "shell"

Command>

Teclearemos snmp.get

Command> snmp.get
Config:
   Enable: True
   Users:
   Notraps:
   Privacy: none
   Loglevel: warning
   V3targets:
   Pid: 29643
   Syslocation: Yécora 4, 28022 Madrid, Spain
   Targets:
   Remoteusers:
   Authentication: none
   Communities: At3incoSNMPMng
   Engineid: 80001adc808ad6440eb8497b5f00000000
   Port: 161
   Syscontact: sistemas@ateinco.es
Command>

Vemos que está activado. En el caso de que el campo Enable estuviera en false, deberemos de configurar el SNMP

En el siguiente comando vamos a configurar SNMP de manera básica usando la comunidad public, a su vez vamos a decirle que quiero que nos lance todas las traps al Host de PRTG, y posteriormente que solamente envíe las notificaciones de warning y error.

Command> snmp.set --communities public
Command> snmp.set --targets 192.168.X.X@162/public
Command> snmp.set --loglevel warning
Command> snmp.enable

Purple Screen Of Death

VMware: ESXi pantalla rosa, reinicio automático

A veces VMware provoca una pantalla rosa o púrpura cuando existe algún fallo. El problema es que VMware se queda ahí y no se reinicia, con lo que perdemos totalmente el control de la máquina

En ocasiones nos puede interesar configurar el host ESXi para que se reinicie si se produce una pantalla rosa

Para configurar el reinicio automático del host ESXi en caso de kernel panic (pantalla rosa) desde CLI:

Haremos login via ssh al host ESXi, y una vez dentro teclearemos

esxcfg-advcfg -s 15 /Misc/BlueScreenTimeout

El valor 15 indica el número de segundos de espera antes del reinicio. Podemos provocar un Kernel Panic para comprobar el funcionamiento, para ello teclearemos:

vsish -e set /reliability/crashMe/Panic 1

OJO MUY IMPORTANTE. Esto provocará un Kernel Panic, no hagas esto si la máquina está en producción y tiene VM arrancadas.

SNMP en VMWare ESXi

Configurar SNMP en VMWare ESXi

Comprobar si el SNMP está activo en VMWare ESXi

Para configurar los nodos ESXi, debemos comprobar que el SNMP está activo, para ello vamos a la configuración de servicios, y comprobamos si el servicio SNMP está arrancado, en caso de que no esté arrancado, trataremos de iniciar el servicio. Si nos arroja un error, lo más normal es que esto venga dado por un problema en los retornos de carro del fichero de configuración de SNMP en el nodo de ESXi que en muchos casos viene mal en las ISO de instalación. Este problema que está reportado por VMware se soluciona de la siguiente forma:

Hacemos login por ssh al nodo ESXi. En caso de que no podamos accederé s necesario habilitar el ssh. Para ello haz clic con el botón derecho en Host desde el inventario de VMware Host Client.

Selecciona Servicios en el menú desplegable y, a continuación, Secure Shell (SSH). Si SSH está deshabilitado, haz clic en Habilitar para habilitarlo.

En el caso de usar el cliente convencional de VMWare, en configuración, perfil de seguridad.

En algunos sistemas VMWare ESXi, aparece un warning cuando se habilita, si se desea que el SSH esté habilitado y quitar el warning, vamos a Configuración en el host ESXi, vamos a Opciones Avanzadas y buscamos en UserVars , hay una opción que se llama UserVars.SuppressShellWarning. Cambiamos el valor de 0 a 1, pulsamos Ok y ya lo tenemos

Ahora que tenemos todo, y habilitado el SSH, procedemos a hacer login

etaboada@MacBookProEdu ~ % ssh root@mad01vmw009.xxxxx.net
Password:

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.

[root@mad01vmw009:~]

Vamos a la carpeta de configuración de vmware

[root@mad01vmw009:~]cd /etc/vmware

Realizamos una copia del fichero de configuración de SNMP

[root@mad01vmw009:~]cp snmp.xml snmp.xml.OLD

A continuación, editamos el fichero snmp.xml

[root@mad01vmw009:~]vi snmp.xml

Borramos el contenido del fichero. Ahora con el fichero vacío, debemos de copiar el siguiente contenido.

<?xml version='1.0' encoding='ISO-8859-1'?>
<config>
<snmpSettings>
<enable>true</enable>
<port>161</port>
<syscontact>correo@midominio.com</syscontact>
<syslocation>Calle, CP, Ciudad, Pais</syslocation>
<EnvEventSource>indications</EnvEventSource>
<communities>MICOMUNIDAD</communities>
<loglevel>info</loglevel>
<authProtocol></authProtocol>
<privProtocol></privProtocol>
</snmpSettings>
</config>

En este caso, pondremos como Syscontact la dirección de correo o el nombre del administrador del sistemas. Como ubicación la dirección donde está el servidor o algún valor que nos sea útil. Si ponemos la dirección como calle, código postal, ciudad, país. El SNMP nos ubicará el servidor en el mapa.

En la cadena de comunidades en lugar de MICOMUNIDAD; pondremos el nombre de nuestra comunidad SNMP.

Guardamos el fichero y comprobaremos que el servicio SNMP se inicia y lo configuraremos si es así, para que se inicie con el host

VMware cambiar ubicación de los Snapshots

En infraestructuras virtuales VMware ESXi, en ocasiones, nos podemos encontrar con la necesidad de cambiar la ubicación de los snapshots de una máquina virtual.

Como ya sabemos, el software de copias de seguridad a nivel de hipervisor utiliza snaphots durante el proceso de la copia de seguridad.

Dicho de otra forma, al iniciar una copia de seguridad de una VM, se realiza un snapshot de la misma y al finalizar se borra.

El problema viene cuando disponemos de poco espacio en el datastore y la VM, durante el proceso de backup, se realizan cambios sobre la misma, por ejemplo, aplicación de parches  etc... pueden provocar que el snapshot crezca y por tanto peligre el espacio libre en el datastore.

El hecho es que de forma predeterminada, los ficheros asociados al snapshot, se guardan en la misma ubicación que el resto de ficheros de la máquina virtual.

Por tanto, de forma predeterminada, los ficheros de la VM y los ficheros asociados al snapshot se guardan en el mismo datastore.

Veamos cómo cambiar ubicación por defecto de los snapshots de una VM:

Para ello, seguiremos los siguientes pasos:

1) Buscamos una ruta donde ubicar los snapshots.

Si conectamos vía SSH, veremos los datastores que tiene montados el host ESXi, ejecutando:

ls -lF /vmfs/volumes

Por ejemplo, podemos crear una carpeta dedicada a los snapshots en el DATASTORE1, para la VM1:

mkdir /vmfs/volumes/DATASTORE1/VM1/snapshots

Entendemos que la VM1, actualmente reside en otro datastore.

2) Paramos la VM.

3) Editamos el fichero VMX de la VM y añadimos:

workingDir="/vmfs/volumes/DATASTORE1/VM1/snapshots"

y a partir de ESXi 5, añadimos también:

snapshot.redoNotWithParent = "true"

4) Debemos desregistrar y registrar la VM en el inventario.

Si queremos realizar el proceso vía SSH, bastará con ejecutar:

A) Listamos las VMs para obtener el vmid de la VM que queremos desregistrar:

vim-cmd vmsvc/getallvms

B) Desregistramos la VM, indicando el vmid:

vim-cmd vmsvc/unregister vmid

C) Registramos la VM, indicando la ruta al fichero VMX:

vim-cmd solo/registervm /ruta-al-fichero-vmx

5) Iniciamos la VM.

VMware Saber IP iDRAC DELL

En ocasiones, nos podemos encontrar en un entorno VMware ESXi con que no sabemos la dirección IP de la tarjeta iDRAC de un servidor DELL

Las tarjetas iDRAC (Integrated Dell Remote Access Controller) permiten al administrador monitorizar y administrar de forma remota un servidor DELL.

Con la iDRAC, incluso podemos actualizar el firmware del servidor o acceder a la consola del servidor.

Existen varias formas de saber la dirección IP de nuestra iDRAC.

En el caso de que:

- No podemos reiniciar el host VMware ESXi.

- No podemos instalar las herramientas de DELL.

- No podemos acceder al Virtual Center.

Disponemos de esta alternativa:

Entrar vía SSH en el host ESXi y ejecutar:

enum_instances OMC_IPMIIPProtocolEndpoint root/cimv2 | grep IPv4Address

Ejecutando esta acción, conseguimos obtener la dirección IPv4 de nuestra iDRAC.

No confundir este comando, con el comando esxcli para obtener las direcciones IPv4 de las NICs del host VMware ESXi:

Vmware-saber-ip-idrac.png

1) Lista de direcciones IP de los interfaces de red de VMware ESXi.

2) Dirección IP de la iDRAC DELL.

VMWare comandos de consola útiles

En el caso de no disponer de acceso a la consola web de VMWare, a veces necesitamos realizar ciertas acciones y sin este acceso no se pueden realizar.

La solución consiste en usar los comandos de consola de VMWare ESXI para realizarlos.

Habilita la sesión SSH con acceso root:

Desde el vSphere Client

En VMware vSphere Client, navega hasta Hosts y clústeres y selecciona el host ESXi, luego haz clic en Servicio >> Configurar >> SSH.

Haz clic en Iniciar para iniciar el servidor SSH.

En la consola de ESXi (DCUI)

Accedemos a la consola de ESXi (DCUI) y en opciones de solución de problemas (Troubleshouting Options) entramos y hacemos click en habilitar SSH.

Login en la consola SSH

Hacemos login como root en la consola ssh y ya podremos ejecutar los comandos necesarios para trabajar.

Listado de las máquinas VMWare

Escribe el siguiente comando para obtener una lista de todos los hosts virtuales registrados, identificados por su VMID, nombre para mostrar y ruta al archivo de configuración .vmx:

vim-cmd vmsvc/getallvms

Obtendremos una salida como la que mostramos

[root@vmw253:~] vim-cmd vmsvc/getallvms
Vmid         Name                                File                                Guest OS          Version                   Annotation
175    VMFW01             [SSD253_01] VMFW01/VMFW01.vmx                     freebsd64Guest          vmx-11
191    Management          [SSD253_01] Management/Management.vmx               otherLinux64Guest       vmx-11
2      VMTS001            [SSD253_01] VMTS001/VMTS001.vmx                   winNetEnterpriseGuest   vmx-07    Terminal Server1
238    VMWS015            [SSD253_02] VMWS015_NEW/VMWS015_NEW.vmx           winNetEnterpriseGuest   vmx-07
239    VMWS016            [SSD253_02] VMWS016_NEW/VMWS016_NEW.vmx           winNetEnterpriseGuest   vmx-07
240    VMWS010            [SSD253_02] VMWS010_NEW/VMWS010_NEW.vmx           winNetEnterpriseGuest   vmx-07
241    VMWS014            [SSD253_02] VMWS014_NEW/VMWS014_NEW.vmx           winNetEnterpriseGuest   vmx-07
245    VMWS013            [SSD253_02] VMWS013_NEW/VMWS013_NEW.vmx           winNetEnterpriseGuest   vmx-07
247    vcenter62022        [SSD253_01] vcenter62022/vcenter62022.vmx           sles11_64Guest          vmx-08    VMware vCenter Server Appliance
254    VMDESA3            [SSD253_01] VMDESA3/VMDESA3.vmx                   winNetEnterpriseGuest   vmx-07    desarrollo1
255    VMDESA4            [SSD253_01] VMDESA4/VMDESA4.vmx                   winNetEnterpriseGuest   vmx-07    desarrollo2
257    VMWS_ORIGINAL      [SSD253_01] VMWS_ORIGINAL/VMWS_ORIGINAL.vmx       winNetEnterpriseGuest   vmx-07
259    VMTS001_BACKUP     [SSD253_02] VMTS001_BACKUP/VMTS001_BACKUP.vmx     winNetEnterpriseGuest   vmx-07    Terminal Server2
260    VMBD001_BK         [SSD253_01] VMBD001_BK/VMBD001_BK.vmx             winNetEnterpriseGuest   vmx-07
261    TW2019_EN_BLANCO    [SSD253_01] TW2019_EN_BLANCO/TW2019_EN_BLANCO.vmx   windows9Server64Guest   vmx-11
262    TW10_EN_BLANCO      [SSD253_01] TW10_EN_BLANCO/TW10_EN_BLANCO.vmx       windows9_64Guest        vmx-11
263    TW10_CD-CT          [SSD253_01] TW10/TW10.vmx                           windows9_64Guest        vmx-11    desarrollo3
264    TW2019              [SSD253_01] TW2019/TW2019.vmx                       windows9Server64Guest   vmx-11
265    VMWS017            [SSD253_02] VMWS017/VMWS017.vmx                   winNetEnterpriseGuest   vmx-07
266    VMWS018            [SSD253_01] VMWS018/VMWS018.vmx                   winNetEnterpriseGuest   vmx-07
267    VMWS019            [SSD253_02] VMWS019/VMWS019.vmx                   winNetEnterpriseGuest   vmx-07
268    VMWS011            [SSD253_02] VMWS011/VMWS011.vmx                   winNetEnterpriseGuest   vmx-07
269    VMWS012            [SSD253_01] VMWS012/VMWS012.vmx                   winNetEnterpriseGuest   vmx-07
270    VMWS020            [SSD253_02] VMWS020/VMWS020.vmx                   winNetEnterpriseGuest   vmx-07
271    VMWS021            [SSD253_01] VMWS021/VMWS021.vmx                   winNetEnterpriseGuest   vmx-07
273    TW10_XA81           [SSD253_02] TW10_XA81/TW10_XA81.vmx                 windows9_64Guest        vmx-11    desarrollo4
46     VMWS244_VCliente   [SSD253_01] VMWS245/VMWS245.vmx                   windows9Server64Guest   vmx-11    VClient
48     VMWS001            [SSD253_01] VMWS001/VMWS001.vmx                   winNetEnterpriseGuest   vmx-07
5      VMDB001            [SSD253_01] VMDB001/VMDB001.vmx                   winNetEnterpriseGuest   vmx-07
9      VMDESA2            [SSD253_01] VMDESA02/VMDESA02.vmx                 winNetEnterpriseGuest   vmx-07    Desarrollo 12
91     VMDESA1            [SSD253_01] VMDESA11/VMDESA11.vmx                 winNetEnterpriseGuest   vmx-07    desarrollo 11
[root@vmw253:~]

 

Lista de máquinas virtuales en ejecución en ESXi

Puedes ver todas las máquinas virtuales en ejecución en el host

esxcli vm process list

EL resultado sería como el siguiente

[root@vmw253:~] esxcli vm process list
VMDB001
   World ID: 35733
   Process ID: 0
   VMX Cartel ID: 35732
   UUID: 42 2e 4d 7d 3f ec ac 8c-f8 99 23 d5 fd fb 01 05
   Display Name: VMDB001
   Config File: /vmfs/volumes/5e3c400a-49fe189e-39f0-1866da5503b8/VMDB001/VMDB001.vmx

VMWS244_VCliente
   World ID: 35756
   Process ID: 0
   VMX Cartel ID: 35755
   UUID: 42 2e 69 54 de 34 7e d0-f7 d8 db 7a 44 99 ea 32
   Display Name: VMWS244_VCliente
   Config File: /vmfs/volumes/5e3c400a-49fe189e-39f0-1866da5503b8/VMWS245/VMWS245.vmx

VMTS001
   World ID: 35779
   Process ID: 0
   VMX Cartel ID: 35778
   UUID: 42 2e cd 34 5a c5 49 79-2f ba f1 94 dc b1 e3 f7
   Display Name: VMTS001
   Config File: /vmfs/volumes/5e3c400a-49fe189e-39f0-1866da5503b8/VMTS001/VMTS001.vmx
.........................
Parar máquinas desde consola

Apagar la máquina virtual desde el comando ESXi ESXCLI 

Esto comando apaga la máquina si no hay otra forma de hacerlo, matando el proceso de la máquina virtual. Más abajo encontrarás formas mas "civilizadas" de hacerlo.

El comando esxcli se puede utilizar de forma local o remota para apagar una máquina virtual que se ejecuta en ESXi 5.x o posterior.

Apagar una máquina virtual de la lista ejecutando este comando:

esxcli vm process kill --type= [soft,hard,force] --world-id= WorldNumber

En el caso anterior sería por ejemplo para apagar de forma ordenada la máquina WMDB001 ( aparece con el World ID: 35733)

esxcli vm process kill --type= soft --world-id= WorldNumber = 35733
Encender máquinas desde consola

Ejecutamos la lista de máquinas

vim-cmd vmsvc/getallvms

O bien 

vim-cmd vmsvc/getallvms | grep VMDB001

Veremos el ID de la máquina en la primera columna

Lista_VM.png

Comprobamos el estado

vim-cmd vmsvc/power.getstate [ID DE LA MAQUINA]

En este caso

[root@vmw253:~] vim-cmd vmsvc/power.getstate 5
Retrieved runtime info
Powered on
[root@vmw253:~]

Ahora si queremos encender esa máquina (en el caso de que esté apagada) ejecutaremos

vim-cmd vmsvc/power.on

En nuestro ejemplo

vim-cmd vmsvc/power.on 5
Apagar máquinas desde consola

Para apagarla ejecutaremos

vim-cmd vmsvc/power.off

En nuestro ejemplo

vim-cmd vmsvc/power.off 5