VM jogosultság automatikusan

Néhány bejegyzéssel korábban igértem, hogy bemutatom egy cikkben, miként lehet a vCenter Server adatbázisán keresztül automatikusan VI hozzáférést adni Kollégáknak az általuk felügyelt virtuális szerverekhez.

Feladat a következő: egy adatbázisban már egyébként is nyilván tartom szervereimet, azok funkciójával, illetve gazdájával. Az a cél, hogy az itt tárolt szervergazda automatikusan kapjon a VMware infrastruktúrában jogot a szerveréhez, amivel a VMware adminisztrátor munkáját is csökkentettük, illetve a VI klienssel bejelentkező szervergazda menedzselni tudja virtuális szervereit is.

Először is nézzük milyen formában tárolom a szervereket és gazdáikat:

select Host, Szervergazda, SAMAccName
from ServerInfo.dbo.ServerAdmins
where Szervergazda = ‘Sárándi Attila’





Keressük ki a VPX_ROLE táblából a “VirtualMachineAdministrator” jogosultsághoz tartozó ID-t, ez fog kelleni a későbbiekben:

select ID, NAME from dbo.VPX_ROLE
where NAME = ‘VirtualMachineAdministrator’


Megnézhetjük jelenleg melyik szerverhez, melyik Kollégának van meg a keresett joga:

select dbo.VPX_ENTITY.NAME, dbo.VPX_ACCESS.PRINCIPAL
from dbo.VPX_ENTITY
left outer join dbo.VPX_ACCESS
on dbo.VPX_ENTITY.ID = dbo.VPX_ACCESS.ENTITY_ID
where dbo.VPX_ACCESS.ROLE_ID = 1 — role_id
and dbo.VPX_ENTITY.”TYPE_ID” = 0 –virt.gépek típusa



A következő lépésben már összekapcsoljuk a ServerAdmins táblát a vCenter megfelelő tábláival, hogy ellenőrízhessük a megfelelő embernek megvan-e a joga:

select A.Host, A.Szervergazda_Login,
VPX.dbo.VPX_ACCESS.PRINCIPAL as Admin_in_VMware
from (select VPX.dbo.VPX_ENTITY.ID, VPX.dbo.VPX_ENTITY.NAME as Host,
‘MOL\’ + ServerInfo.dbo.ServerAdmins.SAMAccName as Szervergazda_Login
from VPX.dbo.VPX_ENTITY, ServerInfo.dbo.ServerAdmins
where VPX.dbo.VPX_ENTITY.NAME = ServerInfo.dbo.ServerAdmins.Host
and VPX.dbo.VPX_ENTITY.”TYPE_ID” = 0) A left outer join VPX.dbo.VPX_ACCESS
on (A.ID = VPX.dbo.VPX_ACCESS.ENTITY_ID) and (A.Szervergazda_Login = VPX.dbo.VPX_ACCESS.PRINCIPAL)

Sok a NULL a jobb szélső oszlopban, azaz sok szervergazdának nincs meg a szükséges VMware-es joga, ami ellen tennünk kell. Jogosultságot nemes egyszerűséggel úgy tudunk adni, hogy a VPX_ACCESS táblába be kell szúrni egy sort. Az alábbi értékekkel:

ENTITY_ID: a vCenter központi táblájának (VPX_ENTITY) ID mezője, az adott virt.gép sorában
ROLE_ID: VPX_ROLE táblából az adni kívánt jog ID-ja, esetünkben 1
PRINCIPAL: a jogosultság kedvezményezettjének login-ja
FLAG: ha a PRINCIPAL felhasználói account, akkor 1, ha csoport account, akkor 3

insert into VPX.dbo.VPX_ACCESS (ID, PRINCIPAL, ROLE_ID, ENTITY_ID, FLAG)
select C.NEXT_ID,
‘MOL\’ + B.SAMAccName,
1,
A.ID,
1
from VPX.dbo.VPX_ENTITY A, ServerInfo.dbo.ServerAdmins B,
(select max(ID)+1 as NEXT_ID from VPX.dbo.VPX_ACCESS) C
where A.NAME = B.Host
and A.”TYPE_ID” = 0

Már készen is lennénk, de tekintettel kell lennünk arra, hogy ha másodjára akarjuk a fenti SQL-t futtatni hibaüzenetet fogunk kapni vagy dupla bejegyzést hozunk létre, mert már meglévő rekordok lesznek a VPX_ACCESS táblában – ezért gondoskodni kell a meglévő rekordok törléséről. Ha adatbáziskezelőnk támogatja az “INSERT or UPDATE” SQL szintaxist, akkor nem kell a törléssel foglalkoznunk, nekem sajnos kell, mert az itt alkalmazott MS SQL – ha jól tudom – nem támogatja ezt:(

delete from VPX.dbo.VPX_ACCESS
where ROLE_ID = 1
and FLAG = 1
and convert(varchar, ENTITY_ID) + ‘—’ + PRINCIPAL in
(select convert(varchar, A.ID) + ‘—’ +    VPX.dbo.VPX_ACCESS.PRINCIPAL
from
(select VPX.dbo.VPX_ENTITY.ID,
VPX.dbo.VPX_ENTITY.NAME,
‘MOL\’ + ServerInfo.dbo.ServerAdmins.SAMAccName as ServerInfo_SAMAccName
from VPX.dbo.VPX_ENTITY, ServerInfo.dbo.ServerAdmins
where VPX.dbo.VPX_ENTITY.NAME = ServerInfo.dbo.ServerAdmins.Host
and VPX.dbo.VPX_ENTITY.”TYPE_ID” = 0) A
left outer join VPX.dbo.VPX_ACCESS
on A.ID = VPX.dbo.VPX_ACCESS.ENTITY_ID
where A.ServerInfo_SAMAccName = VPX.dbo.VPX_ACCESS.PRINCIPAL

Nincs más dolgunk, mint beütemezni a két utolsó DELETE és INSERT SQL parancsot (fontos a sorrend;) ), az adatforrás ServerInfo tábla töltési idejét és gyakoriságát figyelmbe véve. Fontos, hogy a vCenter adatbázis külső módosítása csak akkor jut érvényre, ha újraindítjuk a vCenter Server szolgáltatást! Ha a fenti SQL-ekben hangolható részt találtok, kérem a comment-be adjátok közre.

…és persze csak a vCenter adatbázis mentése után adjuk ki az INSERT/DELETE parancsokat!!!

Remélem hasznosnak találtátok a cikket, a következőben azt használjuk fel, hogy a ServerAdmins tábla a szerverről egyéb információt is tárol (pl. a rajta futó alkalmazás nevét), amit a fentiekhez hasonló egyszerűséggel lehet betölteni a vCenter adatbázisába pl. custom tag-ként.

VN:F [1.8.2_1042]
Rating: 0.0/10 (0 votes cast)

Comments are closed.

Cimkék
Levelezési lista
Google Groups
Csatlakozz a levelezési listánkhoz!
Email:
Irány a levlista oldalára
Támogatóink
EMC
ERP
Keresés