miércoles, 23 de abril de 2025

Qué es un Snapshot en VMware ESXi 8 y para qué sirve

🧊 ¿Qué es un Snapshot en VMware ESXi 8 y para qué sirve?

Cuando trabajas con máquinas virtuales (VMs), necesitas tener formas seguras de proteger tus datos antes de realizar cambios importantes. Ahí es donde entran en juego los snapshots.

Un snapshot (o instantánea) es una captura del estado actual de una máquina virtual en un momento específico. Esto incluye:

  • El estado del sistema operativo.

  • La memoria (opcionalmente).

  • Los discos virtuales.

  • La configuración de la VM.

Es como tomar una "foto congelada" de la máquina que puedes usar para volver atrás si algo sale mal. Muy útil para:

  • Aplicar actualizaciones de software.

  • Realizar pruebas.

  • Cambios de configuración arriesgados.


🎯 ¿Para qué sirve un snapshot?

Algunas situaciones típicas donde un snapshot es tu mejor amigo:

✅ Antes de instalar actualizaciones críticas en un servidor.
✅ Antes de realizar pruebas de software o cambios de configuración.
✅ Para entornos de desarrollo o pruebas donde necesitas volver a un punto limpio.
✅ Como parte de una estrategia de respaldo rápida (no reemplaza un backup).

⚠️ Importante: Los snapshots no deben usarse como backups a largo plazo. Están pensados para situaciones temporales.


🛠️ Cómo crear un Snapshot en VMware ESXi 8 – Paso a paso

Aquí tienes una guía sencilla para crear un snapshot desde el vSphere Client (interfaz web) en ESXi 8:


✅ Paso 1: Inicia sesión en vSphere Client

  1. Abre tu navegador y ve a la dirección IP o nombre de host de tu servidor ESXi:

    cpp
    https://<IP-o-hostname-de-tu-esxi>
  2. Inicia sesión con tus credenciales de administrador.


✅ Paso 2: Selecciona la máquina virtual

Vamos a realizar una prueba, vamos a simular el borrado de un archivo y reverso de una actualizacion del equipo OL9
  1. En el menú lateral, haz clic en "Virtual Machines".

  2. Selecciona la VM OL9 a la que deseas hacerle el snapshot.

  3. Conectamos via ssh y veamos el contenido del sirectorio home




Luego del hacer el snapshot borraremos el archivo anaconda-ks.cfg y aplicaremos los parches


✅ Paso 3: Crear Snapshot

  1. Haz clic derecho sobre la VM seleccionada.

  2. Ve a "Snapshots""Take Snapshot".




✅ Paso 4: Completa la información del snapshot

Se abrirá una ventana como esta:

  • Name: Asigna un nombre descriptivo.

  • Description (opcional): Explica el motivo del snapshot.

  • Snapshot the virtual machine's memory: Marca esta opción si quieres capturar también el estado de la RAM (útil para volver exactamente al mismo punto).

  • Quiesce guest file system: Para asegurar que el sistema de archivos esté en estado consistente (requiere VMware Tools instalado).


Haz clic en "Create".


✅ Paso 5: Verifica que se creó correctamente



  1. Ve a la pestaña de "Snapshots" de la VM.

  2. Deberías ver el snapshot listado allí.



borremos el archivo y actualicemos el sistema


 ¿Y cómo se restaura un snapshot?

Vamos a la administracon del snapshot y le damos click en Restor snapshot


vamos en las tareas que el spanshot ya se revertió

Nos volvemos a conectar al servidor y buscamos el archivo eliminado


Vemos que  si hay actualizaciones pendientes 






🧹 ¿Y cómo se elimina un snapshot?

Una vez que ya no lo necesitas:

  1. Haz clic derecho sobre la VM.

  2. Ve a Snapshots → Manage Snapshots.

  3. Selecciona el snapshot y elige "Delete" o "Delete All".

🛑 Importante: No dejes snapshots activos por mucho tiempo. Pueden crecer en tamaño y afectar el rendimiento.


📌 Recomendaciones al usar Snapshots

  • Usa nombres descriptivos y fechas.

  • No mantengas más de uno o dos snapshots por VM activa.

  • No los uses como backups permanentes.

  • Después de restaurar, elimina el snapshot si ya no es necesario.


📘 Conclusión

Los snapshots en VMware ESXi 8 son una herramienta valiosa para protegerte contra errores o fallos al aplicar cambios en máquinas virtuales. Aunque no sustituyen una estrategia de backups completa, te pueden salvar de muchos dolores de cabeza si se usan correctamente.

