Script en bash para configurar ESXi

Para empezar mi aporte en scripting voy a desempolvar un script que hice hace ya unos años.

Aunque VMware nos ofrece Autodeploy + Host Profiles, a lo largo de mi carrera me he encontrado entornos en los que no estaba implementada esta solución, no parecía necesario implementarla, en su momento no se tenía la licencia necesaria o directamente no se quería implementar por tamaño del entorno.

En estos casos el siguiente script puede ser muy útil, además de fácilmente adaptable a la mayoría de entornos, pudiendo cambiar fácilmente VLANs, usuarios, comentar configuraciones que no necesitemos, añadir otras, etc.

Para poder utilizarlo se asume que la Management Network está configurada y el ESXi está accesible por ssh.

Una vez adaptado el script al entorno en que se va a utilizar (cambio de VLAN ID, usuarios, etc), simplemente lo nombramos como más nos guste, por ejemplo config.sh, lo copiamos al ESXi que pretendemos configurar, le damos permisos de ejecución (chmod +x config.sh) y lo ejecutamos.

Lo primero que hará el script es pedirnos los siguientes datos (podemos añadir todo lo que queramos, es simplemente un ejemplo):

– El nombre FQDN que tendrá el ESXi

– IP del DNS primario

– IP del DNS secundario

– IP para vMotion

– IP para Fault Tolerance

– Password para crear un usuario adicional con permisos de administrador

Tened en cuenta los siguientes cambios a realizar antes de usar el script, como indico más arriba se podría preguntar todo esto al inicio del script y utilizarlo como variables:

– Cambiaremos el valor “Password_usuario_monitorizacion” por el password que queramos configurar para el usuario de solo lectura utilizado para monitorización.

– Tenemos la opción de cambiar el password de root si no hemos puesto el definitivo al instalar, descomentar la línea: #echo -e “Password_root” | passwd –stdin

Sustituiríamos el valor “Password_root” por el nuevo password de root.

Como podemos ver hemos trabajado con los password solicitándolos al principio de la ejecución y poniéndolos directamente en el script, os dejo ambos casos para que decidáis como hacerlo en vuestro caso.

– Cambiaremos el valor “Nuestro_dominio” por el dominio a configurar en nuestro ESXi.

– Cambiaremos el valor “IP_o_nombre_de_nuestro servidor_NTP” por la IP o nombre de nuestro servidor NTP.

– Cambiaremos el valor “IP_o_Nombre_de_nuestro_servidor_Syslog” por la IP o nombre de nuestro servidor Syslog.

– Para el SNMP cambiaremos “IP_recolector_traps_snmp”@”Puerto_SNMP”/”Comunidad”, por ejemplo por 10.10.10.54@162/public, poniendo la IP de nuestro servidor recolector de traps, el puerto utilizado y la comunidad.

Por ultimo volver a indicar que podéis comentar rápidamente lo que no aplique al entorno donde se va a ejecutar el script, añadir datos que se piden al inicio, cambiar VLANs, nombres de usuario, el numero de vmnic de cada vSwitch, etc.

Gracias por compartir 🙂

 

#!/bin/sh
#Recogemos los datos para la configuración

echo "Introduce Nombre de Maquina (FQDN):"
read fqdn
echo "Introduce DNS Primario:"
read dns1
echo "Introduce DNS Secundario:"
read dns2
echo "Introduce IP vMotion:"
read vmotion
echo "Introduce IP Fault Tolerance:"
read ft
echo "Introduce el password del usuario adicional con permisos de administrador:"
read user2

echo Configurando usuarios y Password...
sleep 2
##################################################################################################################
#### Crea usuario nagios con el password y le da permisos read-only                                         ######
##################################################################################################################
/usr/lib/vmware/auth/bin/adduser -H -D nagios
echo -e "Password_usuario_monitorizacion" | passwd nagios --stdin
vim-cmd vimsvc/auth/entity_permission_add vim.Folder:ha-folder-root 'nagios' false ReadOnly true

##################################################################################################################
# Crea usuario admin con el password solicitado para el usuario adicional y le da permisos de Administrator  #####
##################################################################################################################
/usr/lib/vmware/auth/bin/adduser -H -D admin
echo -e $user2 | passwd admin --stdin
vim-cmd vimsvc/auth/entity_permission_add vim.Folder:ha-folder-root 'admin' false Admin true


