Powercli – Clonar varias máquinas a la vez

Queremos clonar de forma automática un número de máquinas, con un patrón concreto. Para ello, hemos usado de powershell:

  • -Match
  • -notmatch

La autentación contra vcenter está fuera del script. Debe hacerse antes de llamarlo.

Al no tener resource pools configurados, la nueva máquina, debe dejarse en el resourcepool “Resources”. Con get-resourcepool podemos consultar cuáles tenemos disponibles en nuestra arquitectura.

# Basado en http://vmwaremine.com/2013/05/28/powercli-clone-vm/
#
# Ester Niclos Ferreras
# Last updated: 29/2/14

# PRe: connect-viserver vc

#
# SourceVM:
#
$vmlist= get-vm pattern* | WHERE   { $_.Name -notMatch “no_pattern” }

$datastore = Get-Datastore “my_datastore”
$folder = get-folder “my_folder” -Location “my_datacenter”
$respool = get-ResourcePool Resources -Location “manvmecluster”

foreach ( $sourceVM in $vmlist) {
$cloneName = $sourceVM.Name +’-clone’

#write-host $sourceVM $cloneName $datastore  $folder

if (New-VM -Name $cloneName -ResourcePool $respool -VM $sourceVM -Location $folder -Datastore $datastore -DiskStorageFormat Thin )
{“DONE”}
else
{“Something wrong with cloning”}
}

 

Vsphere 5.5: Update Manager

Tras la instalación de vcenter vsca, llegamos al momento de revisar Vmware update Manager. Para nuestra sorpresa, a día de hoy sigue pidiendo la instalación sobre windows, y con una base de datos SQLServer no empotrada.

 

Before you install Update Manager, you must set up an Oracle or Microsoft SQL Server database. If your deployment is relatively small and contains up to 5 hosts and 50 virtual machines, you can use the bundled SQL Server 2008 R2 Express database, which you can install during the Update Manager installation.

Esperamos que vmware tome otro camino, por que es un producto excelente; pero SQLServer sube muchísimo el coste de despliegue.

 Guía de instalación y documentación general: Vmware update Manager

Actualizar vcenter vsca 5.5.0a a vcenter 5.5.0b

Cuando estábamos resignados a reinstalar, vmware nos ha dado una alegría: ¡VSCA se puede actualizar desde paquetes a través del interfaz web!

Ni está muy claro en la página de vmware, ni en la guía está entre los procedimientos de actualizacion. Sin embargo en el blog de vpros sí hacían referencia a ello.

  1. Crear un clon de vcenter
  2. Entrar por la interfaz de administración:
    https://vcenter:5480/#update.Status

  1. Aplicar el parche.

Vmware vsphere 5.5: Error MKS al abrir una consola

Error: Al conectar con una máquina virtual, se devuelve: Unable to connect to the MKS: malformed response from server

Revisar la conexión por el puerto 902.

Normalmente, un error de MKS al conectar con la consola de una máquina virtual, tiene que ver con un corte en las conexiones entre nuestro PC de origen, y el host que contiene la máquina por el puerto 902.

Definición de los puertos para la versión 5.5.0a

Error periódico en el host. Uso de la imagen para HP

En nuestro caso, revisadas las comunicaciones, se trata de un error de la imagen ESXi 5.5 con blades de HP G8. Os paso un hilo, donde está reportado:

https://communities.vmware.com/thread/462311?start=15&tstart=0

Hay ya un parche que aún no hemos habiltiado:

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2063788

Por el momento, hemos optado por parar el servicio de hp ams, con uno de estos dos comandos:

chkconfig hp-ams.sh off

/etc/init.d/hp-ams.sh stop

 

 

 

Instalar drivers adicionales en vmware ESXi 5.5

Bajar los drivers que nos faltan de la página de vmware.

Leer doc/README para ver cómo se instalan.

En nuestro caso, se copia el bundle por scp, y se ejecuta en el servidor:

 