¿Ya usaste snapshots en tu infraestructura? ¿Tienes alguna experiencia que quieras compartir? ¡Déjala en los comentarios!


viernes, 13 de diciembre de 2024

Descargar el contenido de una cuenta OneDrive Empresarial por medio de PowerShell

Elabore un script en powersehll para descargar los archivos de OneDrive Empresarial. El script hace uso de API'S de Microsoft Graph  con autenticación OAuth2.

Para poder usar el script debemos:
  • Crear un nuevo registro de aplicación desde Microsoft Entra ID https://entra.microsoft.com o desde el portal de Azure https://portal.azure.com . En mi caso lo realice desde el entra.
  • Otorgar los permisos de API necesarios a la aplicación que creamos.
  • Crear un "Secret Client" para que el script de powershell se pueda autenticar.
  • Identificar valores del TenantID, ClientId y ClientSecret


Crear un nuevo registro de aplicación

Si ya tienes una aplicacion con permisos puedes reutilizarla sino vamos a https://entra.microsoft.com ingresamos. Vamos a Aplicaciones\Registro de aplicaciones y hacemos click en nuevo registro








Otorgar los permisos de API
En registro de aplicación vamos a ver la que creamos y procederemos a dar los permisos de API

Los van a ir agregando uno por uno

Así deben de quedar los permisos de API

Los debe de agregar uno por uno las Delegadas y Aplicacion, les hare unas de ejemplos pero deben de dar todas las que se indican anteriomente.

Para GRAPH



Para SHAREDPOINT



Identificar valores del TenantID, ClientId y ClientSecret

TenantID
Lo encuentran en el inicio del portal del Entra

ClientID
En la seccion de aplicaciones\ Registro de aplicaciones Bsucas la aplicacion RESPALDO_ONDRIVE y en  Informacion general ClientID



ClientSecret
En la seccion de aplicaciones\ Registro de aplicaciones Bsucas la aplicacion RESPALDO_ONDRIVE y en  Certificados y secretos, pestaña Secretos de los clientes procederemos a crear un nuevo screto de cliente.


Al momento de crearlo deberás copiar lo que contenga Valor, por que esto desaparece luego.





Script PowerShell descarga contenido OneDrive






#Elaborado por Victor Endara #Descargar el contenido de OneDrive cuenta Epresarial # Variables de configuracion $TenantId = "TU_TENAN" $ClientId = "TU_CLIENTE_ID" $ClientSecret = "TU_CLIENT_SECRET" $UserPrincipalName = "cuenta@dominio.com" #cuenta empresarial a descargar el contenido $DestinationPath = "D:\Respaldos" #Ruta de respaldo $LogPath = "D:\Respaldos\OneDriveBackupLog.txt" #Log de los eventos # URL de autenticación $AuthUrl = "https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token" # Crear directorio de destino si no existe if (-Not (Test-Path -Path $DestinationPath)) { New-Item -ItemType Directory -Path $DestinationPath } # Función para registrar mensajes function Write-Log { param ( [string]$Message ) Add-Content -Path $LogPath -Value "$(Get-Date) - $Message" } # Función para descargar archivos y subdirectorios function Download-OneDriveContent { param ( [string]$FolderUrl, [string]$LocalPath ) $response = Invoke-RestMethod -Headers @{Authorization = "Bearer $AccessToken"} -Uri $FolderUrl -Method Get foreach ($item in $response.value) { $downloadUrl = $item.'@microsoft.graph.downloadUrl' $itemName = $item.name #eliminar caracteres especiales #$itemName_0 = $itemName -replace '[^a-zA-Z0-9- _]', '' $itemName_0 = $itemName -replace '\[', '(' $itemName_0 = $itemName_0 -replace '\]', ')' $itemName_0 = $itemName_0 -replace '[^a-zA-Z0-9() -_]', '' $itemLocalPath_0 = Join-Path -Path $LocalPath -ChildPath $itemName_0 # $itemLocalPath = Join-Path -Path $LocalPath -ChildPath $itemName if ($item.folder) { # Crear directorio local if (-Not (Test-Path -Path $itemLocalPath)) { New-Item -ItemType Directory -Path $itemLocalPath } # Descargar contenido del subdirectorio Download-OneDriveContent -FolderUrl "https://graph.microsoft.com/v1.0/drives/$($item.parentReference.driveId)/items/$($item.id)/children" -LocalPath $itemLocalPath } else { if (-Not [string]::IsNullOrEmpty($downloadUrl)) { try { Invoke-RestMethod -Uri "$downloadUrl" -OutFile "$itemLocalPath" Write-Log "Downloaded $itemName successfully to $itemLocalPath." } catch { Write-Log "ERROR downloading $itemName : $_" # VEM segundo intento eliminando caracteres especiales try { Invoke-RestMethod -Uri "$downloadUrl" -OutFile "$itemLocalPath_0" Write-Log "2 Downloaded $itemName successfully to $itemLocalPath_0." }catch { Write-Log "2 ERROR downloading $itemName_0 : $_" } } } else { Write-Log "No download URL for $itemName. Skipping file." Write-Log $Error[0] } } } } try { # Obtener token de acceso $Body = @{ client_id = $ClientId scope = "https://graph.microsoft.com/.default" client_secret = $ClientSecret grant_type = "client_credentials" } $response = Invoke-RestMethod -Method Post -Uri $AuthUrl -ContentType "application/x-www-form-urlencoded" -Body $Body $AccessToken = $response.access_token Write-Log "Access token obtained successfully." # Obtener contenido de OneDrive $RootFolderUrl = "https://graph.microsoft.com/v1.0/users/$UserPrincipalName/drive/root/children" Download-OneDriveContent -FolderUrl $RootFolderUrl -LocalPath $DestinationPath } catch { Write-Log "Error during download: $_" Write-Log $Error[0] }