##################################################################################################################
#### Cambio password root, suponemos que ya lo hemos puesto al instalar y configurar Management Network,       ###
#### si no es asi descomentar la siguiente linea e indicar el password                                         ###
##################################################################################################################
#echo -e "Password_root" | passwd --stdin

echo Creación de usuarios finalizada correctamente
sleep 5

echo Configurando nombre de maquina y DNS...
##################################################################################################################
#### Establecer nombre máquina y DNS                                                                        ######
##################################################################################################################
esxcli system hostname set --fqdn=$fqdn
esxcli network ip dns search add --domain="Nuestro_dominio"
esxcli network ip dns server add --server=$dns1
esxcli network ip dns server add --server=$dns2

echo Cambio de nombre y DNS finalizado correctamente
sleep 5

echo Configurando vSwitch 0...
##################################################################################################################
#### Configuracion vSwitch 0                                                                                ######
##################################################################################################################
#Quitar Default portgroup VM Network
esxcli network vswitch standard portgroup remove -v "vSwitch0" -p "VM Network"

#Añadir vmnic 1 al vSwitch0
esxcli network vswitch standard uplink add -v "vSwitch0" -u "vmnic1"

#Ponemos vmnic1 activa en vSwitch0
esxcli network vswitch standard policy failover set -v "vSwitch0" -a vmnic0,vmnic1 -f "link"

#Establece failover Management Network
esxcli network vswitch standard portgroup policy failover set -p "Management Network" -a vmnic0 -s vmnic1 -f "link"

#Añadir Port Group vMotion
esxcli network vswitch standard portgroup add -p "vMotion" -v "vSwitch0"

#Establece vlan 400 vMotion
esxcli network vswitch standard portgroup set -p "vMotion" -v 400

#Establece vmkernel vMotion
esxcli network ip interface add -i vmk1 -p "vMotion"

#Establece IP vMotion, sustituir la mascara de subred si es necesario
esxcli network ip interface ipv4 set -i vmk1 -I $vmotion -N 255.255.255.0 -t static

#Marca como vMotion el Portgroup
vim-cmd hostsvc/vmotion/vnic_set vmk1

#Establece failover vMotion
esxcli network vswitch standard portgroup policy failover set -p "vMotion" -a vmnic1 -s vmnic0 -f "link"

echo vSwitch 0 configurado correctamente
sleep 5

echo Configurando vSwitch 1...
##################################################################################################################
#### Configuracion vSwitch 1                                                                                ######
##################################################################################################################
#Agrega vSwitch1
esxcli network vswitch standard add -v "vSwitch1"

#Agregar uplinks 2,4,3,5
esxcli network vswitch standard uplink add -v "vSwitch1" -u "vmnic2"
esxcli network vswitch standard uplink add -v "vSwitch1" -u "vmnic4"
esxcli network vswitch standard uplink add -v "vSwitch1" -u "vmnic3"
esxcli network vswitch standard uplink add -v "vSwitch1" -u "vmnic5"

#Pone las 4 activas a nivel de vSwitch, podriamos sustituir "link" por "beacon" para activar Beacon proving si el entorno
#lo requiere
esxcli network vswitch standard policy failover set -v "vSwitch1" -a vmnic2,vmnic4,vmnic3,vmnic5 -f "link"

#Crear VLANs PRO
esxcli network vswitch standard portgroup add -p "Produccion_VLAN300" -v vSwitch1
esxcli network vswitch standard portgroup add -p "Produccion_VLAN310" -v vSwitch1
esxcli network vswitch standard portgroup add -p "Produccion_VLAN401" -v vSwitch1
esxcli network vswitch standard portgroup add -p "Produccion_VLAN410" -v vSwitch1
esxcli network vswitch standard portgroup add -p "Produccion_VLAN10" -v vSwitch1

#Poner VLAN ID a los portgroup de PRO
esxcli network vswitch standard portgroup set -p "Produccion_VLAN300" -v 300
esxcli network vswitch standard portgroup set -p "Produccion_VLAN310" -v 310
esxcli network vswitch standard portgroup set -p "Produccion_VLAN401" -v 401
esxcli network vswitch standard portgroup set -p "Produccion_VLAN410" -v 410
esxcli network vswitch standard portgroup set -p "Produccion_VLAN10" -v 10

echo Creacion vSwitch 1 finalizada correctamente
sleep 5

