Spacer w chmurach czyli Microsoft Azure dla świeżaków. Tworzenie DSC czyli Desired State Configuration cz.5

Cześć! Dzisiaj kontynuujemy dalej przygodę z platformą Microsoft Azure. Tym razem chciałbym przedstawić Wam czym jest DSC (Desired State Configuration) i dlaczego warto je wykorzystać w codziennej pracy i zarządzaniu obiektami w chmurze. Zobaczcie sami.

Czym jest DSC?

DSC czyli Desired State Configuration pozwala na tworzenie skryptów automatyzacyjnych, które mogą zostać wykonane wewnątrz naszych obiektów (na przykład wewnątrz systemu naszej maszyny wirtualnej).

Wyobraźcie sobie, że macie dwadzieścia różnych maszyn wirtualnych zawierających w sobie system Windows Server 2012 R2 i na każdej z nich chcecie zainstalować na przykład  IIS Web Serwer, co w normalnym przypadku musielibyście robić całkowicie ręcznie. Dlatego z pomocą przychodzi nam DSC, które pozwala na tworzenie skutecznych skryptów powłoki Powershell i pozwala na dodawanie funkcji z poziomu kodu skryptu. Pozwala na wyręczenie nas w monotonnych i często powtarzających się zadaniach, które mogą być dla człowiek nużące i męczące, dlatego można wykonywać je za pomocą skryptu,

Możemy tworzyć gotowe i przemyślane pliki konfiguracyjne, importować je do konkretnej grupy zasobów jak również aplikować je dla wybranych zasobów w grupie. Wszystko aby zapewnić continious deployment.

Tworzenie pierwszego DSC

Aby utworzyć swoją konfigurację DSC, którą zaimportujemy do naszej platformy AZURE i zaaplikujemy do wybranej grupy zasobów, możemy zacząć od dowolnego pliku o rozszerzeniu .ps1. Plik ten będzie zawierał instrukcje języka Powershell, które zostaną wykonane po stronie chmury na naszych obiektach.

Generalnie wewnątrz pliku musimy utworzyć instrukcje, które będziemy musieli wykonać na naszych obiektach (na przykład dowolnej maszynie wirtualnej). Oprogramujemy sobie go w taki sposób aby zainstalował Nam IIS Web server oraz podstawowe features wymagane do jego pracy.

Configuration IISAndDeploy {
	Node 'localhost' {
			# add Windows server feature
			WindowsFeature WebServer{
				Ensure = "Present"
				Name = "Web-Server"
			}
			# add Windows server management tools
			WindowsFeature WebServerTools {
				Ensure = "Present"
				Name   = "Web-Mgmt-Tools"
			}
		}

}

Generalnie tak będzie wyglądać nasz skrypt konfiguracyjny. Zainstaluje IIS serwer, który domyślnie w systemie Windows nie jest aktywny oraz doda jego narzędzia administracyjne.

Odblokowywanie portu 80

Zanim zaczniemy bawić się naszym DSC musimy odblokować port 80 dla naszej maszyny wirtualnej. Dlatego najpierw wejdzmy do jej ustawień i znajdźmy zakładkę Networking:

Następnie klikamy przycisk Add Inbound Port Rule znajdujący się po prawej stronie. Wypełniamy tak jak na poniższym obrazku:

Zobaczmy, że nasz nowy port 80 pojawi się wśród naszych reguł dozwolonych.

Teraz możemy działać dalej i kontynuować pracę z naszym DSC dalej 🙂

Przesyłanie stworzonego DSC

Jeśli nasz plik DSC jest gotowy należy dodać go sobie (przesłać) do wnętrza naszego konta automatyzacyjnego tak samo jak w przypadku skryptu RUNBOOKa o którym pisaliśmy w poprzednim wpisie. Wyszukujemy nasze istniejące konto automatyzacji przypisane do naszej grupy BLOGRESOURCES i wejdzmy do środka. Znajdźmy tam zakładkę DSC configurations:

Następnie aby przesłać nasz plik DSC kilkamy na przycisk dodaj (plusik) i znajdujemy go na dysku swojego komputera:

Klikamy OK i nasz plik DSC zostanie przesłany. Pojawi się na liście dostępnych konfiguracji dla naszego konta automatyzacji. Plik nie może zajmować więćej niż 1 MB.

Dalej musimy wejść do środka naszego pliku DSC i skompilować go zanim będziemy mogli go używać. Klikamy przycisk kompilacji:

Musimy teraz chwilę poczekać. Kompilacja naszego pliku DSC zostanie skolejkowana, o wszystkim będziemy informowani na bieżąco.

Jeśli wszystko przebiegło poprawnie to STATUS powinien zmienić się na Completed. Generalnie możecie napotkać tutaj na problemy, dziwne wyjątki, na przykład jak skopiujecie gotowy plik DSC z jakiejś strony ze śmieciowymy znakami. Wtedy kompilacja DSC lubi zwariować.

