Mostrando entradas con la etiqueta Trucos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Trucos. Mostrar todas las entradas

lunes, 16 de junio de 2025

Elementos de software necesarios para la instalación de un cluster Nutanix con Foundation

Instalar un clúster Nutanix en entornos bare-metal puede resultar complejo si no se dispone de un método ágil para preparar los nodos. La Foundation VM te permite hacerlo usando solo un portátil (en Windows, Linux o macOS con Oracle VirtualBox/VMware Workstation), sin necesidad de red local compleja. Además, puedes llevarla contigo para realizar instalaciones en distintos lugares con facilidad. Aunque más fácil todavía es utilizar Fountation Portable en Windows o MacOs, donde directamente no utilizas siquiera una VM, sino que lanzas la app que trae preinstalada la Foundation VM. Ya hablé de esto en un post anterior, y recomiendo este método.

Una vez elegida la herramienta con la que realizaremos el despliegue, deberemos preparar los archivos de instalación. Para ello, hay 3 archivos fundamentales a actualizar:

AOS

Que en el Field Installation Guide aparece como "nutanix_installer_package-version#.tar.gz", pero que en la web de descargas aparece como AOS Upgrade / Installer, de manera que te puedes volver un poco loco buscando el archivo.


Este archivo luego irá copiado a la carpeta /home/nutanix/foundation/nos. Pongamos que tienes Portable foundation: en ese caso, va a C:\Program Files (x86)\Nutanix\Portable Foundation\nos

ISO a utilizar. 

SI vas a utilizar de hipervisor un ESXi, va a /home/nutanix/ESXi/. Si es AVH, a /home/nutanix/KVM/. Si por el contrario utilizas Portable Foundation, va a C:\Program Files (x86)\Nutanix\Portable Foundation\isos\hypervisor\kvm

Whitelist

Revisa el archivo Whitelist, para asegurarte de que está actualizado, y las isos que vas a utilizar cumplen con la version adecuada. El archivo iso_whitelist.json puedes encontrarlo en la zona de descarga de Foundation, mencionado en letra bien pequeñita, no sea que lo encuentres fácilmente, al comienzo de todo:



El archivo iso_whitelist lo puedes localizar, en Portable, en "C:\Program Files (x86)\Nutanix\Portable Foundation\config". Para las Foundation VM, ya buscas el equivalente.
Con estos 3 archivos, las versiones revisadas, y todo en su sitio, estás listo para el despliegue.

Un último apunte... revisa, relee, apréndetelo de memoria...el Field Installation Guide, que puedes encontrar en My.Nutanix / Support & Insights / Software Documentation / Foundation /Field installation Guide

jueves, 3 de marzo de 2022

Reiniciar el periodo de gracia de 120 dias de RDS

 Supongamos que montamos una infraestructura con servidor de licencias RDS. Por defecto, el servicio de licencias RDS nos da 120 días de periodo de gracia de acceso ilimitado de conexiones, sin necesidad de instalar licencias. Terminado este periodo, deben comprarse CALs (Client Access License).  Pero a veces, no da tiempo a montar la infraestructura que queremos, o lo que tenemos es una laboratorio de pruebas, y necesitamos un poquito mas de tiempo para trastear.

Bueno, podemos resetear este contador para seguir con nuestras pruebas. Es muy fácil. Sólo debemos ir a HKLM\SYSTEM\CurrentControlSet\Control\TerminalServer\RCM\GracePeriod.  Podemos ver un registro llamado TimeBomb que no podremos eliminar, por falta de permisos. De manera que sobre GracePeriod pulsamos botón derecho y vamos a permisos

Aquí tendremos que tomar propiedad de la carpeta con, por ejemplo, la cuenta de administrador local de la maquina, y posteriormente, asignarnos permisos de full control en la carpeta.

Tras estos permisos, podremos eliminar el registro L$RTMTIMEBOMB.

Reinicia el servidor, y veras que el mensaje sigue saliendo, pero con 120 días de periodo de gracia.

Tambien puedes ver en cualquier momentos los dias que quedan de periodo de gracia con el siguiente comando:

wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="")

La segunda manera de realizar esto es prepararte el siguiente código en un archivo .ps1 y lanzarlo con un .\Reset-TSGracePeriod.ps1 -force

# This Script is intended to be used for Querying remaining time and resetting Terminal Server (RDS) Grace Licensing Period to Default 120 Days.

## Developed by Prakash Kumar (prakash82x@gmail.com) May 28th 2016

## www.adminthing.blogspot.com

## Disclaimer: Please test this script in your test environment before executing on any production server.

## Author will not be responsible for any misuse/damage caused by using it.

Param(

        [Parameter(Mandatory=$false)] [Switch]$Force

     )

 

Clear-Host