/tmp/BCM-NetXtremeII-2.0-1407733 # esxcli software vib install -d BCM-NetXtremeII-2.0-offline_bundle-1407733.zip
[MetadataDownloadError]
Could not download from depot at zip:/var/log/vmware/BCM-NetXtremeII-2.0-offline_bundle-1407733.zip?index.xml, skipping ((‘zip:/var/log/vmware/BCM-NetXtremeII-2.0-offline_bundle-1407733.zip?index.xml’, ”, “Error extracting index.xml from /var/log/vmware/BCM-NetXtremeII-2.0-offline_bundle-1407733.zip: [Errno 2] No such file or directory: ‘/var/log/vmware/BCM-NetXtremeII-2.0-offline_bundle-1407733.zip'”))
url = zip:/var/log/vmware/BCM-NetXtremeII-2.0-offline_bundle-1407733.zip?index.xml
Please refer to the log file for more details.

Sin embargo, si ponemos la ruta completa:

 

/tmp/BCM-NetXtremeII-2.0-1407733 # esxcli software vib install -d /tmp/BCM-NetXtremeII-2.0-1407733/BCM-NetXtremeII-2.0-offline_bundle-1407733.zip
Installation Result
Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
Reboot Required: true
VIBs Installed: Broadcom_bootbank_misc-cnic-register_1.78.50.v55.4-1OEM.550.0.0.1331820, Broadcom_bootbank_net-bnx2_2.2.4d.v55.2-1OEM.550.0.0.1331820, Broadcom_bootbank_net-bnx2x_1.78.58.v55.1-1OEM.550.0.0.1331820, Broadcom_bootbank_net-cnic_1.78.53.v55.4-1OEM.550.0.0.1331820, Broadcom_bootbank_scsi-bnx2fc_1.78.51.v55.2-1OEM.550.0.0.1331820, Broadcom_bootbank_scsi-bnx2i_2.78.52.v55.2-1OEM.550.0.0.1331820
VIBs Removed: Broadcom_bootbank_misc-cnic-register_1.78.1.v55.7-1OEM.550.0.0.1198611, Broadcom_bootbank_net-bnx2_2.2.3t.v55.7-1OEM.550.0.0.1198611, Broadcom_bootbank_net-bnx2x_1.78.28.v55.2-1OEM.550.0.0.1198611, Broadcom_bootbank_net-cnic_1.78.12.v55.6-1OEM.550.0.0.1198611, Broadcom_bootbank_scsi-bnx2fc_1.78.16.v55.4-1OEM.550.0.0.1198611, Broadcom_bootbank_scsi-bnx2i_2.78.11.v55.4-1OEM.550.0.0.1198611
VIBs Skipped:

Vmware: Depuración de errores de ESXi

Esta es la guía de pasos para depurar un error de un host ESXi de vmware.

Diagnóstico: El host ESXi aparece en el inventario como Disconnected.

Intentar reconectar

Si funciona, ha sido un error de red puntual.

Intentar acceder directamente al host con vsphere vclient

Ver si las máquinas aún están ejecutando. Si están ejecutando, parece un error de conexión host esxi con vcenter.

Si no podemos acceder al host, ni desde la misma subred, parece que parte de los servicios de esx se han caido. Intentamos acceder a través de la consola o de ssh.

Ver la consola local del host (esxi console)

Si hay un pantallazo morado, es momento de reiniciar, y luego leerse los logs a ver qué ha pasado.

Si no hay pantallazo morado, activar la consola ESXi

  1. Ver los logs: tail -f /var/log/?
  2. Probar la conectividad con vcenter mediante ping y traceroute
  3. Ver si es un problema con la vlan de conexión

 

 

Vmware powercli: Scripts útiles

Los scripts aquí definidos están para descargar en github.

Activar y desactivar de forma masiva ssh en los hosts

Desde la 4.1, se puede activar ssh, sin necesidad de entrar por las ilos de los servidores.

Es importante el -Confirm $false, por que si no , pregunta 100 veces.

Nos hemos basado en esta utilísima entrada de techshifter

Get-Cluster | Foreach {
$cl=$_
Get-Cluster -name $cl | Get-VMHost | Foreach {
# Start-VMHostService -HostService ($_ | Get-VMHostService | Where { $_.Key -eq "TSM-SSH" } )
# Stop-VMHostService -HostService ($_ | Get-VMHostService | Where { $_.Key -eq "TSM-SSH" } ) -Confirm:$false
}
}

Activar snmp de forma masiva en todos los nodos

Este script es algo más complicado, porque es necesario iniciar sesión contra el servidor vcenter, y depués contra cada uno de los hosts.

vmware vcenter 5.5.0a: El inventario deja de actualizarse en el cliente web

Ya nos ha pasado 2 veces. Después de unos 30 días, el inventario de vmware deja de actualizarse a nivel del cliente web. Se nota mucho porque:

  1. El panel de tareas se queda congelado con tareas antiguas y no se refrescan
  2. Las máquinas virtuales se quedan asignadas a hosts en los que ya no están (tras drs) y no se puede acceder a ellas. Al abrir la consola da un error: “you have no privileges to view this object or it does not exist”.

Ya hay un hilo reportando este problema en las communities, también hemos escrito la resolución allí.

Tambien Gabesvirutalworld, lo ha reportado para la versión 5.1.

Solución

Con un caso de soporte con vmware, nos han dado la solución para este problema.  Hay distintos comandos para versiones anteriores de vmware a los que también les pasa este problema:

service vmware-inventoryservice stop
# Remove stored data:
rm -rf /storage/db/inventoryservice/data
/usr/lib/vmware-vpx/inventoryservice/scripts/ds-invoke.sh -Dvim.logdir=/var/log/vmware/vpx/inventoryservice com.vmware.vim.dataservices.CreateDb /storage/db/inventoryservice/data changeme default changeme
service vmware-inventoryservice start
vcenterhost=vchost.mydomain.com
/usr/lib/vmware-vpx/inventoryservice-registration/vcregtool.sh -Dvim.logdir=/var/log/vmware/vpx/inventoryservice-registration com.vmware.vim.dataservices.vcregtool.RegisterVC -action register -lookupserviceurl https://$vcenterhost:7444/lookupservice/sdk -isurl https://$vcenterhost:10443 -vcurl https://$vcenterhost/sdk/vimService -vccert /etc/vmware-vpx/ssl/rui.crt -vcprivkey /etc/vmware-vpx/ssl/rui.key -vcinstancecfg /etc/vmware-vpx/instance.cfg -vcendpointsdir /usr/lib/vmware-vpx/endpoints -vcextensionsdir /usr/lib/vmware-vpx/extensions
service vmware-vpxd restart

En nuestro caso, el servidor tiene dos nombres hacia fuera: vcenter y vspherecsl. Por ello, fue necesario también añadir en el /etc/hosts, una entrada con la IP externa y con el segundo nombre de servidor

En /var/log/vmware/vpx/inventoryservice/ds.log teníamos este mensaje:


inherited from com.vmware.vim.binding.vim.fault.InvalidLogin: Cannot complete login due to an incorrect user name or password.

Fue necesario editar el fichero hosts, y poner el segundo nombre dns de la máquina. Ignoro porqué había funcionado hasta entonces.

vcenter:~ # cat /etc/hosts
127.0.0.1  vcenter.domain.com vcenter localhost
external-ip vspherecsl.domain.com vspherecsl

 

 

 

EMC: Ejecutar ESXgrab 1.3.2 sin que pida parámetros

Configuración de customer.profile

 

#Thu Dec 05 07:13:03 CET 2013
EMAIL_ID=id@mycompany.com
PARTY_NUMBER=0000000
CONTACTPHONE_ID=0000000
CONTACT_ID=0000000
CUSTOMER_ID=000000

Para cada host, ejecutamos:

emcgrab.exe -host myhost -user root -password mypassword -vmsupport -legal -autoexec

Instalación y configuración de OCS Inventory

Vamos a hacer un piloto con ocs inventory. Hemos intentado usar la máquina virtual que dan en la página principal de ocs inventory, sin éxito. Está documentado al final de este mismo tutorial.

Instalación completa sobre Debian

Prerequisito: Instalación de mysql

apt-get install -y mysql-client-5.5 mysql-server

Recomendamos instalar también phpmyadmin para poder hacer cambios de forma fácil sobre la base de datos.

Prerequisito: Instalación de apache2

apt-get install -y apache2 libapache2-mod-perl2 libapache2-mod-perl2-dev libapache2-mod-php5 libio-compress-perl

Prerequisito: Instalación perl

Configuración previa del proxy si nos hace falta.


cpan install Config::IniFiles XML::Simple Compress::Zlib
cpan install DBI DBD::Mysql Apache::DBI Net::IP Apache2::SOAP
apt-get install expat libexpat1-dev libssh-dev libconfig-yaml-perl
cpan install Crypt::SSLeay XML::Parser SOAP::Lite
cpan -i XML::Entities

Prerequisito: Instalación php

apt-get install php5 php-pear
apt-get install php5-gd libphp-pclzip

Instalación servidor ocs

Hemos dejado todas las opciones por defecto, aunque, lo hemos tenido que ejecutar varias veces por problemas con módulos de perl que faltaban.

tar -xvzf OCSNG_UNIX_SERVER-2.1rc1.tar.gz
cd OCSNG_UNIX_SERVER-2.1rc1/
sh setup.sh
service apache2 restart

Abrimos el navegador a http://administration_console/ocsreports  para acabar de configurar:

Gestión OCS

Usuario por defecto: admin:admin

Antes de finalizar, hay que borrar el fichero install.php

rm -f /usr/share/ocsinventory-reports/ocsreports/install.php

Cambiar la clave de usuario de ocs en mysql, y cambiar el usuario de conexión en el archivo de php:

cat /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php
<?php
define("DB_NAME", "ocsweb");
define("SERVER_READ","localhost");
define("SERVER_WRITE","localhost");
define("COMPTE_BASE","ocs");
define("PSWD_BASE","newpasswd");
?>

Y, la clave de los agentes:
grep OCS_DB_ /etc/apache2/conf.d/z-ocsinventory-server.conf
PerlSetEnv OCS_DB_USER ocs
PerlSetVar OCS_DB_PWD newpasswd

Los logs de ocs se guardan en:

/var/log/ocsinventory-server

Al configurar los agentes, se usa como ruta:

http://my-ip/ocs-inventory

Cuidado con los proxies. Requiere su configuración, porque si no, el tráfico no llega al destino.

 

 

Pruebas con la máquina virtual de ocs inventory

Tras la descarga, subimos la máquina virtual a un datastores de la plataforma de virtualización y registramos la máquina en nuestro inventario:

Para registrar la máquina virtual, se selecciona el archivo vmx, y, en el menú contextual, aparece la opción de registrar la nueva máquina:

Al añadir, da un error de host, relacionado con el disco

El problema está en la versión de hw virtual, por lo que será necesario hacer una actualización para que pueda ejecutar en vmware 5.5

Además de hacer un upgrade de versión, necesitamos convertir el formato de disco. En nuestro caso, no tener herramientas disponibles, lo instalamos sobre debian de 0.