Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.


25.02.2020

Koszty w górę

Zmiany w licencjach VMware
24.02.2020

VPN na nowo

WireGuard w Linuksie
24.02.2020

Wydajność pod kontrolą

Citrix Analytics for Performance
24.02.2020

Zaawansowany backup

Veeam Availability Suite v10
20.02.2020

Serwery Enterprise

OVHCloud stawia na Ryzeny
20.02.2020

Monitory dla biznesu

Newline IP
20.02.2020

Przemysłowe SSD

Dyski Transcend M.2 NVMe
23.01.2020

Google Project Zero

Inicjatywa Google Project Zero
23.01.2020

Ochrona tylko w chmurze

Kaspersky Security Cloud Free

PowerShell DSC w konfiguracji VMWare

Data publikacji: 20-02-2020 Autor: Bartosz Bielawski

Windows PowerShell DSC jest narzędziem, które pierwotnie miało służyć do zarządzania systemami Windows. Próby tworzenia wersji na Linuksa powiodły się. Ponieważ PowerShell wykorzystywany jest również do zarządzania technologiami niezwiązanymi z Windowsem, pojawiły się rozwiązania umożliwiające definiowanie konfiguracji poza ekosystemem Microsoftu. Jednym z nich jest DSC dla VMware.
 

W  czasie pracy z VMware vSphere mamy do wyboru kilka narzędzi administracyjnych: konsolę wykorzystującą HTML5, powoli wycofywaną konsolę Flash, rozmaite rozwiązania wykorzystujące API oferowane przez vSphere, a wreszcie propozycje dla administratorów preferujących automatyzację, czyli narzędzia skryptowe w PowerShellu i Pythonie.


VMware vSphere oferuje też kilka narzędzi, dzięki którym możemy opisywać oczekiwany przez nas stan środowiska. Wśród nich warto wymienić profile wirtualnych hostów (host profiles), dzięki którym możemy w prosty sposób zadbać o jednakową konfigurację na wszystkich hostach w ramach jednego klastra. Wraz z premierą PowerShell DSC pojawiły się też pomysły, by z narzędzia tego korzystać do konfiguracji vCenter i hostów. Początkowo koncepcję tę rozwijał Luc Dekens, ekspert znany większości osób zarządzających produktami VMware. Przez VMware PowerShell DSC było postrzegane jako konkurencja między innymi dla wspomnianych profili wirtualnych hostów. Używanie ich wymaga nabycia licencji, przez co wkład VMware w tworzenie darmowej alternatywy wydawał się strzałem w stopę. Ostatnio jednak sytuacja uległa zmianie – dziś DSC dla vSphere oferowane jest przez VMware bez dodatkowych kosztów.


> KONFIGURACJA POWERSHELL DSC


PowerShell DSC to platforma, dzięki której możemy definiować stan, w jakim powinien się znajdować zarządzany przez nas zasób: system operacyjny, aplikacja czy urządzenie. Informacja o oczekiwanym stanie przekazywana jest najczęściej do procesu odpowiedzialnego za doprowadzenie zasobu do oczekiwanego stanu, czyli Local Configuration Managera (LCM). Z DSC można też korzystać z pominięciem LCM, najczęściej w sytuacji gdy korzystamy z narzędzi takich jak Chef czy Puppet. W takiej sytuacji wykorzystywać będziemy jedynie zasoby PowerShell DSC, czyli moduły opisujące metodę pozwalającą ustalać aktualny stan (Get), sprawdzać jego zgodność ze stanem oczekiwanym (Test) czy wreszcie zmieniać stan systemu tak, aby przeprowadzić go do stanu oczekiwanego (Set). Z tych samych zasobów korzystać będzie oczywiście również LCM. Z założenia DSC jest rozwiązaniem idempotentnym – dzięki odpowiednio sformułowanym testom będziemy zmieniać stan systemu tylko wtedy, gdy będzie to konieczne w celu doprowadzenia zasobu do wymaganego stanu. DSC oferuje kilka sposobów przekazywania wymaganego stanu systemu, niemniej w tym artykule skupimy się na samych zasobach i wymaganych przez nie konfiguracjach.