Listo, lo ejecutas y debería funcionar como a mi!!


miércoles, 13 de diciembre de 2023

Aumento de espacio en disco en servidor REDHAT

 

Vamos a tener 2 escenarios para aumentar el tamaño , nvme1n1 al disco nvme1n1 disco sin particionar  y nvme0n1 disco particionado .

[ec2-user@oracledb01 ~]$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1     259:0    0   60G  0 disk
├─nvme0n1p1 259:2    0    1M  0 part
└─nvme0n1p2 259:3    0   50G  0 part /
nvme1n1     259:1    0  145G  0 disk /u02 

 

Al disco nvme1n1 se agrega 5Gb total 145Gb y el nvme0n1 se agrega 10Gb total 60Gb, pero al ver lo asignado en las unidades de montaje vemos que no muestran lo que ya físicamente tienen asignado los discos.

[ec2-user@oracledb01 ~]$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  1.8G     0  1.8G   0% /dev
tmpfs          tmpfs     1.8G     0  1.8G   0% /dev/shm
tmpfs          tmpfs     1.8G  8.5M  1.8G   1% /run
tmpfs          tmpfs     1.8G     0  1.8G   0% /sys/fs/cgroup
/dev/nvme0n1p2 xfs        50G   20G   31G  39% /
/dev/nvme1n1   xfs       140G  3.3G  137G   3% /u02
tmpfs          tmpfs     361M     0  361M   0% /run/user/1000 

 

Para reflejar lo aumentado para los dos escenarios

Aumentar tamaño de disco montado no particionado nvme1n1

Asignado 145G pero solo muestra 140G  /dev/nvme1n1

[ec2-user@oracledb01 ~]$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1     259:0    0   50G  0 disk
├─nvme0n1p1 259:2    0    1M  0 part
└─nvme0n1p2 259:3    0   50G  0 part /
nvme1n1     259:1    0  145G  0 disk /u02
 
[ec2-user@oracledb01 ~]$ df -hT /dev/nvme1n1
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/nvme1n1   xfs       140G  3.3G  137G   3% /u02 

 

Para ello usaremos xfs_growfs utilidad para expandir lo que se tiene en disco a lo montado

[ec2-user@oracledb01 ~]$ sudo xfs_growfs /u02
meta-data=/dev/nvme1n1           isize=512    agcount=23, agsize=1638400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=36700160, imaxpct=25
         =                       sunit=1      swidth=1 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=12800, version=2
         =                       sectsz=512   sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 36700160 to 38010880 

 

El mensaje al final nos indica que los bloques fueron aumentados y ahora vemos lo que se tiene ya asignado observaremos que ya tiene los 145Gb

[ec2-user@oracledb01 ~]$ sudo xfs_growfs /dev/nvme1n1
/dev/nvme1n1   xfs       145G  3.3G  142G   3% /u02 

 

Aumentar tamaño de disco montado particionado

/dev/nvme0n1 asignado 145G pero solo muestra 140G en la particion  /dev/nvme0n1p2 unidad de montaje /

Están asignado 50Gb de los 60Gb disponibles