$ErrorActionPreference = "SilentlyContinue"

 

## Check if PowerShell Console has been launched As Administrator

if (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {

 

## Display current Status of remaining days from Grace period.

$GracePeriod = (Invoke-CimMethod -InputObject (Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TerminalServiceSetting-MethodName GetGracePeriodDays).DaysLeft

Write-Host -fore Green ======================================================

Write-Host -fore Green 'Terminal Server (RDS) grace period Days remaining are' : $GracePeriod

Write-Host -fore Green ====================================================== 

Write-Host

 

## Check if -Force Parameter has been used, If so, It will not prompt for Y/N while executing the script and will simply reset the Grace Period.

If (-not $Force)

{

$Response = Read-Host "Do you want to reset Terminal Server (RDS) Grace period to Default 120 Days ? (Y/N)"

}

 

if ($Response -eq "Y" -or $Force) {

## Reset Terminal Services Grace period to 120 Days

 

$definition = @"

using System;

using System.Runtime.InteropServices;

namespace Win32Api

{

       public class NtDll

       {

             [DllImport("ntdll.dll", EntryPoint="RtlAdjustPrivilege")]

             public static extern int RtlAdjustPrivilege(ulong Privilege, bool Enable, bool CurrentThread, ref bool Enabled);

       }

}

"@

 

Add-Type -TypeDefinition $definition -PassThru

 

$bEnabled = $false

 

## Enable SeTakeOwnershipPrivilege

$res = [Win32Api.NtDll]::RtlAdjustPrivilege(9, $true, $false, [ref]$bEnabled)

 

## Take Ownership on the Key

$key = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod", [Microsoft.Win32.RegistryKeyPermissionCheck]::ReadWriteSubTree,[System.Security.AccessControl.RegistryRights]::takeownership)

$acl = $key.GetAccessControl()

$acl.SetOwner([System.Security.Principal.NTAccount]"Administrators")

$key.SetAccessControl($acl)

 

## Assign Full Controll permissions to Administrators on the key.

$rule = New-Object System.Security.AccessControl.RegistryAccessRule ("Administrators","FullControl","Allow")

$acl.SetAccessRule($rule)

$key.SetAccessControl($acl)

 

## Finally Delete the key which resets the Grace Period counter to 120 Days.

Remove-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod'

 

write-host

Write-host -ForegroundColor Red 'Resetting, Please Wait....'

Start-Sleep -Seconds 10

 

}

 

Else

    {

Write-Host

Write-Host -ForegroundColor Yellow '**You Chose not to reset Grace period of Terminal Server (RDS) Licensing'

  }

 

## Display Remaining Days again as final status

tlsbln.exe

$GracePost = (Invoke-CimMethod -InputObject (Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TerminalServiceSetting-MethodName GetGracePeriodDays).DaysLeft

Write-Host

Write-Host -fore Yellow =====================================================

Write-Host -fore Yellow 'Terminal Server (RDS) grace period Days remaining are' : $GracePost

Write-Host -fore Yellow =====================================================

 

if ($Response -eq "Y" -or $Force)

        {

            Write-Host -Fore Cyan `n"IMPORTANT: Please make sure you restart following services manually to bring this reset in effect:`n`n* Remote Desktop Configuration Properties `n* Remote Desktop Services"

        }

}

Else

{

    Write-Host -fore RED =====================================================

    Write-host -ForegroundColor RED *`0`0`0`0 Please Launch PowerShell as Administrator `0`0`0`0*

    Write-Host -fore RED =====================================================

}

## Cleanup of Variables

Remove-Variable * -ErrorAction SilentlyContinue

 

##End of Code##

Despues, queda reiniciar los servicios "remote desktop configuration" y "remote desktop services".

Tienes el proyecto de Github original del código AQUI

Por otra parte, Si te ha gustado el articulo, puedes invitarme a un café ;)

martes, 29 de junio de 2021

Tratar el contenido de un archivo en Bucle con PowerShell

 A veces es muy útil realizar acciones a partir de algún archivo de datos... Por ejemplo, buscar alguna característica de un listado de equipos o usuarios que te pasan en algún excel, o similar. Bueno, vamos a ver cómo leer un archivo en PowerShell para luego utilizarlo en un bucle. La función es simple, pero lo importante es entender el proceso. 

El script es el siguiente:

$archivo = get-content c:\ficheromaquinas.txt

foreach ( $equipo in $archivo ) {

write-host $equipo

Get-Service -Name spooler -ComputerName $equipo  | Set-Service -Status Running

 La primera línea, $archivo = get-content c:\ficheromaquinas.txt lo que hace es meter en una variable con el nombre "archivo" todo el contenido que hay en el documento "ficheromaquinas.txt" Powershell permite tratar esa variable, que se pasa a llamar $archivo como un único objeto.

El segundo fragmento:

foreach ( $equipo in $archivo ) {....} 

Lo que hace es decir que para cada nuevo elemento que se encuentra en archivo, al que pasaremos a llamar "equipo" haga lo que metamos dentro de las llaves.

Dentro de las llaves hemos metido un script muy simple, 

Get-Service -Name spooler -ComputerName $equipo  | Set-Service -Status Running

Que lo que hace es que mire el servicio spooler (la cola de impresión, vaya) de cada equipo, que metimos en la variable $equipo, y lo arranque, canalizando el comando con el "|" y le pase la orden  Set-Service -Status Running, para arrancarlo.

Igual que podemos obtener ese servicio, podemos hacer lo mismo con, por ejemplo un apache, Oracle Service, RDP...lo que sea, y sólo de las máquinas que tenemos en el archivo. Pero lo importante es el hecho de meter el contenido del archivo en una variable, para a partir de ahí, con un "foreach", pedirle que haga una acción.

martes, 2 de marzo de 2021

vCenter no permite modificar el hardware de la VM

 Intentando modificar el hardware asignado a una VM en vCenter 6.5, los ajustes de la máquina permiten hacer cambios y aparentemente guardarlos, pero no se ve tarea en ejecucion en la ventana de tareas recientes. En cambio, aparece una pequeña alerta en la esquina inferior derecha:




La alerta completa es esta:
Unexpected token (END_OBJECT), expected FIELD_NAME: missing property '_type' that is to contain type id (for class java.lang.Exception)
at [Source: java.io.StringReader@c9a23d8; line: 54, column: 9] (through reference chain: com.vmware.vsphere.client.vm.VmConfigSpec["originalConfig"]>com.vmware.vim.binding.vim.

vm.ConfigInfo["tools"]>com.vmware.vim.binding.vim.vm.ToolsConfigInfo["lastInstallInfo"]->com.

vmware.vim.binding.vim.vm.ToolsConfigInfo$ToolsLastInstallInfo["fault"])

 Aunque pueda parecer que en la alerta hace referencia a la linea 54, columna 9 del archivo de configuracion de la maquina, no es asi.Realmente el problema viene derivado de la instalacion de las VMTools. En este caso, el problema solo se ha reproducido en VMs con sistema operativo Windows 10, donde las tools estan soportadas, pero no tan actualizadas como la compilación de Windows.

Curiosamente, la solucion a aplicar es tan simple como desinstalar las VMTools, reiniciar y reinstalar las tools. No hace falta siquiera volver a reiniciar, aunque es aconsejable, y será posible realizar la modificacion del hardware son problema.

Agregaria referencias a la knowledge base de VMware, pero la verdad, no he encontrado por alli solución a este problema. Lo mas que se le acerca es ESTO. La solucion que sugiero es más simple, y probada en varias maquinas.

jueves, 4 de febrero de 2021

Restaurar el password de la cuenta administrator@vsphere.local del vCenter

 La cuenta de administrador SSO del vCenter es una de esas cosas que se utiliza en el montaje y configuración inicial del vCenter y luego cae en el olvido, habitualmente. El problema es cuando no se anota el password o éste ha caducado, y necesitas entrar de nuevo. Entonces te llevas el susto:

Si tenemos la cuenta de root, todavía hay posibilidades de cambiar el password de la cuenta. Los pasos son los siguientes:

Accedemos a nuestro vCenter con el usuario root. Ya sabeis, https://ipdelvCenter:5480. A continuación vamos al apartado "acceso", y ahí habilitamos la conexion por SSH y la shell de bash:


Seguidamente ejecutamos Putty, accediendo con root.

Introducimos los parametros para cambiar a la bash shell:

shell.set --enabled true
shell

Como en la captura que sigue:

A continuación, ejecutamos la herramienta vdcadmintool desde su ubicación,  /usr/lib/vmware-vmdir/bin/vdcadmintool :

La herramienta mostrará un menú de opciones. Tenemos que seleccionar la opcion 3, "Reset account Password". Escribimos la cuenta para la que queremos restaurar el password. Nos generará un password aleatorio.

Una vez accedas a traves de la cuenta, portal principal (https://ipdetuvCenter/ui), cambiamos password:


Pide antiguo pass, que es el que acabamos de utilizar para acceder, y ya ponemos el nuevo:

No pide gran complejidad de longitud, ni caracteres especiales...

Tras esto, ya podreis acceder con el nuevo password al vCenter. Recomendable ir en el vCenter al menú Administracion / Single Sign On / Configuración y cambiar en la directiva de contraseñas la caducidad del password:

También aquí cambiamos los requerimientos de nuevo password:

Muy recomendable cambiarlo, para no llevarnos un susto a los 90 días, que es la caducidad por defecto, si no tocamos nada.