echo Configurando vSwitch 2...
##################################################################################################################
#### Configuracion vSwitch 2                                                                                ######
##################################################################################################################
#Agrega vSwitch2
esxcli network vswitch standard add -v "vSwitch2"

#Agregar uplinks 6,7
esxcli network vswitch standard uplink add -v "vSwitch2" -u "vmnic6"
esxcli network vswitch standard uplink add -v "vSwitch2" -u "vmnic7"

#Poner uplinks como activos a nivel de vSwitch
esxcli network vswitch standard policy failover set -v "vSwitch2" -a vmnic6,vmnic7 -f "link"

#Agregamos PortGroup de Gestion y Backup
esxcli network vswitch standard portgroup add -p "Gestion y Backup" -v "vSwitch2"

#Añadimos VLAN ID al PortGroup Gestion y Backup
esxcli network vswitch standard portgroup set -p "Gestion y Backup" -v 121

#Agregamos PortGroup de Fault Tolerance
esxcli network vswitch standard portgroup add -p "FT" -v "vSwitch2"

#Establece vlan FT
esxcli network vswitch standard portgroup set -p "FT" -v 501

#Establece vmkernel FT
esxcli network ip interface add -i vmk3 -p "FT"

#Establece IP FT cambiar la mascara de subred si es necesario
esxcli network ip interface ipv4 set -i vmk3 -I $ft -N 255.255.255.0 -t static

#Marca como FT el portgroup
vim-cmd hostsvc/advopt/update FT.Vmknic string vmk3
vim-cmd hostsvc/net/refresh

#Establece Failover FT y Gestion y Backup
esxcli network vswitch standard portgroup policy failover set -p "Gestion y Backup" -a vmnic7 -s vmnic6
esxcli network vswitch standard portgroup policy failover set -p "FT" -a vmnic6 -s vmnic7

echo Configuración vSwitch 2 finalizada correctamente
sleep 5

echo Configurando NTP...
##################################################################################################################
#### Configuramos los datos del NTP Server                                                                  ######
##################################################################################################################
#Abre el puerto en el firewall
esxcli network firewall ruleset set --ruleset-id=ntpClient --enabled=true

echo NTP abierto en el firewall...
sleep 5
echo Configurando NTP...

#Configura NTP se aplicara despues del reinicio
echo restrict default kod nomodify notrap noquerynopeer > /etc/ntp.conf
echo restrict 127.0.0.1 >> /etc/ntp.conf
echo server "IP_o_nombre_de_nuestro servidor_NTP" >> /etc/ntp.conf
echo driftfile /etc/ntp.drift >> /etc/ntp.conf
/sbin/chkconfig ntpd on

sleep 5
echo Finaliza correctamente configuracion NTP

echo Suprimiendo warning Shell activo...
##################################################################################################################
#### Suppress Shell Warning                                                                                 ######
##################################################################################################################
esxcli system settings advanced set -o /UserVars/SuppressShellWarning -i 1

echo Warning suprimido correctamente
sleep 1

echo Configurando syslog collector...
##################################################################################################################
#### Configurar syslog collector                                                                            ######
##################################################################################################################
#Configura IP
esxcli system syslog config set --loghost='"IP_o_Nombre_de_nuestro_servidor_Syslog"'

sleep 2

#Abre puerto en el firewall
esxcli network firewall ruleset set --ruleset-id=syslog --enabled=true
esxcli network firewall refresh

echo Configurado syslog collector y abierto en el firewall
sleep 5

echo Configurando SNMP y IP Serverview...
##################################################################################################################
#### Configurar comunidad/server view server, habilita snmp, habilita en firewall y reinicia snmp           ######
##################################################################################################################
esxcli system snmp set --targets "IP_recolector_traps_snmp"@"Puerto_SNMP"/"Comunidad"
esxcli system snmp set --enable true
esxcli network firewall ruleset set --ruleset-id snmp --allowed-all true
esxcli network firewall ruleset set --ruleset-id snmp --enabled true
/etc/init.d/snmpd restart


echo Modo mantenimiento y reiniciando......
sleep 5
#Modo mantenimiento y reinicio
esxcli system maintenanceMode set -e true
esxcli system shutdown reboot -r OK
Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInBuffer this pageEmail this to someonePrint this page

1 thought on “Script en bash para configurar ESXi

Deja un comentario

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