[ec2-user@oracledb01 ~]$ sudo lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1     259:0    0   60G  0 disk
├─nvme0n1p1 259:2    0    1M  0 part
└─nvme0n1p2 259:3    0   50G  0 part /
nvme1n1     259:1    0  145G  0 disk /u02
[root@oracledb01 ec2-user]# fdisk -l
GPT PMBR size mismatch (104857599 != 125829119) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.
Disk /dev/nvme0n1: 60 GiB, 64424509440 bytes, 125829120 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: D209C89E-EA5E-4FBD-B161-B461CCE297E0
 
Device         Start       End   Sectors Size Type
/dev/nvme0n1p1  2048      4095      2048   1M BIOS boot
/dev/nvme0n1p2  4096 104857566 104853471  50G Linux filesystem
 
 
Disk /dev/nvme1n1: 145 GiB, 155692564480 bytes, 304087040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

 

Se asignará el adicional 10Gb a la partición nvme0n1p2 unidad de montaje /con la utilidad cfdisk /dev/nvme0n1

Vemos que existe un espacio disponible que los asignaremos. Seleccionamos la partición nvme0n1p2 y opción Resize



Aumentamos a los 60Gb



Vamos a la opción Write, para que se escriban los cambios



Indicamos Yes y presionamos enter



Refrescamos la unidad de montaje xfs_growfs / y veremos que la unidad de montaje /u02 tiene

[root@oracledb01 ec2-user]# xfs_growfs /
meta-data=/dev/nvme0n1p2         isize=512    agcount=21, agsize=655231 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=13106683, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 13106683 to 15728119

 

Ahora si nos reflejara los 60Gb

[root@oracledb01 ec2-user]# df -hT /dev/nvme0n1p2
/dev/nvme0n1p2 xfs        60G   20G   41G  33% /
 

 

Listo, hemos visto los 2 escenarios.

lunes, 27 de noviembre de 2023

Microsoft Windows 11 (64 bits) requiere un dispositivo TPM virtual, que no se puede agregar a esta máquina virtual porque el entorno de vSphere no está configurado con un proveedor de claves.

 Si estas tratando de instalar Windows 11 como maquina virtual en VMWARE 8 por este mensaje:


O seleccionas windows 10 y lo intentas de instalar y te da como error:





Aqui las intrucciones para evitar.

Lo que hay que hacer es omitir la validación TPM y lo vamos a realizar durante la instalación. Para ello si tienes VMWARE 8 o 7U2 deberas seleccionar como que vas a usar windows 10 para te permita avanzar desde el asistente de creación de maquina virtual de Vmware.



Si seleccionas W11 te dara error

Deberas seleccionar W10 y continuar



Una vez que tengas la maquina con el iso de W11 dale inicio hasta llegar al paso de la activación



Seleccionamos el idioma y teclado


Click en Install Now

Presionamos SHIFT + F10

se abre un cmd y escribimos regedit y damos enter

Nos ubicamos en HKEY_LOCAL_MACHINE\SYSTEM\Setup

Vamos agregar 1 llave(Key) LabConfig


Dentro de la nueva llave LabConfig agregamos registro DW32 BypassTPMCheck con valor 1

Cerramos la ventana del regedit, damos exit en el CMD y continuamos con el proceso



Click en "I dont have product key"


Listo, seguimos la instalación con normalidad









Listo, pasamos por alto la validación del TPM y continuamos la instalación del W11 con normalidad




jueves, 12 de abril de 2018

Maquinas Virtuales Gratis

Saludos,












En algún momento han necesitado de tener una maquina virtual lista para importar y poder realizar pruebas?

Bueno bitnami.com nos proporcionar de manera gratis maquinas virtuales con aplicaciones de software libre lista para usarse, estas maquinas las disponemos para:


  • Descargar maquina virtual en formato OVA
  • Descargar en formato Docker
  • Descargar instalador para plataforma Windows y Linux
  • Probar en un browse de manera gratis por una hora.
  • Desplegar la máquina virtual en Cloud MS Azure, Oracle, Amazon, Century, Google, entre otros.



Bitnami ofrece una gran variedad de maquinas virtuales con aplicaciones de software libre



Al seleccionar la aplicacion de dan la opciones:






















Si deseas probar en linea, puedes dar click en "Demo in Browse" y podr una hora podras hacer uso de manera gratuita la aplicación.

Al hacer click se empezará a despligar la maquina y te da la indiaciones de acceso de usuario y clave.


Al finalizar te mostrará la opcion para iniciar la aplicación con las credenciales de usuario admin.


Ingresas a la aplicación