Exportar e importar roles entre vCenters.

En el post de hoy en el Blog de Ncora voy a tratar de explicar un caso real de cómopude resolver un problema que se me planteó desde uno de nuestros clientes.

Se trata de un gran cliente que por supuesto tiene una graninfraestructura vSphere y muchísimos usuarios accediendo a ella.

El problema que se nos plantea es que, tras realizar un proyectode renovación, debíamos mantener los mismos roles y permisos en el nuevovCenter que habíamos instalado. Los roles que manejaba este cliente llevabanaños afinándose cuidadosamente, para que, cada usuario que accediera a lainfraestructura solo pudiera realizar las tareas específicamente encargadas,por lo que, replicar esta configuración manualmente se convertiría en una arduatarea.

vCenter Server no viene de forma nativa con la posibilidad deExportar/Importar roles, así que tuvimos que buscar formas alternativas que nosfacilitaran la vida.

Es ahí cuando entra en acción nuestro gran aliado: PowerCLI

[embeber alt=»Exportar/Importar roles entre vCenters1.png» embedtype=»image» format=»fullwidth» id=»3278″]

Vamos allá con el procedimiento:

  • Abrimos 2 instancias de PowerCLI y nos conectamos a cada uno delos vCenters

 [embeber alt=»Exportar/Importar roles entre vCenters2.png» embedtype=»image» format=»fullwidth» id=»3279″]

  • Ejecutamos el ExportRoles.psd1 en el vCenter original para exportar todos los roles a un fichero llamado roles.txt

[embeber alt=»Exportar/Importar roles entre vCenters4.png» embedtype=»image» format=»fullwidth» id=»3281″]

•  El fichero generado consta de una estructura similar aesta:

 [embeber alt=»Exportar/Importar roles entre vCenters5.png» embedtype=»image» format=»fullwidth» id=»3282″]

  • Como el script ha exportado TODOS los roles, manualmente tendremos que eliminar los que vienen predefinidos por el sistema (para evitar duplicado en la importación) y solo dejamos lo que queramos importar. En este caso Supervisión y Soporte.

[embeber alt=»Exportar/Importar roles entre vCenters6.png» embedtype=»image» format=»fullwidth» id=»3283″]

•  Lanzamos el script de importación sobre el vCenter nuevo yesperamos a que se vayan recreando todos los roles

[embeber alt=»Exportar/Importar roles entre vCenters7.png» embedtype=»image» format=»fullwidth» id=»3284″]

•  Y listo, ya tenemos los roles que tanto a costado afinar ennuestra nueva infraestructura vSphere

[embeber alt=»Exportar/Importar roles entre vCenters8.png» embedtype=»image» format=»fullwidth» id=»3285″]

Y eso es todo por hoy, espero que si alguien se ha topado enesta situación pueda darle provecho es estos dos simples scripts.

Gracias por leernos.

Miquel.

Ahh, se me olvidaba, ahí va el código de ambos scripts 🙂

ExportRoles.ps1

“” > “C:tmproles.txt”

$arrCustomRoles = Get-VIRole | Where-Object {-not $_.IsSystem}

ForEach ($objRole in $arrCustomRoles)

{

$arrRolePermissions = Get-VIPrivilege -Role $objRole

“Role`t” + $objRole.Name >> “C:tmproles.txt”

ForEach ($objPermission in $arrRolePermissions)

{

“Priv`t” + $objPermission.ID >> “C:tmproles.txt”

}

}

ImportRoles.ps1

$arrFileContents = Get-Content -path “C:tmproles.txt”

ForEach ($strLine in $arrFileContents)

{

If ($strLine.contains(“Role`t”))

{

$strRoleName = $strLine.Split(“`t”)[1]

$objRole = New-VIRole -Privilege $readOnlyPrivileges -Name $strRoleName

}

If ($strLine.contains(“Priv`t”))

{

$strPrivName = $strline.Split(“`t”)[1]

$objPriv = Get-VIPrivilege -ID $strPrivName

$objToNull = Set-VIRole –Role $strRoleName –AddPrivilege $objPriv

}

}

Deja un comentario

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