Aplikowanie DSC dla konkretnego węzła

Następnie gdy nasz plik DSC został poprawnie skompilowany, musimy wybrać do jakiego obiektu będziemy chcieli go przypisać. W naszym przypadku będzie to maszyna wirtualna blog-vm. Po lewej stronie konta naszej automatyzacji odszukujemy zakładkę DSC Node i klikamy w nią:

W tej chwili nie mamy żadnego węzłą powiązanego z DSC. Będziemy musieli zrobić to ręcznie. Kliknijmy znowu przycisk dodaj (plusik u góry) :

Znajdziemy tutaj wszystkie dostępne maszyny wirtualne należące do różnych grup zasobów do których możemy przypisać i wykonać nasz skrypt DSC. Dodamy go jednak tylko do blog-vm.

Wypełnijcie tak jak na obrazku. W miejscu Node configuration name wybierzcie swój skrypt DSC. Następnie zwróccie uwagę na Refresh Frequency w którym domyślnie wpisane jest 30 co oznacza, że DSC będzie co 30 minut odpytywać Azure o to czy zostały zaaplikowane jakiekolwiek zmiany w konfiguracji. Oraz Configuration Mode Frequency w którym wpisane jest 15 co oznacza, że configuracja będzie implementowana co 15 minut jeśli nastąpiła jakaś zmiana (aktualizacja) jej obecnego stanu. Dodatkowe opcje są intuicyjne.

Po kliknięciu przycisku OK, nasz DSC zostanie zaaplikowany. Wirtualna maszyn zostanie uruchomiona, Azure połączyć się z nią aby zaaplikować aktualną konfiguracje.

Obserwujmy status który aktualnie jest Connecting. Trochę to niestety potrwa i mogą również wystąpić błędy.

Sprawdzanie efektów konfiguracji

Zalogujemy się teraz do naszej maszyny wirtualnej i sprawdzimy czy nasz IIS serwer został zainstalowany. Łączymy się poprzez pulpit zdalny z maszyną blog-vm.

IIS został dodany do naszego managera serwera. Jest online i gotowy do użycia.

Refleksje odnośnie zalet DSC

To był prosty przykład, ale zauważcie, że dzięki DSC możemy wykonywać wiele bardzo rozbudowanych zadań administracyjnych na wielu maszynach na raz.

Generalnie DSC pozwala na:

  1. Wykonywanie tasków administracyjnych w sposób automatyczny na wielu maszynach na raz
  2. Pozwala na identyczną konfiguracje maszyn wirtualnych (w sposób jednolity)
  3. Pozwala na synchronizacje zmian konfiguracyjnych i ciągłe wdrażanie ulepszeń on demand

Wyobrażcie sobie, że chcemy dodać wielu różnych użytkowników do domeny naszego serwera. Również możemy zrobić to za pośrednictwem skryptu DSC.

Możemy tworzyć foldery oraz pliki przy użyciu DSC. Możemy również zapewnić ciągły deployment dla naszych stron WWW, które automatycznie będą przenoszone przez DSC do folderu wwwroot serwera IIS.

Configuration IISAndDeploy {
	Node 'localhost' {
			# add Windows server feature
			WindowsFeature WebServer{
				Ensure = "Present"
				Name = "Web-Server"
			}
			# add Windows server management tools
			WindowsFeature WebServerTools {
				Ensure = "Present"
				Name   = "Web-Mgmt-Tools"
			}
			
			#move index.html file to wwwroot of IIS
			File WebsiteContent {
				Type = 'File'
				Ensure = 'Present'
				SourcePath = 'c:\tmp\index.htm'
				DestinationPath = 'c:\inetpub\wwwroot'
			}
		}

}

Poniższy skrypt pozwala nam na skopiowanie pliku index.html z lokalizacji źródłowej do lokalizacji inetpub\wwwroot gdzie strona zostanie automatycznie hostowana na lokalnym serwerze IIS.  Tak na prawde można tutaj czarować i tworzyć różnego rodzaju konfiguracje, które pozwolą nam na setupowanie wielu maszyn jednocześnie automatycznie i ciągle. Temat rzeka ale mam nadzieje, że Was tym zainteresowałem i zaczniecie eksperymentować samemu 🙂



Więcej w Cloud, Microsoft Azure, Powershell
Spacer w chmurach czyli Microsoft Azure dla świeżaków. Automatyzacja zadań oraz prosty RUNBOOK cz.4

Witajcie. Dzisiaj kontynuujemy nasz kurs Microsoft Azure. Tym razem jak już umiemy instalować i łączyć się z naszymi maszynami wirtualnymi,...

Zamknij