Tradycyjny model z LCM zarządzającym konfigurowanym systemem nie sprawdzi się w naszym przypadku. Jedyny sensowny model wykorzystywać będzie serwer pośredni, który połączy się z naszym vCenter lub hostami ESXi. Konfigurację dotyczącą naszej infrastruktury przekazywać będziemy do serwera pośredniego, który następnie, wykorzystując polecenia PowerCLI, będzie pobierać informację o konfigurowanym zasobie, sprawdzać jego zgodność z parametrami wymaganymi i w – razie konieczności – zmieniać jego konfigurację. Oczywistą wadą tego rozwiązania jest konieczność utrzymywania serwera pośredniczącego i dbania o jego konfigurację. Wszelkie problemy z tym serwerem mogą wpłynąć negatywnie na naszą zdolność do testowania i naprawiania zarządzanej w ten sposób infrastruktury. Aby zminimalizować związane z tym ryzyko, możemy oczywiście wykorzystać DSC. Opisując stan, w jakim powinien znajdować się taki serwer, zyskujemy pewność, że jego wymiana w razie awarii nie będzie zbyt kłopotliwa.


> DSC W ZARZĄDZANIU VMWARE


Jak już wspomniano, pierwsze próby wykorzystania DSC do zarządzania rozwiązaniami VMware powstawały głównie dzięki Lucowi Dekensowi. Z ich rezultatami można zapoznać się pod adresem tinyurl.com/qvch8vh. Rozwiązanie bazuje na  architekturze wykorzystującej serwer pośredni vEngine. Wymagana jest na nim jedynie odpowiednia wersja PowerShella (co najmniej wersja 5) oraz moduły VMware do zarządzania vSphere (PowerCLI). Same zasoby stworzono z użyciem klasy w PowerShellu. Gwarantują one spójność, spełnienie wymogów dotyczących poszczególnych funkcji, które definiujemy jako metody w ramach klasy opisującej zasób. Pewne elementy umieszczone zostały poza klasą, co ułatwia wykorzystywanie kodu służącego do łączenia się z vCenter lub hostem ESXi.


Moduł Dekensa zawiera jedynie dwa zasoby: VmwFolder służący do tworzenia folderów w ramach konfiguracji oraz VmwDatacenter wykorzystywany do tworzenia centrów obliczeniowych w tym samym miejscu. Nie oferuje natomiast żadnego wsparcia dla konfiguracji indywidualnych hostów. Poszczególne metody łączą się z uwzględnionym w konfiguracji serwerem (vCenter lub ESXi), a następnie przeprowadzają wymagane operacje: sprawdzają stan zasobu, testują jego zgodność z wymaganym stanem bądź zmieniają zasób, dążąc do wymaganego stanu.


Przykładowa konfiguracja dla bardzo prostego centrum obliczeniowego:
configuration vSphereDSC {
Import-DscResource -ModuleName @{
ModuleName = 'vSphereDSC'
RequiredVersion = '1.0.2.1'
}
node vEngine {
VmwFolder Centrala {
Name = 'Centrala'
Path = '/'
Type = 'Yellow'
vServer = 'test.lab.com'
vCredential = $cred
}
VmwFolder Budynek1 {
Name = 'Budynek1'
Path = '/Centrala'
Type = 'Yellow'
vServer = 'test.lab.com'
vCredential = $cred
DependsOn = '[VmwFolder]Centrala'
}
VmwDatacenter DC1 {
Name = 'DC1'
Path = '/Centrala/Budynek1'
vServer = 'test.lab.com'
vCredential = $cred
DependsOn = '[VmwFolder]Budynek1'
}
}
}


Próba uruchomienia takiej konfiguracji zakończy się niepowodzeniem. Wynika to z faktu, że zapisywanie poświadczeń w pliku MOF domyślnie nie jest możliwe. Aby to umożliwić, musimy skorzystać z odpowiedniej konfiguracji dla naszego serwera vEngine:


vSphereDSC -ConfigurationData @{
AllNodes = @(
@{
NodeName = 'vEngine'
PSDscAllowPlainTextPassword = $true
}
)
}


