Blog: Systemy serwerowe | Windows server | Systemy microsoft | Powershell

Desired State Configuration – automatyzacja wdrażania i konfiguracji

Desired State Configuration – automatyzacja wdrażania i konfiguracji
  • 688 views

Dla większości specjalistów IT odpowiedzialnych za utrzymanie serwerowych systemów i usług Microsoft codziennością stała się automatyzacja zadań administracyjnych przy użyciu technologii PowerShell. Umiejętność pisania skryptów konfigurujących, instalujących i automatyzujące zarządzanie usługami jest podstawą efektywnego wykonywania ich zadań.

Dla większości specjalistów IT odpowiedzialnych za utrzymanie serwerowych systemów i usług Microsoft codziennością stała się automatyzacja zadań administracyjnych przy użyciu technologii PowerShell. Umiejętność pisania skryptów konfigurujących, instalujących i automatyzujące zarządzanie usługami jest podstawą efektywnego wykonywania ich zadań.

Kolejne odsłony technologii PowerShell i Windows Management Framework wprowadziły możliwość zarządzania niemal każdym aspektem systemów operacyjnych Microsoft, a dla wielu usług takich jak IIS, Exchange, SharePoint czy rodziny System Center stały się podstawowym narzędziem pracy.

Dlaczego PowerShell jest aż tak potrzebny?

W obliczu rosnącej liczby zadań związanych z instalacją i konfiguracją środowisk dla nowych usług i aplikacji oraz na skutek skrócenia cyklu wydawania oprogramowania. przejście od manualnego do automatycznego zarządzania serwerami dla wielu organizacji stało się koniecznością. Szybkie i minimalizujące możliwość pomyłki operatora metody wdrażania całych środowisk musiały zostać dopasowane do skróconych z miesięcy do godzin lub minut pełnego cyklu życia aplikacji od aktualizacji, kompilacji, testowania i wdrażania nowych usług.

Kolejnym czynnikiem wpływającym na rozwój skryptowych metod budowania infrastruktury jest intensywny rozwój wykorzystania chmur obliczeniowych. O ile początkowo dla niewielkiej skali usług wystarczała obsługa za pomocą interfejsu użytkownika dostawcy chmurowego a zastosowanie skryptów pozwalało na skalowanie usług, o tyle wraz z rosnącą ilością wykorzystywanych funkcjonalności, podstawowym narzędziem pracy stała się automatyzacja.

Obecnie, korzystając z usług takich jak Microsoft Azure za pomocą kodu można skonfigurować nie tylko instancje nowych serwerów, ale również całą infrastrukturę sieciową.
Wraz z technologią chmury i łatwością wykorzystania szerokiego spektrum technologii oraz usług pochodzących od wielu dostawców pojawiło się zapotrzebowanie na standaryzację zarządzania środowiskami różnych producentów. Wielu znanych dostawców takich jak Puppet czy Chef posiadających rozwiązania automatyzacji infrastruktury w środowiskach Linux musiało zmierzyć się z problemem integracji narzędzi ze środowiskami Microsoft.

Automatyzacja za pomocą Desired State Configuration

Pomimo niemal nieograniczonych możliwości technologii PowerShell zastosowanie jednolitego standardu opisującego i stosującego konfigurację na większą skalę nadal stanowi złożone wyzwanie.
W odpowiedzi na te problemy wraz z Windows Management Framework 4.0 udostępniona została technologia DSC (Desired State Configuration) umożliwiające zapis – w sposób deklaratywny- konfiguracji węzłów infrastruktury, automatyzację i testowanie wprowadzanych zmian oraz kontrolę dryfu konfiguracyjnego.

Dzięki deklaratywnej a jednocześnie wykonywalnej formie pojawiła się możliwość dokumentowania, wersjonowania oraz kontroli konfiguracji infrastruktury w jednym spójnym formacie.
Przyjrzyjmy się prostemu plikowi konfiguracyjnemu:

Configuration RToolsDscConfiguration {
Node "TEST-PC1" {
WindowsFeature MyFeatureInstance {
Ensure = "Present"
Name = "RSAT" }
} }
MyDscConfiguration

Dzięki opisowemu formatowi łatwo wywnioskować, że podany plik definiuje konfigurację dla węzła TEST-PC1 weryfikując i zapewniając istnienie zasobu w postaci funkcji systemu Windows o nazwie RSAT. Tak przygotowana konfiguracja musi zostać skompilowana do pliku MOF poprzez wywołanie skryptu z elementem Configuration. Po skompilowaniu zastosowanie konfiguracji odbywa się za pomocą lokalnego wywołania komandletu Start-DscConfiguration:

Start-DscConfiguration -Path "C:\DSC\Configurations\"
Konfigurację można wdrożyć również na węźle zdalnym, przygotowując wcześneij sesję CIM.
$cs= New-CimSession -ComputerName "TEST-PC1"
Start-DscConfiguration -Path "C:\DSC\Configurations\" -CimSession $cs

Jedną z najistotniejszych cech DSC umożliwiających efektywną konfigurację jest bogaty zestaw dostępnych zasobów od definiujących stan systemu, przez definiowanie kont użytkowników czy zasobów plikowych aż po złożone konfiguracje np. całych klastrów trybu failover. Dzięki raz zdefiniowanej konfiguracji docelowy węzeł infrastruktury ma możliwość odebrania od centralnego serwera instrukcji dotyczących docelowej konfiguracji oraz wszelkich wprowadzanych w niej zmian. Konfigurowalny model wdrażania obsługuje zarówno model Push jak i Pull.

Na zakończenie warto zaznaczyć, że technologia DSC stała się jednym z podstawowych sposobów na zagwarantowanie spójności konfiguracji oraz automatyzację tworzenia całych środowisk na platformie Microsoft Azure a definicje zasobów rozwijane są przy wsparciu społeczności użytkowników technologii Microsoft.

Podsumowanie

Trendy rynkowe takie jak szeroka adaptacja metodyk zwinnych i związana z nią potrzeba skrócenia czasu przygotowania środowisk programowania, zapewnienia jakości, po środowiska produkcyjne, znaczne zwiększenie wykorzystania usług chmurowych oraz potrzeba zachowana spójności w środowiskach hybrydowych niosą ze sobą potrzebę wypracowania standardów automatycznego wdrażania i konfiguracji infrastruktury. Technologia DSC w środowiskach Microsoft i mieszanych dzięki integracji z systemami zarządzania konfiguracją Chef i Puppet stała się jedną z wartych rozpatrzenia alternatyw.