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
Desde luego, que le hemos sacado partido al script. Gracias crack!
Que buen tutorial amigo es muy practico 😉