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

Un comentario sobre “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 *