Analizując kod i działanie tego zasobu, nie sposób oprzeć się wrażeniu, że powstał on jedynie jako eksperyment. Na szczęście stosunkowo niedawno światło dzienne ujrzał inny moduł, tym razem sygnowany przez VMware i współtworzony przez pracowników tej firmy. Moduł ten to VMware.vSphereDSC. Jest on projektem o otwartym kodzie dostępnym pod adresem tinyurl.com/r6pwol7. Podobnie jak w module Luca Dekensa mamy tu do czynienia z wykorzystaniem klas w PowerShellu. Przyjrzyjmy się dokładniej oferowanym przez to rozwiązanie możliwościom oraz temu, jak właściwie je skonfigurować.
Po zainstalowaniu modułu powinniśmy w pierwszej kolejności zaznajomić się z oferowanymi zasobami. Najprostszy sposób uzyskania tej informacji to skorzystanie z polecenia Get-DscResource:


Get-DscResource -Module VMware.vSphereDSC | Select-Object -Property Name, Properties
Name Properties
---- ----------
Cluster {DependsOn, PsDscRunAsCredential, Server, Credential...}
Datacenter {Credential, Ensure, Location, Name...}
DatacenterFolder {Credential, Ensure, Location, Name...}
DrsCluster {Credential, DatacenterLocation, DatacenterName, Ensure...}
Folder {Credential, DatacenterLocation, DatacenterName, Ensure...}
HACluster {Credential, DatacenterLocation, DatacenterName, Ensure...}
PowerCLISettings {SettingsScope, CEIPDataTransferProxyPolicy, `
DefaultVIServerMode, DependsOn...}
vCenterSettings {Credential, Server, DependsOn, EventMaxAge...}
vCenterStatistics {Credential, Period, Server, DependsOn...}
VMHostAccount {Credential, Ensure, Id, Role...}
VMHostDnsSettings {Credential, Dhcp, DomainName, HostName...}
VMHostNtpSettings {Credential, Name, Server, DependsOn...}
VMHostSatpClaimRule {Credential, Ensure, Name, RuleName...}
VMHostService {Credential, Key, Name, Server...}
VMHostSettings {Credential, Name, Server, DependsOn...}
VMHostSyslog {Credential, Name, Server, CheckSslCerts...}
VMHostTpsSettings {Credential, Name, Server, DependsOn...}
VMHostVss {Credential, Ensure, Name, Server...}
VMHostVssBridge {Credential, Ensure, Name, Server...}
VMHostVssSecurity {Credential, Ensure, Name, Server...}
VMHostVssShaping {Credential, Ensure, Name, Server...}
VMHostVssTeaming {Credential, Ensure, Name, Server...}
Aby dokładniej przyjrzeć się konkretnemu zasobowi, najlepiej skorzystać z parametru Syntax, który umożliwia poznanie wymaganych i opcjonalnych parametrów zasobu wraz z oczekiwanym typem dla jego wartości. Dla przykładu sprawdzić możemy parametry dla zasobu Datacenter:
Get-DscResource -Name Datacenter -Syntax
Datacenter [String] #ResourceName
{
Credential = [PSCredential]
Ensure = [string]{ Absent | Present }
Location = [string]
Name = [string]
Server = [string]
[DependsOn = [string[]]]
[PsDscRunAsCredential = [PSCredential]]
}


Jak widać, możliwości oferowane przez ten moduł są nieporównywalnie większe niż te, które oferował moduł stworzony przez społeczność. Moduł tworzony przez VMware miał większe szanse na powszechne wykorzystywanie w firmach, przez co łatwiej o informację zwrotną o ewentualnych niedociągnięciach w kodzie. Większa też jest szansa zaangażowania ze strony użytkowników, dzięki czemu zasoby o niższym (z punktu widzenia VMware) priorytecie mają większą szansę powstania.

 

[...]

 

Autor zawodowo zajmuje się informatyką. Jest Microsoft MVP w dziedzinie PowerShella, blogerem oraz jednym z moderatorów forum dotyczącego skryptów w serwisie TechNet. Autor książki „Windows PowerShell 5.1 Biblia”.

Artykuł pochodzi z miesięcznika: IT Professional

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"